3cdc3c1ad50cbcf814628b1ed7a86619e8d1b05f
[fa-stable.git] / includes / ui / contacts_view.inc
1 <?php
2 /**********************************************************************
3     Copyright (C) FrontAccounting, LLC.
4         Released under the terms of the GNU General Public License, GPL, 
5         as published by the Free Software Foundation, either version 3 
6         of the License, or (at your option) any later version.
7     This program is distributed in the hope that it will be useful,
8     but WITHOUT ANY WARRANTY; without even the implied warranty of
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
10     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ***********************************************************************/
12 include_once($path_to_root. '/includes/ui/simple_crud_class.inc');
13 include_once($path_to_root . "/includes/db/crm_contacts_db.inc");
14
15 /*
16         View/Edit class for contacts
17 */
18 class contacts extends simple_crud {
19         var $id;
20         var $entity;
21         var $sub_class;
22         var $class;
23         
24         function contacts($name, $id, $class, $subclass=null) {
25                 $fields = array('ref','name','name2','address', 'phone', 'phone2','fax',
26                         'email','lang','notes', 'assgn' =>array('fld'=>'contacts'));
27
28                 $this->simple_crud($name, $fields);
29                 $this->class = $class;
30                 $this->subclass = $subclass;
31                 $this->entity = $id;
32         }
33
34         function list_view() {
35                 br();
36
37                         $contacts = get_crm_persons($this->class, $this->subclass, $this->entity);
38 //                              check_value('show_inactive'));
39                         start_table(TABLESTYLE, "width=80%");
40
41                         $th = array(_('Assignment'), _("Reference"), _("Full Name"), _("Phone"), _("Sec Phone"), _("Fax"),
42                                 _("email"),  '',
43                                 "&nbsp;");
44                 //      inactive_control_column($th);
45
46                         table_header($th);
47                         $k = 0; 
48
49                         $last = $myrow = db_fetch($contacts);
50                         while ($last)
51                         {
52                                         
53                                 if ($myrow['id'] != $last['id']) {
54                                         alt_table_row_color($k);
55                                         label_cell(implode('<br>',$description));
56                                         label_cell($last["ref"]);
57                                         label_cell($last["name"].' '.$last["name2"]);
58                                         label_cell($last["phone"]);
59                                         label_cell($last["phone2"]);
60                                         label_cell($last["fax"]);
61                                         email_cell($last["email"]);
62                 //      inactive_control_cell($myrow["id"], $myrow["inactive"], 'crm_contacts', 'id');
63
64                                         edit_button_cell("{$this->name}Edit[{$last['id']}]", _("Edit"));
65
66                         // delete button removes only category unless this is the last contact for this person
67                                         delete_button_cell("{$this->name}Delete[{$last['id']}]", _("Delete"));
68                                         end_row();
69                                         $description = array();
70                                         $last = $myrow;
71                                 }
72
73                                 if ($myrow) {
74                                         $description[] = $myrow['description'];
75                                         $myrow = db_fetch($contacts);
76                                 }
77                         }
78
79 //inactive_control_row($th);
80                         end_table(1);
81         }
82         
83         function editor_view()
84         {
85                 br();
86
87                 start_outer_table(TABLESTYLE);
88
89                 table_section(1);
90                 table_section_title(_("Contact data"));
91
92                 text_row(_("First Name:"), 'name', @$this->data['name'], 35, 40);
93                 text_row(_("Last Name:"), 'name2', @$this->data['name2'], 35, 40);
94                 text_row(_("Reference:"), 'ref', @$this->data['ref'], 35, 40);
95
96                 crm_category_types_list_row(_("Contact active for:"), 'assgn', @$this->data['contacts'],
97                         array('subclass' => @$this->subclass,
98                                 'class' => @$this->class, 
99                                 'multi' =>true)
100                                 );
101
102                 text_row(_("Phone:"), 'phone', @$this->data['phone'], 32, 30);
103                 text_row(_("Secondary Phone Number:"), 'phone2', @$this->data['phone2'], 32, 30);
104                 text_row(_("Fax Number:"), 'fax', @$this->data['fax'], 32, 30);
105                 email_row(_("E-mail:"), 'email', @$this->data['email'], 35, 55);
106
107                 table_section(2);
108                 table_section_title("&nbsp;");
109                 textarea_row(_("Address:"), 'address', @$this->data['address'], 30, 4);
110                 languages_list_row( _("Document Language:"), 'lang', @$this->data['lang'], _("Customer default"));
111
112                 textarea_row(_("Notes:"), 'notes', @$this->data['notes'], 30, 4);
113                 end_outer_table(1);
114         }
115
116         function db_insert() {
117                         $dat = $this->data;
118                         return add_crm_person($dat['ref'], $dat['name'], $dat['name2'], $dat['address'],
119                                 $dat['phone'], $dat['phone2'], $dat['fax'], $dat['email'], $dat['lang'],
120                                 $dat['notes'], $dat['contacts'], $this->entity);
121         }
122
123         function db_update() {
124                         return update_crm_person($this->selected_id, $_POST['ref'], $_POST['name'], $_POST['name2'], 
125                                 $_POST['address'], $_POST['phone'], $_POST['phone2'], $_POST['fax'], $_POST['email'], 
126                                 $_POST['lang'], $_POST['notes'], $_POST['assgn'], $this->entity, $this->class);
127         }
128
129         function insert_check() {
130                 if (strlen($_POST['name']) == 0) {
131                         display_error(_("The contact name cannot be empty."));
132                         set_focus('name');
133                         return false;
134                 }
135                 if (strlen($_POST['ref']) == 0) {
136                         display_error(_("Contact reference cannot be empty."));
137                         set_focus('ref');
138                         return false;
139                 }
140                 if (count(@$_POST['assgn']) == 0) {
141                         display_error(_("You have to select at least one category."));
142                         set_focus('assgn');
143                         return false;
144                 }
145                 return true; 
146         }
147
148         function db_read() {
149                 return get_crm_person($this->selected_id);
150         }
151
152         function delete_check() {
153                 return true;
154         }
155         //
156         //      Delete all contacts for person in current class/entity
157         //
158         function db_delete() {
159                 if (delete_crm_contacts($this->selected_id, $this->class, $this->entity)) {
160                         // if this is the last relation - delete contact data
161                         $rels = get_person_contacts($this->selected_id);
162                         if (count($rels)==0) {
163                                 return delete_crm_person($this->selected_id);
164                         }
165                 }
166                 return false;
167         }
168 }
169
170 ?>