50 $this->module_position =
'42';
52 $this->
name = preg_replace(
'/^mod/i',
'', get_class($this));
54 $this->
description =
"Manage and claim expense reports (transportation, meal, ...)";
55 $this->version =
'dolibarr';
56 $this->const_name =
'MAIN_MODULE_'.strtoupper($this->
name);
57 $this->picto =
'trip';
60 $this->dirs = array(
"/expensereport/temp");
64 $this->config_page_url = array(
'expensereport.php');
67 $this->hidden =
false;
68 $this->depends = array();
70 $this->requiredby = array();
71 $this->phpmin = array(7, 0);
72 $this->need_dolibarr_version = array(3, 7);
73 $this->langfiles = array(
"companies",
"trips");
76 $this->
const = array();
79 $this->
const[$r][0] =
"EXPENSEREPORT_ADDON_PDF";
80 $this->
const[$r][1] =
"chaine";
81 $this->
const[$r][2] =
"standard";
82 $this->
const[$r][3] =
'Name of manager to build PDF expense reports documents';
83 $this->
const[$r][4] = 0;
86 $this->
const[$r][0] =
"EXPENSEREPORT_ADDON";
87 $this->
const[$r][1] =
"chaine";
88 $this->
const[$r][2] =
"mod_expensereport_jade";
89 $this->
const[$r][3] =
'Name of manager to generate expense report ref number';
90 $this->
const[$r][4] = 0;
93 $this->
const[$r][0] =
"MAIN_DELAY_EXPENSEREPORTS";
94 $this->
const[$r][1] =
"chaine";
95 $this->
const[$r][2] =
"15";
96 $this->
const[$r][3] =
'Tolerance delay (in days) before alert for expense reports to approve';
97 $this->
const[$r][4] = 0;
100 $this->
const[$r][0] =
"MAIN_DELAY_EXPENSEREPORTS_TO_PAY";
101 $this->
const[$r][1] =
"chaine";
102 $this->
const[$r][2] =
"15";
103 $this->
const[$r][3] =
'Tolerance delay (in days) before alert for expense reports to pay';
104 $this->
const[$r][4] = 0;
108 $this->tabs[] = array();
111 $this->boxes = array();
115 $this->rights = array();
116 $this->rights_class =
'expensereport';
118 $this->rights[$r][0] = 771;
119 $this->rights[$r][1] =
'Read expense reports (yours and your subordinates)';
120 $this->rights[$r][2] =
'r';
121 $this->rights[$r][3] = 0;
122 $this->rights[$r][4] =
'lire';
125 $this->rights[$r][0] = 772;
126 $this->rights[$r][1] =
'Create/modify expense reports';
127 $this->rights[$r][2] =
'w';
128 $this->rights[$r][3] = 0;
129 $this->rights[$r][4] =
'creer';
132 $this->rights[$r][0] = 773;
133 $this->rights[$r][1] =
'Delete expense reports';
134 $this->rights[$r][2] =
'd';
135 $this->rights[$r][3] = 0;
136 $this->rights[$r][4] =
'supprimer';
139 $this->rights[$r][0] = 775;
140 $this->rights[$r][1] =
'Approve expense reports';
141 $this->rights[$r][2] =
'w';
142 $this->rights[$r][3] = 0;
143 $this->rights[$r][4] =
'approve';
146 $this->rights[$r][0] = 776;
147 $this->rights[$r][1] =
'Pay expense reports';
148 $this->rights[$r][2] =
'w';
149 $this->rights[$r][3] = 0;
150 $this->rights[$r][4] =
'to_paid';
153 $this->rights[$r][0] = 777;
154 $this->rights[$r][1] =
'Read expense reports of everybody';
155 $this->rights[$r][2] =
'r';
156 $this->rights[$r][3] = 0;
157 $this->rights[$r][4] =
'readall';
160 $this->rights[$r][0] = 778;
161 $this->rights[$r][1] =
'Create expense reports for everybody';
162 $this->rights[$r][2] =
'w';
163 $this->rights[$r][3] = 0;
164 $this->rights[$r][4] =
'writeall_advance';
167 $this->rights[$r][0] = 779;
168 $this->rights[$r][1] =
'Export expense reports';
169 $this->rights[$r][2] =
'r';
170 $this->rights[$r][3] = 0;
171 $this->rights[$r][4] =
'export';
182 $this->export_code[$r] =
'expensereport_'.$r;
183 $this->export_label[$r] =
'ListTripsAndExpenses';
184 $this->export_icon[$r] =
'trip';
185 $this->export_permission[$r] = array(array(
"expensereport",
"export"));
186 $this->export_fields_array[$r] = array(
187 'd.rowid' =>
"TripId",
'd.ref' =>
'Ref',
'd.date_debut' =>
'DateStart',
'd.date_fin' =>
'DateEnd',
'd.date_create' =>
'DateCreation',
'd.date_approve' =>
'DateApprove',
188 'd.total_ht' =>
"TotalHT",
'd.total_tva' =>
'TotalVAT',
'd.total_ttc' =>
'TotalTTC',
189 'd.fk_statut' =>
'Status',
'd.paid' =>
'Paid',
190 'd.note_private' =>
'NotePrivate',
'd.note_public' =>
'NotePublic',
'd.detail_cancel' =>
'MOTIF_CANCEL',
'd.detail_refuse' =>
'MOTIF_REFUS',
191 'ed.rowid' =>
'LineId',
'tf.code' =>
'Type',
'ed.date' =>
'Date',
'ed.tva_tx' =>
'VATRate',
192 'ed.qty' =>
"Quantity",
'ed.value_unit' =>
"UnitPriceHT",
193 'ed.total_ht' =>
'TotalHT',
'ed.total_tva' =>
'TotalVAT',
'ed.total_ttc' =>
'TotalTTC',
'ed.comments' =>
'Comment',
'p.rowid' =>
'ProjectId',
'p.ref' =>
'Ref',
194 'u.lastname' =>
'Lastname',
'u.firstname' =>
'Firstname',
'u.login' =>
"Login",
195 'user_rib.iban_prefix' =>
'IBAN',
'user_rib.bic' =>
'BIC',
'user_rib.code_banque' =>
'BankCode',
'user_rib.bank' =>
'BankName',
'user_rib.proprio' =>
'BankAccountOwner',
196 'user_rib.owner_address' =>
'BankAccountOwnerAddress'
198 $this->export_TypeFields_array[$r] = array(
199 'd.rowid' =>
'Numeric',
'd.ref' =>
'Text',
'd.date_debut' =>
'Date',
'd.date_fin' =>
'Date',
'd.date_create' =>
'Date',
'd.date_approve' =>
'Date',
200 'd.total_ht' =>
"Numeric",
'd.total_tva' =>
'Numeric',
'd.total_ttc' =>
'Numeric',
201 'd.fk_statut' =>
"Numeric",
'd.paid' =>
'Numeric',
202 'd.note_private' =>
'Text',
'd.note_public' =>
'Text',
'd.detail_cancel' =>
'Text',
'd.detail_refuse' =>
'Text',
203 'ed.rowid' =>
'Numeric',
'tf.code' =>
'Code',
'ed.date' =>
'Date',
'ed.tva_tx' =>
'Numeric',
204 'ed.qty' =>
'Numeric',
'ed.value_unit' =>
'Numeric',
205 'ed.total_ht' =>
'Numeric',
'ed.total_tva' =>
'Numeric',
'ed.total_ttc' =>
'Numeric',
'ed.comments' =>
'Text',
'p.rowid' =>
'Numeric',
'p.ref' =>
'Text',
206 'u.lastname' =>
'Text',
'u.firstname' =>
'Text',
'u.login' =>
"Text",
207 'user_rib.iban_prefix' =>
'Text',
'user_rib.bic' =>
'Text',
'user_rib.code_banque' =>
'Text',
'user_rib.bank' =>
'Text',
'user_rib.proprio' =>
'Text',
208 'user_rib.owner_address' =>
'Text'
210 $this->export_entities_array[$r] = array(
211 'ed.rowid' =>
'expensereport_line',
'ed.date' =>
'expensereport_line',
212 'ed.qty' =>
'expensereport_line',
'ed.value_unit' =>
'expensereport_line',
213 'ed.tva_tx' =>
'expensereport_line',
'ed.total_ht' =>
'expensereport_line',
'ed.total_tva' =>
'expensereport_line',
'ed.total_ttc' =>
'expensereport_line',
214 'ed.comments' =>
'expensereport_line',
'tf.code' =>
'expensereport_line',
'p.project_ref' =>
'expensereport_line',
'p.rowid' =>
'project',
'p.ref' =>
'project',
215 'u.lastname' =>
'user',
'u.firstname' =>
'user',
'u.login' =>
'user',
216 'user_rib.iban_prefix' =>
'user',
'user_rib.bic' =>
'user',
'user_rib.code_banque' =>
'user',
'user_rib.bank' =>
'user',
'user_rib.proprio' =>
'user',
217 'user_rib.owner_address' =>
'user'
221 $this->export_dependencies_array[$r] = array(
'expensereport_line' =>
'ed.rowid',
'type_fees' =>
'tf.rowid');
223 $keyforselect =
'expensereport';
224 $keyforelement =
'expensereport';
225 $keyforaliasextra =
'extra';
226 include DOL_DOCUMENT_ROOT.
'/core/extrafieldsinexport.inc.php';
227 $keyforselect =
'user';
228 $keyforelement =
'user';
229 $keyforaliasextra =
'extrau';
230 include DOL_DOCUMENT_ROOT.
'/core/extrafieldsinexport.inc.php';
232 $this->export_sql_start[$r] =
'SELECT DISTINCT ';
233 $this->export_sql_end[$r] =
' FROM '.MAIN_DB_PREFIX.
'expensereport as d';
234 $this->export_sql_end[$r] .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'expensereport_extrafields as extra on d.rowid = extra.fk_object';
235 $this->export_sql_end[$r] .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'user_rib as user_rib ON user_rib.fk_user = d.fk_user_author,';
236 $this->export_sql_end[$r] .=
' '.MAIN_DB_PREFIX.
'user as u';
237 $this->export_sql_end[$r] .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'user_extrafields as extrau ON u.rowid = extrau.fk_object,';
238 $this->export_sql_end[$r] .=
' '.MAIN_DB_PREFIX.
'expensereport_det as ed LEFT JOIN '.MAIN_DB_PREFIX.
'c_type_fees as tf ON ed.fk_c_type_fees = tf.id';
239 $this->export_sql_end[$r] .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'projet as p ON ed.fk_projet = p.rowid';
240 $this->export_sql_end[$r] .=
' WHERE ed.fk_expensereport = d.rowid AND d.fk_user_author = u.rowid';
241 $this->export_sql_end[$r] .=
' AND d.entity IN ('.getEntity(
'expensereport').
')';