49 $this->family =
"crm";
50 $this->module_position =
'41';
52 $this->
name = preg_replace(
'/^mod/i',
'', get_class($this));
53 $this->
description =
"Gestion des contrats de services";
56 $this->version =
'dolibarr';
58 $this->const_name =
'MAIN_MODULE_'.strtoupper($this->
name);
59 $this->picto =
'contract';
62 $this->dirs = array(
"/contract/temp");
65 $this->depends = array(
"modSociete");
66 $this->requiredby = array();
69 $this->config_page_url = array(
"contract.php");
72 $this->
const = array();
75 $this->
const[$r][0] =
"CONTRACT_ADDON";
76 $this->
const[$r][1] =
"chaine";
77 $this->
const[$r][2] =
"mod_contract_serpis";
78 $this->
const[$r][3] =
'Nom du gestionnaire de numerotation des contrats';
79 $this->
const[$r][4] = 0;
82 $this->
const[$r][0] =
"CONTRACT_ADDON_PDF";
83 $this->
const[$r][1] =
"chaine";
84 $this->
const[$r][2] =
"strato";
85 $this->
const[$r][3] =
'Name of PDF model of contract';
86 $this->
const[$r][4] = 0;
89 $this->
const[$r][0] =
"CONTRACT_ADDON_PDF_ODT_PATH";
90 $this->
const[$r][1] =
"chaine";
91 $this->
const[$r][2] =
"DOL_DATA_ROOT/doctemplates/contracts";
92 $this->
const[$r][3] =
"";
93 $this->
const[$r][4] = 0;
98 0=>array(
'file'=>
'box_contracts.php',
'enabledbydefaulton'=>
'Home'),
99 1=>array(
'file'=>
'box_services_expired.php',
'enabledbydefaulton'=>
'Home')
103 $this->rights = array();
104 $this->rights_class =
'contrat';
108 $this->rights[$r][0] = 161;
109 $this->rights[$r][1] =
'Lire les contrats';
110 $this->rights[$r][2] =
'r';
111 $this->rights[$r][3] = 0;
112 $this->rights[$r][4] =
'lire';
115 $this->rights[$r][0] = 162;
116 $this->rights[$r][1] =
'Creer / modifier les contrats';
117 $this->rights[$r][2] =
'w';
118 $this->rights[$r][3] = 0;
119 $this->rights[$r][4] =
'creer';
122 $this->rights[$r][0] = 163;
123 $this->rights[$r][1] =
'Activer un service d\'un contrat';
124 $this->rights[$r][2] =
'w';
125 $this->rights[$r][3] = 0;
126 $this->rights[$r][4] =
'activer';
129 $this->rights[$r][0] = 164;
130 $this->rights[$r][1] =
'Desactiver un service d\'un contrat';
131 $this->rights[$r][2] =
'w';
132 $this->rights[$r][3] = 0;
133 $this->rights[$r][4] =
'desactiver';
136 $this->rights[$r][0] = 165;
137 $this->rights[$r][1] =
'Supprimer un contrat';
138 $this->rights[$r][2] =
'd';
139 $this->rights[$r][3] = 0;
140 $this->rights[$r][4] =
'supprimer';
143 $this->rights[$r][0] = 167;
144 $this->rights[$r][1] =
'Export contracts';
145 $this->rights[$r][2] =
'r';
146 $this->rights[$r][3] = 0;
147 $this->rights[$r][4] =
'export';
157 $langs->load(
"contracts");
161 $this->export_code[$r] = $this->rights_class.
'_'.$r;
162 $this->export_label[$r] =
'ContractsAndLine';
163 $this->export_icon[$r] =
'contract';
164 $this->export_permission[$r] = array(array(
"contrat",
"export"));
165 $this->export_fields_array[$r] = array(
's.rowid'=>
"IdCompany",
's.nom'=>
'CompanyName',
's.address'=>
'Address',
's.zip'=>
'Zip',
's.town'=>
'Town',
'c.code'=>
'CountryCode',
166 's.email'=>
'Email',
's.phone'=>
'Phone',
's.siren'=>
'ProfId1',
's.siret'=>
'ProfId2',
's.ape'=>
'ProfId3',
's.idprof4'=>
'ProfId4',
's.code_compta'=>
'CustomerAccountancyCode',
167 's.code_compta_fournisseur'=>
'SupplierAccountancyCode',
's.tva_intra'=>
'VATIntra',
168 'co.rowid'=>
"Id",
'co.ref'=>
"Ref",
'co.datec'=>
"DateCreation",
'co.date_contrat'=>
"DateContract",
169 'co.fin_validite'=>
"ContractEndDate",
'co.date_cloture'=>
"DateClosing",
'co.note_private'=>
"NotePrivate",
'co.note_public'=>
"NotePublic",
170 'cod.rowid'=>
'LineId',
'cod.label'=>
"LineLabel",
'cod.description'=>
"LineDescription",
'cod.price_ht'=>
"LineUnitPrice",
'cod.tva_tx'=>
"LineVATRate",
171 'cod.qty'=>
"LineQty",
'cod.total_ht'=>
"LineTotalHT",
'cod.total_tva'=>
"LineTotalVAT",
'cod.total_ttc'=>
"LineTotalTTC",
172 'cod.date_ouverture'=>
"DateStart",
'cod.date_ouverture_prevue'=>
"DateStartPlanned",
'cod.date_fin_validite'=>
"DateEndPlanned",
'cod.date_cloture'=>
"DateEnd",
173 'p.rowid'=>
'ProductId',
'p.ref'=>
'ProductRef',
'p.label'=>
'ProductLabel');
175 $this->export_entities_array[$r] = array(
's.rowid'=>
"company",
's.nom'=>
'company',
's.address'=>
'company',
's.zip'=>
'company',
176 's.town'=>
'company',
'c.code'=>
'company',
's.email'=>
'company',
's.phone'=>
'company',
's.siren'=>
'company',
's.siret'=>
'company',
's.ape'=>
'company',
177 's.idprof4'=>
'company',
's.code_compta'=>
'company',
's.code_compta_fournisseur'=>
'company',
's.tva_intra'=>
'company',
178 'co.rowid'=>
"contract",
'co.ref'=>
"contract",
'co.datec'=>
"contract",
'co.date_contrat'=>
"contract",
179 'co.fin_validite'=>
"contract",
'co.date_cloture'=>
"contract",
'co.note_private'=>
"contract",
'co.note_public'=>
"contract",
180 'cod.rowid'=>
'contract_line',
'cod.label'=>
"contract_line",
'cod.description'=>
"contract_line",
'cod.price_ht'=>
"contract_line",
'cod.tva_tx'=>
"contract_line",
181 'cod.qty'=>
"contract_line",
'cod.total_ht'=>
"contract_line",
'cod.total_tva'=>
"contract_line",
'cod.total_ttc'=>
"contract_line",
182 'cod.date_ouverture'=>
"contract_line",
'cod.date_ouverture_prevue'=>
"contract_line",
'cod.date_fin_validite'=>
"contract_line",
'cod.date_cloture'=>
"contract_line",
183 'p.rowid'=>
'product',
'p.ref'=>
'product',
'p.label'=>
'product');
185 $this->export_TypeFields_array[$r] = array(
's.rowid'=>
"Numeric",
's.nom'=>
'Text',
's.address'=>
'Text',
's.zip'=>
'Text',
's.town'=>
'Text',
'c.code'=>
'Text',
186 's.email'=>
'Text',
's.phone'=>
'Text',
's.siren'=>
'Text',
's.siret'=>
'Text',
's.ape'=>
'Text',
's.idprof4'=>
'Text',
's.code_compta'=>
'Text',
187 's.code_compta_fournisseur'=>
'Text',
's.tva_intra'=>
'Text',
188 'co.ref'=>
"Text",
'co.datec'=>
"Date",
'co.date_contrat'=>
"Date",
189 'co.fin_validite'=>
"Date",
'co.date_cloture'=>
"Date",
'co.note_private'=>
"Text",
'co.note_public'=>
"Text",
190 'cod.label'=>
"Text",
'cod.description'=>
"Text",
'cod.price_ht'=>
"Numeric",
'cod.tva_tx'=>
"Numeric",
191 'cod.qty'=>
"Numeric",
'cod.total_ht'=>
"Numeric",
'cod.total_tva'=>
"Numeric",
'cod.total_ttc'=>
"Numeric",
192 'cod.date_ouverture'=>
"Date",
'cod.date_ouverture_prevue'=>
"Date",
'cod.date_fin_validite'=>
"Date",
'cod.date_cloture'=>
"Date",
193 'p.rowid'=>
'List:product:label',
'p.ref'=>
'Text',
'p.label'=>
'Text');
196 $keyforselect =
'contrat';
197 $keyforelement =
'contract';
198 $keyforaliasextra =
'coextra';
199 include DOL_DOCUMENT_ROOT.
'/core/extrafieldsinexport.inc.php';
200 $keyforselect =
'contratdet';
201 $keyforelement =
'contract_line';
202 $keyforaliasextra =
'codextra';
203 include DOL_DOCUMENT_ROOT.
'/core/extrafieldsinexport.inc.php';
205 $this->export_sql_start[$r] =
'SELECT DISTINCT ';
206 $this->export_sql_end[$r] =
' FROM '.MAIN_DB_PREFIX.
'societe as s';
207 $this->export_sql_end[$r] .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'c_country as c on s.fk_pays = c.rowid';
208 $this->export_sql_end[$r] .=
' INNER JOIN '.MAIN_DB_PREFIX.
'contrat as co ON co.fk_soc = s.rowid';
209 $this->export_sql_end[$r] .=
' INNER JOIN '.MAIN_DB_PREFIX.
'contratdet as cod ON co.rowid = cod.fk_contrat';
210 $this->export_sql_end[$r] .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'product as p ON (cod.fk_product = p.rowid)';
211 $this->export_sql_end[$r] .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'contrat_extrafields as coextra on (co.rowid = coextra.fk_object)';
212 $this->export_sql_end[$r] .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'contratdet_extrafields as codextra on (cod.rowid = codextra.fk_object)';
213 $this->export_sql_end[$r] .=
' WHERE co.entity IN ('.getEntity(
'contract').
')';
225 public function init($options =
'')
227 global
$conf, $langs;
230 $this->
remove($options);
233 $src = DOL_DOCUMENT_ROOT.
'/install/doctemplates/contracts/template_contract.odt';
234 $dirodt = DOL_DATA_ROOT.
'/doctemplates/contracts';
235 $dest = $dirodt.
'/template_contract.odt';
237 if (file_exists($src) && !file_exists($dest)) {
238 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
240 $result =
dol_copy($src, $dest,
'0', 0);
242 $langs->load(
"errors");
243 $this->error = $langs->trans(
'ErrorFailToCopyFile', $src, $dest);
249 "DELETE FROM ".MAIN_DB_PREFIX.
"document_model WHERE nom = '".$this->db->escape($this->const[1][2]).
"' AND type = 'contract' AND entity = ".((
int)
$conf->entity),
250 "INSERT INTO ".MAIN_DB_PREFIX.
"document_model (nom, type, entity) VALUES('".$this->db->escape($this->const[1][2]).
"', 'contract', ".((
int)
$conf->entity).
")"
253 return $this->
_init($sql, $options);