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