From bd542b6b22c3a734348bcfdccf07fadcb873ec99 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Mon, 18 Mar 2019 16:39:59 +0100 Subject: [PATCH 01/29] allow empty value for payment conditions like in orders --- htdocs/comm/propal/card.php | 2 +- htdocs/compta/facture/card.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php index 9a296def86b..4f49dd90e58 100644 --- a/htdocs/comm/propal/card.php +++ b/htdocs/comm/propal/card.php @@ -1624,7 +1624,7 @@ if ($action == 'create') // Terms of payment print '' . $langs->trans('PaymentConditionsShort') . ''; - $form->select_conditions_paiements($soc->cond_reglement_id, 'cond_reglement_id'); + $form->select_conditions_paiements($soc->cond_reglement_id, 'cond_reglement_id', -1, 1); print ''; // Mode of payment diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index daf090483c3..7655298b1b6 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -3071,7 +3071,7 @@ if ($action == 'create') // Payment term print '' . $langs->trans('PaymentConditionsShort') . ''; - $form->select_conditions_paiements(isset($_POST['cond_reglement_id']) ? $_POST['cond_reglement_id'] : $cond_reglement_id, 'cond_reglement_id'); + $form->select_conditions_paiements(isset($_POST['cond_reglement_id']) ? $_POST['cond_reglement_id'] : $cond_reglement_id, 'cond_reglement_id', -1, 1); print ''; // Payment mode From 7bfa49b29c1fff694595224ef83410dbbdcb3607 Mon Sep 17 00:00:00 2001 From: Ion Date: Sun, 24 Mar 2019 14:30:00 +0100 Subject: [PATCH 02/29] FIX: Disallow line start date > end date --- ChangeLog | 1 + htdocs/comm/propal/class/propal.class.php | 14 +++++++++++++- htdocs/commande/class/commande.class.php | 15 ++++++++++++++- htdocs/compta/facture/class/facture.class.php | 12 ++++++++++++ htdocs/contrat/class/contrat.class.php | 17 +++++++++++++++-- .../fourn/class/fournisseur.commande.class.php | 16 +++++++++++++--- .../fourn/class/fournisseur.facture.class.php | 14 +++++++++++++- 7 files changed, 81 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 57714680554..18f9fbe2dcb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,7 @@ For Users: NEW: Module Ticket is available as a stable module. NEW: Experimental module "Vendor receptions". NEW: Experimental module "BOM". +FIX: Disallow line start date to be after end date For Developers: NEW: Module DebugBar is available as a stable module. diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index d585d7c9ab9..388433222e0 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -473,6 +473,12 @@ class Propal extends CommonObject // Check parameters if ($type < 0) return -1; + + if ($date_start && $date_end && $date_start > $date_end) { + $langs->load("errors"); + $this->error=$langs->trans('ErrorStartDateGreaterEnd'); + return -1; + } $this->db->begin(); @@ -666,7 +672,7 @@ class Propal extends CommonObject */ public function updateline($rowid, $pu, $qty, $remise_percent, $txtva, $txlocaltax1 = 0.0, $txlocaltax2 = 0.0, $desc = '', $price_base_type = 'HT', $info_bits = 0, $special_code = 0, $fk_parent_line = 0, $skip_update_total = 0, $fk_fournprice = 0, $pa_ht = 0, $label = '', $type = 0, $date_start = '', $date_end = '', $array_options = 0, $fk_unit = null, $pu_ht_devise = 0, $notrigger = 0) { - global $mysoc; + global $mysoc, $langs; dol_syslog(get_class($this)."::updateLine rowid=$rowid, pu=$pu, qty=$qty, remise_percent=$remise_percent, txtva=$txtva, desc=$desc, price_base_type=$price_base_type, info_bits=$info_bits, special_code=$special_code, fk_parent_line=$fk_parent_line, pa_ht=$pa_ht, type=$type, date_start=$date_start, date_end=$date_end"); @@ -684,6 +690,12 @@ class Propal extends CommonObject if (empty($qty) && empty($special_code)) $special_code=3; // Set option tag if (! empty($qty) && $special_code == 3) $special_code=0; // Remove option tag if (empty($type)) $type=0; + + if ($date_start && $date_end && $date_start > $date_end) { + $langs->load("errors"); + $this->error=$langs->trans('ErrorStartDateGreaterEnd'); + return -1; + } if ($this->statut == self::STATUS_DRAFT) { diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 70c5b2d45f0..07b7a907150 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -1367,6 +1367,12 @@ class Commande extends CommonOrder // Check parameters if ($type < 0) return -1; + + if ($date_start && $date_end && $date_start > $date_end) { + $langs->load("errors"); + $this->error=$langs->trans('ErrorStartDateGreaterEnd'); + return -1; + } $this->db->begin(); @@ -2932,7 +2938,6 @@ class Commande extends CommonOrder if ($this->statut == Propal::STATUS_DRAFT) { - $this->db->begin(); // Clean parameters if (empty($qty)) $qty=0; @@ -2942,6 +2947,12 @@ class Commande extends CommonOrder if (empty($txlocaltax2)) $txlocaltax2=0; if (empty($remise_percent)) $remise_percent=0; if (empty($special_code) || $special_code == 3) $special_code=0; + + if ($date_start && $date_end && $date_start > $date_end) { + $langs->load("errors"); + $this->error=$langs->trans('ErrorStartDateGreaterEnd'); + return -1; + } $remise_percent=price2num($remise_percent); $qty=price2num($qty); @@ -2951,6 +2962,8 @@ class Commande extends CommonOrder $txtva=price2num($txtva); $txlocaltax1=price2num($txlocaltax1); $txlocaltax2=price2num($txlocaltax2); + + $this->db->begin(); // Calcul du total TTC et de la TVA pour la ligne a partir de // qty, pu, remise_percent et txtva diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 8bf86599eb4..15d985db6bf 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -2720,6 +2720,12 @@ class Facture extends CommonInvoice // Check parameters if ($type < 0) return -1; + + if ($date_start && $date_end && $date_start > $date_end) { + $langs->load("errors"); + $this->error=$langs->trans('ErrorStartDateGreaterEnd'); + return -1; + } $this->db->begin(); @@ -2923,6 +2929,12 @@ class Facture extends CommonInvoice return -3; } } + + if ($date_start && $date_end && $date_start > $date_end) { + $langs->load("errors"); + $this->error=$langs->trans('ErrorStartDateGreaterEnd'); + return -1; + } $this->db->begin(); diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index f89ad5e7307..79fc66dfce8 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -1374,7 +1374,6 @@ class Contrat extends CommonObject if ($this->statut >= 0) { - $this->db->begin(); // Clean parameters $pu_ht=price2num($pu_ht); @@ -1394,7 +1393,7 @@ class Contrat extends CommonObject if (empty($txtva) || ! is_numeric($txtva)) $txtva=0; if (empty($txlocaltax1) || ! is_numeric($txlocaltax1)) $txlocaltax1=0; if (empty($txlocaltax2) || ! is_numeric($txlocaltax2)) $txlocaltax2=0; - + if ($price_base_type=='HT') { $pu=$pu_ht; @@ -1406,6 +1405,14 @@ class Contrat extends CommonObject // Check parameters if (empty($remise_percent)) $remise_percent=0; + + if ($date_start && $date_end && $date_start > $date_end) { + $langs->load("errors"); + $this->error=$langs->trans('ErrorStartDateGreaterEnd'); + return -1; + } + + $this->db->begin(); $localtaxes_type=getLocalTaxesFromRate($txtva, 0, $this->societe, $mysoc); @@ -1596,6 +1603,12 @@ class Contrat extends CommonObject { $remise_percent=0; } + + if ($date_start && $date_end && $date_start > $date_end) { + $langs->load("errors"); + $this->error=$langs->trans('ErrorStartDateGreaterEnd'); + return -1; + } dol_syslog(get_class($this)."::updateline $rowid, $desc, $pu, $qty, $remise_percent, $date_start, $date_end, $date_debut_reel, $date_fin_reel, $tvatx, $localtax1tx, $localtax2tx, $price_base_type, $info_bits"); diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 5f7789e72f5..3573484f7c7 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -1543,6 +1543,11 @@ class CommandeFournisseur extends CommonOrder return -1; } if ($type < 0) return -1; + if ($date_start && $date_end && $date_start > $date_end) { + $langs->load("errors"); + $this->error=$langs->trans('ErrorStartDateGreaterEnd'); + return -1; + } $this->db->begin(); @@ -2470,7 +2475,7 @@ class CommandeFournisseur extends CommonOrder */ public function updateline($rowid, $desc, $pu, $qty, $remise_percent, $txtva, $txlocaltax1 = 0, $txlocaltax2 = 0, $price_base_type = 'HT', $info_bits = 0, $type = 0, $notrigger = 0, $date_start = '', $date_end = '', $array_options = 0, $fk_unit = null, $pu_ht_devise = 0, $ref_supplier = '') { - global $mysoc, $conf; + global $mysoc, $conf, $langs; dol_syslog(get_class($this)."::updateline $rowid, $desc, $pu, $qty, $remise_percent, $txtva, $price_base_type, $info_bits, $type, $fk_unit"); include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php'; @@ -2478,8 +2483,6 @@ class CommandeFournisseur extends CommonOrder if ($this->brouillon) { - $this->db->begin(); - // Clean parameters if (empty($qty)) $qty=0; if (empty($info_bits)) $info_bits=0; @@ -2500,6 +2503,13 @@ class CommandeFournisseur extends CommonOrder // Check parameters if ($type < 0) return -1; + if ($date_start && $date_end && $date_start > $date_end) { + $langs->load("errors"); + $this->error=$langs->trans('ErrorStartDateGreaterEnd'); + return -1; + } + + $this->db->begin(); // Calcul du total TTC et de la TVA pour la ligne a partir de // qty, pu, remise_percent et txtva diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index bf9241e0754..703b90cc831 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -1616,6 +1616,12 @@ class FactureFournisseur extends CommonInvoice if (!preg_match('/\((.*)\)/', $txtva)) { $txtva = price2num($txtva); // $txtva can have format '5,1' or '5.1' or '5.1(XXX)', we must clean only if '5,1' } + + if ($date_start && $date_end && $date_start > $date_end) { + $langs->load("errors"); + $this->error=$langs->trans('ErrorStartDateGreaterEnd'); + return -1; + } $this->db->begin(); @@ -1837,7 +1843,7 @@ class FactureFournisseur extends CommonInvoice */ public function updateline($id, $desc, $pu, $vatrate, $txlocaltax1 = 0, $txlocaltax2 = 0, $qty = 1, $idproduct = 0, $price_base_type = 'HT', $info_bits = 0, $type = 0, $remise_percent = 0, $notrigger = false, $date_start = '', $date_end = '', $array_options = 0, $fk_unit = null, $pu_ht_devise = 0, $ref_supplier = '') { - global $mysoc; + global $mysoc, $langs; dol_syslog(get_class($this)."::updateline $id,$desc,$pu,$vatrate,$qty,$idproduct,$price_base_type,$info_bits,$type,$remise_percent,$notrigger,$date_start,$date_end,$fk_unit,$pu_ht_devise,$ref_supplier", LOG_DEBUG); include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php'; @@ -1849,6 +1855,12 @@ class FactureFournisseur extends CommonInvoice // Check parameters //if (! is_numeric($pu) || ! is_numeric($qty)) return -1; if ($type < 0) return -1; + + if ($date_start && $date_end && $date_start > $date_end) { + $langs->load("errors"); + $this->error=$langs->trans('ErrorStartDateGreaterEnd'); + return -1; + } // Clean parameters if (empty($vatrate)) $vatrate=0; From a207a699b6d3d334d89fe96409d0a79282128895 Mon Sep 17 00:00:00 2001 From: leangjia Date: Mon, 25 Mar 2019 00:21:09 +0800 Subject: [PATCH 03/29] Add China regions. --- .../install/mysql/data/llx_10_c_regions.sql | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/htdocs/install/mysql/data/llx_10_c_regions.sql b/htdocs/install/mysql/data/llx_10_c_regions.sql index 4928bfe7856..cf90130562c 100644 --- a/htdocs/install/mysql/data/llx_10_c_regions.sql +++ b/htdocs/install/mysql/data/llx_10_c_regions.sql @@ -9,6 +9,7 @@ -- Copyright (C) 2012 Sebastian Neuwert -- Copyright (C) 2012 Ricardo Schluter -- Copyright (C) 2015 Ferran Marcet +-- Copyright (C) 2019~ Lao Tian <281388879@qq.com> -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -352,3 +353,39 @@ INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES (25 -- Regions Slovenia (rowid country=202) INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ('202', '20203', 'SI03', NULL, 'East Slovenia'); INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ('202', '20204', 'SI04', NULL, 'West Slovenia'); + +-- Regions China (rowid country=9) +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,901, 'BG',0,'北京市'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,902, 'TJ',0,'天津市'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,903, 'SH',0,'上海市'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,904, 'CQ',0,'重庆市'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,905, 'HB',0,'河北省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,906, 'SX01',0,'山西省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,907, 'LN',0,'辽宁省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,908, 'JL',0,'吉林省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,909, 'HLJ',0,'黑龙江省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,910, 'JS',0,'江苏省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,911, 'ZJ',0,'浙江省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,912, 'AH',0,'安徽省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,913, 'FJ',0,'福建省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,914, 'JX',0,'江西省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,915, 'SD',0,'山东省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,916, 'HN01',0,'河南省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,917, 'HB',0,'湖北省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,918, 'HN02',0,'湖南省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,919, 'GD',0,'广东省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,920, 'HN03',0,'海南省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,921, 'SC',0,'四川省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,922, 'GZ',0,'贵州省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,923, 'YN',0,'云南省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,924, 'SX02',0,'陕西省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,925, 'GS',0,'甘肃省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,926, 'QH',0,'青海省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,927, 'TW',0,'台湾省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,928, 'NM',0,'内蒙古自治区'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,929, 'GX',0,'广西壮族自治区'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,930, 'XZ',0,'西藏自治区'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,931, 'NX',0,'宁夏回族自治区'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,932, 'XJ',0,'新疆维吾尔自治区'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,933, 'HK',0,'香港特别行政区'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,934, 'MC',0,'澳门特别行政区'); From 4b61f0d606d4a6bf2633e36d4410580ddfcd83d0 Mon Sep 17 00:00:00 2001 From: David Beniamine Date: Wed, 13 Mar 2019 11:56:21 +0100 Subject: [PATCH 04/29] Grouped VAT Add an option to group VAT by rate in receipt --- htdocs/langs/en_US/cashdesk.lang | 3 ++- htdocs/langs/fr_FR/cashdesk.lang | 1 + htdocs/takepos/admin/setup.php | 10 +++++++++- htdocs/takepos/receipt.php | 25 +++++++++++++++++++++++-- 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index 83939e94187..411ba2b3dc5 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -55,4 +55,5 @@ Numberspad=Numbers Pad BillsCoinsPad=Bills and Coins Pad DolistorePosCategory=TakePOS modules and other POS solutions for Dolibarr TakeposNeedsCategories=TakePOS needs product categories to work -OrderNotes=Order Notes \ No newline at end of file +OrderNotes=Order Notes +TicketVatGrouped=Group VAT by rate in tickets diff --git a/htdocs/langs/fr_FR/cashdesk.lang b/htdocs/langs/fr_FR/cashdesk.lang index f588b04a751..74a5d9cb468 100644 --- a/htdocs/langs/fr_FR/cashdesk.lang +++ b/htdocs/langs/fr_FR/cashdesk.lang @@ -49,3 +49,4 @@ AmountAtEndOfPeriod=Montant en fin de période (jour, mois ou année) TheoricalAmount=Montant théorique RealAmount=Montant réel CashFenceDone=Clôture de caisse faite pour la période +TicketVatGrouped=Grouper la TVA par taux dans les tickets diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index c00fa060493..d80297d53a2 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -61,6 +61,7 @@ if (GETPOST('action', 'alpha') == 'set') $res = dolibarr_set_const($db, "TAKEPOSCONNECTOR", GETPOST('TAKEPOSCONNECTOR', 'alpha'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "TAKEPOS_BAR_RESTAURANT", GETPOST('TAKEPOS_BAR_RESTAURANT', 'alpha'), 'chaine', 0, '', $conf->entity); + $res = dolibarr_set_const($db, "TAKEPOS_TICKET_VAT_GROUPPED", GETPOST('TAKEPOS_TICKET_VAT_GROUPPED', 'alpha'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "TAKEPOS_PRINT_SERVER", GETPOST('TAKEPOS_PRINT_SERVER', 'alpha'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "TAKEPOS_ORDER_PRINTERS", GETPOST('TAKEPOS_ORDER_PRINTERS', 'alpha'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "TAKEPOS_ORDER_NOTES", GETPOST('TAKEPOS_ORDER_NOTES', 'alpha'), 'chaine', 0, '', $conf->entity); @@ -146,6 +147,7 @@ if ($conf->global->TAKEPOSCONNECTOR){ print ''; } + // Bar Restaurant mode print ''; print 'Bar Restaurant'; @@ -167,6 +169,12 @@ if ($conf->global->TAKEPOS_BAR_RESTAURANT && $conf->global->TAKEPOSCONNECTOR){ print ''; } +print ''; +print $langs->trans('TicketVatGrouped'); +print ''; +print $form->selectyesno("TAKEPOS_TICKET_VAT_GROUPPED", $conf->global->TAKEPOS_TICKET_VAT_GROUPPED, 1); +print "\n"; + // Payment numpad print ''; print $langs->trans("Paymentnumpad"); @@ -225,7 +233,7 @@ print "\n"; print ''.$langs->trans("CashDeskThirdPartyForSell").''; print ''; -print $form->select_company($conf->global->CASHDESK_ID_THIRDPARTY, 'socid', 's.client in (1,3) AND s.status = 1', 1, 0, 0, array(), 0); +print $form->select_company($conf->global->CASHDESK_ID_THIRDPARTY, 'socid', 's.client in (1, 3) AND s.status = 1', 1, 0, 0, array(), 0); print ''; if (! empty($conf->banque->enabled)) { diff --git a/htdocs/takepos/receipt.php b/htdocs/takepos/receipt.php index 1610dbb8c59..fb23120623a 100644 --- a/htdocs/takepos/receipt.php +++ b/htdocs/takepos/receipt.php @@ -103,11 +103,32 @@ print $object->ref; trans("TotalHT");?> total_ht, 1, '', 1, - 1, - 1, $conf->currency)."\n";?> +global->TAKEPOS_TICKET_VAT_GROUPPED):?> +lines as $line) + { + if(!array_key_exists($line->tva_tx, $vat_groups)){ + $vat_groups[$line->tva_tx] = 0; + } + $vat_groups[$line->tva_tx] += $line->total_tva; + } + foreach($vat_groups as $key => $val){ + ?> + + trans("VAT").' '.vatrate($key, 1);?> + currency)."\n";?> + + + - trans("TotalVAT").''.price($object->total_tva, 1, '', 1, - 1, - 1, $conf->currency)."\n";?> + trans("TotalVAT").''.price($object->total_tva, 1, '', 1, - 1, - 1, $conf->currency)."\n";?> + - trans("TotalTTC").''.price($object->total_ttc, 1, '', 1, - 1, - 1, $conf->currency)."\n";?> + trans("TotalTTC").''.price($object->total_ttc, 1, '', 1, - 1, - 1, $conf->currency)."\n";?>
From 833da30af10cc0c1ffe60ca6507df9c1f75687dc Mon Sep 17 00:00:00 2001 From: David Beniamine Date: Fri, 15 Mar 2019 12:07:33 +0100 Subject: [PATCH 05/29] Use any dolibarr enabled paiement mode --- htdocs/langs/en_US/cashdesk.lang | 4 +- htdocs/langs/fr_FR/cashdesk.lang | 2 + htdocs/takepos/admin/setup.php | 47 ++++++++++--------- htdocs/takepos/invoice.php | 32 +++++++------ htdocs/takepos/pay.php | 79 ++++++++++++++++++++++++++------ htdocs/takepos/takepos.php | 12 ++++- 6 files changed, 126 insertions(+), 50 deletions(-) diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index 83939e94187..0d248dc593d 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -55,4 +55,6 @@ Numberspad=Numbers Pad BillsCoinsPad=Bills and Coins Pad DolistorePosCategory=TakePOS modules and other POS solutions for Dolibarr TakeposNeedsCategories=TakePOS needs product categories to work -OrderNotes=Order Notes \ No newline at end of file +OrderNotes=Order Notes +CashDeskBankAccountFor=Account used for payments in +NoPaimementModesDefined=No paiment mode defined in TakePOS configuration diff --git a/htdocs/langs/fr_FR/cashdesk.lang b/htdocs/langs/fr_FR/cashdesk.lang index f588b04a751..8b7926c0c56 100644 --- a/htdocs/langs/fr_FR/cashdesk.lang +++ b/htdocs/langs/fr_FR/cashdesk.lang @@ -49,3 +49,5 @@ AmountAtEndOfPeriod=Montant en fin de période (jour, mois ou année) TheoricalAmount=Montant théorique RealAmount=Montant réel CashFenceDone=Clôture de caisse faite pour la période +CashDeskBankAccountFor=Compte utilisé pour les paiements en +NoPaimementModesDefined=Pas de mode de paiement défini dans la configuration de TakePOS diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index c00fa060493..0de0793176b 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -41,19 +41,30 @@ if (!$user->admin) accessforbidden(); $langs->loadLangs(array("admin", "cashdesk")); +global $db; + +$sql="SELECT code, libelle FROM ".MAIN_DB_PREFIX."c_paiement WHERE active=1 ORDER BY libelle"; +$resql = $db->query($sql); +$paiements = array(); +if($resql){ + while ($obj = $db->fetch_object($resql)){ + array_push($paiements, $obj); + } +} + /* * Actions */ if (GETPOST('action', 'alpha') == 'set') { $db->begin(); - if (GETPOST('socid', 'int') < 0) $_POST["socid"]=''; $res = dolibarr_set_const($db, "CASHDESK_ID_THIRDPARTY", (GETPOST('socid', 'int') > 0 ? GETPOST('socid', 'int') : ''), 'chaine', 0, '', $conf->entity); - $res = dolibarr_set_const($db, "CASHDESK_ID_BANKACCOUNT_CASH", (GETPOST('CASHDESK_ID_BANKACCOUNT_CASH', 'alpha') > 0 ? GETPOST('CASHDESK_ID_BANKACCOUNT_CASH', 'alpha') : ''), 'chaine', 0, '', $conf->entity); - $res = dolibarr_set_const($db, "CASHDESK_ID_BANKACCOUNT_CHEQUE", (GETPOST('CASHDESK_ID_BANKACCOUNT_CHEQUE', 'alpha') > 0 ? GETPOST('CASHDESK_ID_BANKACCOUNT_CHEQUE', 'alpha') : ''), 'chaine', 0, '', $conf->entity); - $res = dolibarr_set_const($db, "CASHDESK_ID_BANKACCOUNT_CB", (GETPOST('CASHDESK_ID_BANKACCOUNT_CB', 'alpha') > 0 ? GETPOST('CASHDESK_ID_BANKACCOUNT_CB', 'alpha') : ''), 'chaine', 0, '', $conf->entity); + foreach($paiements as $modep){ + $name="CASHDESK_ID_BANKACCOUNT_".$modep->code; + $res = dolibarr_set_const($db, $name, (GETPOST($name, 'alpha') > 0 ? GETPOST($name, 'alpha') : ''), 'chaine', 0, '', $conf->entity); + } $res = dolibarr_set_const($db, "CASHDESK_ID_WAREHOUSE", (GETPOST('CASHDESK_ID_WAREHOUSE', 'alpha') > 0 ? GETPOST('CASHDESK_ID_WAREHOUSE', 'alpha') : ''), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "CASHDESK_NO_DECREASE_STOCK", GETPOST('CASHDESK_NO_DECREASE_STOCK', 'alpha'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "CASHDESK_SERVICES", GETPOST('CASHDESK_SERVICES', 'alpha'), 'chaine', 0, '', $conf->entity); @@ -225,27 +236,19 @@ print "\n"; print ''.$langs->trans("CashDeskThirdPartyForSell").''; print ''; -print $form->select_company($conf->global->CASHDESK_ID_THIRDPARTY, 'socid', 's.client in (1,3) AND s.status = 1', 1, 0, 0, array(), 0); +print $form->select_company($conf->global->CASHDESK_ID_THIRDPARTY, 'socid', 's.client in (1, 3) AND s.status = 1', 1, 0, 0, array(), 0); print ''; if (! empty($conf->banque->enabled)) { - - print ''.$langs->trans("CashDeskBankAccountForSell").''; - print ''; - $form->select_comptes($conf->global->CASHDESK_ID_BANKACCOUNT_CASH, 'CASHDESK_ID_BANKACCOUNT_CASH', 0, "courant=2", 1); - print ''; - - - print ''.$langs->trans("CashDeskBankAccountForCheque").''; - print ''; - $form->select_comptes($conf->global->CASHDESK_ID_BANKACCOUNT_CHEQUE, 'CASHDESK_ID_BANKACCOUNT_CHEQUE', 0, "courant=1", 1); - print ''; - - - print ''.$langs->trans("CashDeskBankAccountForCB").''; - print ''; - $form->select_comptes($conf->global->CASHDESK_ID_BANKACCOUNT_CB, 'CASHDESK_ID_BANKACCOUNT_CB', 0, "courant=1", 1); - print ''; + + foreach($paiements as $modep){ + $name="CASHDESK_ID_BANKACCOUNT_".$modep->code; + print ''.$langs->trans("CashDeskBankAccountFor").' '.$langs->trans($modep->libelle).''; + print ''; + $cour=preg_match('/^LIQ.*/', $modep->code)?2:1; + $form->select_comptes($conf->global->$name, $name, 0, "courant=$cour", 1); + print ''; + } } if (! empty($conf->stock->enabled)) diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index 45a65af3f94..69c9a83cae2 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -16,10 +16,10 @@ * along with this program. If not, see . */ -// if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // Not disabled cause need to load personalized language -// if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Not disabled cause need to load personalized language -// if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); -// if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); +// if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Not disabled cause need to load personalized language +// if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); // Not disabled cause need to load personalized language +// if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); +// if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1'); if (!defined('NOCSRFCHECK')) { define('NOCSRFCHECK', '1'); } if (!defined('NOTOKENRENEWAL')) { define('NOTOKENRENEWAL', '1'); } if (!defined('NOREQUIREMENU')) { define('NOREQUIREMENU', '1'); } @@ -40,6 +40,10 @@ $number = GETPOST('number'); $idline = GETPOST('idline'); $desc = GETPOST('desc', 'alpha'); $pay = GETPOST('pay'); +$sql="SELECT rowid FROM ".MAIN_DB_PREFIX."facture where ref='(PROV-POS-".$place.")'"; +$resql = $db->query($sql); +$row = $db->fetch_array($resql); +$placeid = $row[0]; $placeid = 0; // $placeid is id of invoice @@ -48,16 +52,20 @@ $ret = $invoice->fetch('', '(PROV-POS-'.$place.')'); if ($ret > 0) $placeid = $invoice->id; +// Retrieve paiementid +$sql="SELECT id FROM ".MAIN_DB_PREFIX."c_paiement WHERE code='$pay'"; +$resql = $db->query($sql); +$codes = $db->fetch_array($resql); +$paiementid=$codes[0]; + /* * Actions */ if ($action == 'valid' && $user->rights->facture->creer) { - if ($pay == "cash") $bankaccount = $conf->global->CASHDESK_ID_BANKACCOUNT_CASH; - elseif ($pay == "card") $bankaccount = $conf->global->CASHDESK_ID_BANKACCOUNT_CB; - elseif ($pay == "cheque") $bankaccount = $conf->global->CASHDESK_ID_BANKACCOUNT_CHEQUE; - + $accountname="CASHDESK_ID_BANKACCOUNT_".$pay; + $bankaccount=$conf->global->$accountname; $now=dol_now(); $invoice = new Facture($db); @@ -72,12 +80,10 @@ if ($action == 'valid' && $user->rights->facture->creer) $payment->bank_account = $bankaccount; $payment->amounts[$invoice->id] = $invoice->total_ttc; - if ($pay=="cash") $payment->paiementid = 4; - elseif ($pay=="card") $payment->paiementid = 6; - elseif ($pay=="cheque") $payment->paiementid = 7; - $payment->num_payment = $invoice->ref; + $payment->paiementid=$paiementid; + $payment->num_paiement=$invoice->ref; - $payment->create($user); + $payment->create($user); $payment->addPaymentToBank($user, 'payment', '(CustomerInvoicePayment)', $bankaccount, '', ''); $invoice->set_paid($user); diff --git a/htdocs/takepos/pay.php b/htdocs/takepos/pay.php index 33524b80a8c..1ae6a5af7d8 100644 --- a/htdocs/takepos/pay.php +++ b/htdocs/takepos/pay.php @@ -15,10 +15,10 @@ * along with this program. If not, see . */ -//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // Not disabled cause need to load personalized language -//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Not disabled cause need to load personalized language -//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); -//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); +//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Not disabled cause need to load personalized language +//if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); // Not disabled cause need to load personalized language +//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); +//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1'); if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK', '1'); if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); @@ -50,6 +50,16 @@ else{ top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); $langs->loadLangs(array("main", "bills", "cashdesk")); + +$sql="SELECT code, libelle FROM ".MAIN_DB_PREFIX."c_paiement WHERE active=1 ORDER BY libelle"; +$resql = $db->query($sql); +$paiements = array(); +if($resql){ + while ($obj = $db->fetch_object($resql)){ + $accountname="CASHDESK_ID_BANKACCOUNT_".$obj->code; + if($conf->global->$accountname) array_push($paiements, $obj); + } +} ?> @@ -105,25 +115,68 @@ $langs->loadLangs(array("main", "bills", "cashdesk"));
"reset()", + "span" => "style='font-size: 150%;'", + "text" => "C", + ), + array( + "function" => "parent.$.colorbox.close();", + "span" => "id='printtext'", + "text" => $langs->trans("GoBack"), + ), +); $numpad=$conf->global->TAKEPOS_NUMPAD; ?> - +0) : ?> + + + + - +1) : ?> + + + + + - +2) : ?> + + + + + - - + + + + +
diff --git a/htdocs/takepos/takepos.php b/htdocs/takepos/takepos.php index 36b670146f9..d8120579a7d 100644 --- a/htdocs/takepos/takepos.php +++ b/htdocs/takepos/takepos.php @@ -450,7 +450,17 @@ $( document ).ready(function() { global->CASHDESK_ID_THIRDPARTY) or empty($conf->global->CASHDESK_ID_BANKACCOUNT_CASH) or empty($conf->global->CASHDESK_ID_BANKACCOUNT_CB)) { +// TODO +$sql="SELECT code,libelle FROM ".MAIN_DB_PREFIX."c_paiement WHERE active=1 ORDER BY libelle"; +$resql = $db->query($sql); +$paiementsModes = array(); +if($resql){ + while ($obj = $db->fetch_object($resql)){ + $accountname="CASHDESK_ID_BANKACCOUNT_".$obj->code; + if($conf->global->$accountname) array_push($paiementsModes, $obj); + } +} +if (empty($paiementsModes)) { setEventMessages($langs->trans("ErrorModuleSetupNotComplete"), null, 'errors'); } if (count($maincategories)==0) { From 62767fc059ca830ddfb192787fc235cf22291ec8 Mon Sep 17 00:00:00 2001 From: liAnGjiA Date: Mon, 25 Mar 2019 10:16:41 +0800 Subject: [PATCH 06/29] Update llx_10_c_regions.sql --- .../install/mysql/data/llx_10_c_regions.sql | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/htdocs/install/mysql/data/llx_10_c_regions.sql b/htdocs/install/mysql/data/llx_10_c_regions.sql index cf90130562c..34d903a0da7 100644 --- a/htdocs/install/mysql/data/llx_10_c_regions.sql +++ b/htdocs/install/mysql/data/llx_10_c_regions.sql @@ -355,37 +355,37 @@ INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ('2 INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ('202', '20204', 'SI04', NULL, 'West Slovenia'); -- Regions China (rowid country=9) -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,901, 'BG',0,'北京市'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,902, 'TJ',0,'天津市'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,903, 'SH',0,'上海市'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,904, 'CQ',0,'重庆市'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,905, 'HB',0,'河北省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,906, 'SX01',0,'山西省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,907, 'LN',0,'辽宁省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,908, 'JL',0,'吉林省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,909, 'HLJ',0,'黑龙江省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,910, 'JS',0,'江苏省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,911, 'ZJ',0,'浙江省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,912, 'AH',0,'安徽省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,913, 'FJ',0,'福建省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,914, 'JX',0,'江西省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,915, 'SD',0,'山东省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,916, 'HN01',0,'河南省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,917, 'HB',0,'湖北省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,918, 'HN02',0,'湖南省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,919, 'GD',0,'广东省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,920, 'HN03',0,'海南省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,921, 'SC',0,'四川省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,922, 'GZ',0,'贵州省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,923, 'YN',0,'云南省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,924, 'SX02',0,'陕西省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,925, 'GS',0,'甘肃省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,926, 'QH',0,'青海省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,927, 'TW',0,'台湾省'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,928, 'NM',0,'内蒙古自治区'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,929, 'GX',0,'广西壮族自治区'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,930, 'XZ',0,'西藏自治区'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,931, 'NX',0,'宁夏回族自治区'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,932, 'XJ',0,'新疆维吾尔自治区'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,933, 'HK',0,'香港特别行政区'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,934, 'MC',0,'澳门特别行政区'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,901, '京',0,'北京市'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,902, '津',0,'天津市'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,903, '沪',0,'上海市'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,904, '渝',0,'重庆市'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,905, '冀',0,'河北省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,906, '晋',0,'山西省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,907, '辽',0,'辽宁省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,908, '吉',0,'吉林省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,909, '黑',0,'黑龙江省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,910, '苏',0,'江苏省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,911, '浙',0,'浙江省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,912, '皖',0,'安徽省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,913, '闽',0,'福建省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,914, '赣',0,'江西省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,915, '鲁',0,'山东省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,916, '豫',0,'河南省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,917, '鄂',0,'湖北省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,918, '湘',0,'湖南省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,919, '粤',0,'广东省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,920, '琼',0,'海南省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,921, '川',0,'四川省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,922, '贵',0,'贵州省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,923, '云',0,'云南省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,924, '陕',0,'陕西省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,925, '甘',0,'甘肃省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,926, '青',0,'青海省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,927, '台',0,'台湾省'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,928, '蒙',0,'内蒙古自治区'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,929, '桂',0,'广西壮族自治区'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,930, '藏',0,'西藏自治区'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,931, '宁',0,'宁夏回族自治区'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,932, '新',0,'新疆维吾尔自治区'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,933, '港',0,'香港特别行政区'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values (9,934, '澳',0,'澳门特别行政区'); From 3280c8fa64efd338c7b2c973bfc6575a48561c05 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Mon, 25 Mar 2019 10:12:23 +0100 Subject: [PATCH 07/29] not for invoice --- htdocs/compta/facture/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index 7655298b1b6..daf090483c3 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -3071,7 +3071,7 @@ if ($action == 'create') // Payment term print '' . $langs->trans('PaymentConditionsShort') . ''; - $form->select_conditions_paiements(isset($_POST['cond_reglement_id']) ? $_POST['cond_reglement_id'] : $cond_reglement_id, 'cond_reglement_id', -1, 1); + $form->select_conditions_paiements(isset($_POST['cond_reglement_id']) ? $_POST['cond_reglement_id'] : $cond_reglement_id, 'cond_reglement_id'); print ''; // Payment mode From e2e27dad37c5b1efe85b2f389a2c364d1726c25a Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Mon, 25 Mar 2019 14:42:44 +0100 Subject: [PATCH 08/29] translation --- htdocs/supplier_proposal/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index b641d4adcc8..0efd26f3d84 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -937,7 +937,7 @@ if (empty($reshook)) $result = $object->availability($_POST['availability_id']); } - // Conditions de reglement + // Terms of the settlement elseif ($action == 'setconditions' && $user->rights->supplier_proposal->creer) { $result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int')); } From 513ef1e727e8fc8dbe215e3789079d8a5ccf7207 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 Mar 2019 16:16:08 +0100 Subject: [PATCH 09/29] Fix label short --- htdocs/core/lib/functions.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index f1c67429d95..0937981164b 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -8027,7 +8027,7 @@ function dolGetStatus($statusLabel = '', $statusLabelShort = '', $html = '', $st } if ($displayMode === 2) { - $return = $htmlImg .' '. $htmlLabel; + $return = $htmlImg .' '. $htmlLabelShort; } elseif ($displayMode === 3) { $return = $htmlImg; From c62d147c600831fc5be502ddcdc8e09e985e751b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 Mar 2019 16:47:20 +0100 Subject: [PATCH 10/29] Auto clean search field to avoid to have 2 conflict search criteria --- htdocs/accountancy/admin/productaccount.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/htdocs/accountancy/admin/productaccount.php b/htdocs/accountancy/admin/productaccount.php index 07df2a91872..37ec3c4e503 100644 --- a/htdocs/accountancy/admin/productaccount.php +++ b/htdocs/accountancy/admin/productaccount.php @@ -333,7 +333,7 @@ if ($result) if ($accounting_product_mode == 'ACCOUNTANCY_BUY') print ''; // Current account print ''; - print ''; + print ''; $listofvals=array('withoutvalidaccount'=>$langs->trans("WithoutValidAccount"), 'withvalidaccount'=>$langs->trans("WithValidAccount")); print ' '.$langs->trans("or").' '.$form->selectarray('search_current_account_valid', $listofvals, $search_current_account_valid, 1); print ''; @@ -481,6 +481,14 @@ if ($result) }); init_savebutton(); + + jQuery("#search_current_account").keyup(function() { + if (jQuery("#search_current_account").val() != \'\') + { + console.log("We set a value of account to search "+jQuery("#search_current_account").val()+", so we disable the other search criteria on account"); + jQuery("#search_current_account_valid").val(-1); + } + }); }); '; From 32303bbe4827cba26e8b57b5d17844766a1fc2c9 Mon Sep 17 00:00:00 2001 From: David Beniamine Date: Mon, 25 Mar 2019 16:49:33 +0100 Subject: [PATCH 11/29] SQL modifications for multicompany compatibility Thanks to hregis --- htdocs/takepos/admin/setup.php | 5 ++++- htdocs/takepos/invoice.php | 8 +++----- htdocs/takepos/pay.php | 5 ++++- htdocs/takepos/takepos.php | 5 ++++- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index 0de0793176b..b25212ea5db 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -43,7 +43,10 @@ $langs->loadLangs(array("admin", "cashdesk")); global $db; -$sql="SELECT code, libelle FROM ".MAIN_DB_PREFIX."c_paiement WHERE active=1 ORDER BY libelle"; +$sql = "SELECT code, libelle FROM ".MAIN_DB_PREFIX."c_paiement"; +$sql.= " WHERE entity IN (".getEntity('c_paiement').")"; +$sql.= " AND active = 1"; +$sql.= " ORDER BY libelle"; $resql = $db->query($sql); $paiements = array(); if($resql){ diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index 69c9a83cae2..3e8d6327f1a 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -40,10 +40,6 @@ $number = GETPOST('number'); $idline = GETPOST('idline'); $desc = GETPOST('desc', 'alpha'); $pay = GETPOST('pay'); -$sql="SELECT rowid FROM ".MAIN_DB_PREFIX."facture where ref='(PROV-POS-".$place.")'"; -$resql = $db->query($sql); -$row = $db->fetch_array($resql); -$placeid = $row[0]; $placeid = 0; // $placeid is id of invoice @@ -53,7 +49,9 @@ if ($ret > 0) $placeid = $invoice->id; // Retrieve paiementid -$sql="SELECT id FROM ".MAIN_DB_PREFIX."c_paiement WHERE code='$pay'"; +$sql = "SELECT id FROM ".MAIN_DB_PREFIX."c_paiement"; +$sql.= " WHERE entity IN (".getEntity('c_paiement').")"; +$sql.= " AND code = '$pay'"; $resql = $db->query($sql); $codes = $db->fetch_array($resql); $paiementid=$codes[0]; diff --git a/htdocs/takepos/pay.php b/htdocs/takepos/pay.php index 1ae6a5af7d8..9672a97cd8d 100644 --- a/htdocs/takepos/pay.php +++ b/htdocs/takepos/pay.php @@ -51,7 +51,10 @@ top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); $langs->loadLangs(array("main", "bills", "cashdesk")); -$sql="SELECT code, libelle FROM ".MAIN_DB_PREFIX."c_paiement WHERE active=1 ORDER BY libelle"; +$sql = "SELECT code, libelle FROM ".MAIN_DB_PREFIX."c_paiement"; +$sql.= " WHERE entity IN (".getEntity('c_paiement').")"; +$sql.= " AND active = 1"; +$sql.= " ORDER BY libelle"; $resql = $db->query($sql); $paiements = array(); if($resql){ diff --git a/htdocs/takepos/takepos.php b/htdocs/takepos/takepos.php index d8120579a7d..422db40ad0a 100644 --- a/htdocs/takepos/takepos.php +++ b/htdocs/takepos/takepos.php @@ -451,7 +451,10 @@ $( document ).ready(function() { query($sql); $paiementsModes = array(); if($resql){ From 12c5844065680f814d9e15d46e833789c9b9d5d3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 11:55:22 +0100 Subject: [PATCH 12/29] Look and feel v10 --- htdocs/contrat/contact.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/contrat/contact.php b/htdocs/contrat/contact.php index 1e8fbcbfdee..1235fe301cf 100644 --- a/htdocs/contrat/contact.php +++ b/htdocs/contrat/contact.php @@ -204,7 +204,7 @@ if ($id > 0 || ! empty($ref)) print '
'; print '
'; - print ''; + print '
'; // Ligne info remises tiers From 524f171168d8747cad3e2b18ecf9f220251286f6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 12:12:16 +0100 Subject: [PATCH 13/29] FIX old export models was not visible --- htdocs/core/class/html.formother.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index 8ca0b988fda..ccb6edeb2ee 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -63,8 +63,8 @@ class FormOther * @param string $selected Id modele pre-selectionne * @param string $htmlname Nom de la zone select * @param string $type Type des modeles recherches - * @param int $useempty Affiche valeur vide dans liste - * @param int $fk_user Utilisateur créant le modèle + * @param int $useempty Show an empty value in list + * @param int $fk_user User that has created the template (this is set to null to get all export model when EXPORTS_SHARE_MODELS is on) * @return void */ function select_export_model($selected='', $htmlname='exportmodelid', $type='', $useempty=0, $fk_user=null) @@ -73,7 +73,7 @@ class FormOther $sql = "SELECT rowid, label"; $sql.= " FROM ".MAIN_DB_PREFIX."export_model"; $sql.= " WHERE type = '".$type."'"; - if (!empty($fk_user)) $sql.=" AND fk_user=".$fk_user; + if (!empty($fk_user)) $sql.=" AND fk_user IN (0, ".$fk_user.")"; // An export model $sql.= " ORDER BY rowid"; $result = $this->db->query($sql); if ($result) From 1787b319322181ed6ae8bb0153cc60591ce62750 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 12:18:28 +0100 Subject: [PATCH 14/29] FIX setup of module export --- htdocs/admin/export.php | 30 ++++++++++++++++-------------- htdocs/langs/en_US/admin.lang | 5 +++-- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/htdocs/admin/export.php b/htdocs/admin/export.php index c4ad077296a..936c6e2f135 100644 --- a/htdocs/admin/export.php +++ b/htdocs/admin/export.php @@ -51,37 +51,37 @@ include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php'; * View */ +$form=new Form($db); + $page_name = "ExportSetup"; llxHeader('', $langs->trans($page_name)); // Subheader -$linkback = '' - . $langs->trans("BackToModuleList") . ''; +$linkback = '' . $langs->trans("BackToModuleList") . ''; + print_fiche_titre($langs->trans($page_name), $linkback); -// Configuration header +//$head = export_admin_prepare_head(); +$h=0; +$head = array(); +$head[$h][0] = DOL_URL_ROOT.'/admin/export.php'; +$head[$h][1] = $langs->trans("Setup"); +$head[$h][2] = 'setup'; +$h++; -dol_fiche_head( - $head, - 'settings', - $langs->trans("ExportsArea"), - 0, - "exports" -); +dol_fiche_head($head, 'setup', $langs->trans("ExportsArea"), -1, "exports"); -// Setup page goes here -$form=new Form($db); print '
'; print ''; -print ''."\n"; +print ''."\n"; print ''; print ''."\n"; // Example with a yes / no select print ''; -print ''; +print ''; print ''; print ''; print '
'.$langs->trans("ExportModel").''.$langs->trans("Parameters").' 
'.$langs->trans("set_EXPORTS_SHARE_MODELS").''.$langs->trans("EXPORTS_SHARE_MODELS").' '; print '
'; @@ -93,6 +93,8 @@ print '
'; +dol_fiche_end(); + // End of page llxFooter(); $db->close(); diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index b50e25f50d4..7083ed1114e 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1846,7 +1846,6 @@ FormatZip=Zip MainMenuCode=Menu entry code (mainmenu) ECMAutoTree=Show automatic ECM tree OperationParamDesc=Define values to use for action, or how to extract values. For example:
VALUE:abc
REGEX:SUBJECT:([^\s]*)
REGEX:BODY:My company name is\s([^\s]*) -##### Resource #### ResourceSetup=Configuration du module Resource UseSearchToSelectResource=Use a search form to choose a resource (rather than a drop-down list). DisabledResourceLinkUser=Disable feature to link a resource to users @@ -1856,4 +1855,6 @@ OnMobileOnly=On small screen (smartphone) only DisableProspectCustomerType=Disable the "Prospect + Customer" third party type (so third party must be Prospect or Customer but can't be both) MAIN_OPTIMIZEFORTEXTBROWSER=Simplify interface for blind person MAIN_OPTIMIZEFORTEXTBROWSERDesc=Enable this option if you are a blind person, or use application from a text browser like lynx or links. -ABankAccountMustBeDefinedOnPaymentModeSetup=Note: The bank account must be defined on the module of each payment mode (Paypal, Stripe, ...) to have this feature working. \ No newline at end of file +ABankAccountMustBeDefinedOnPaymentModeSetup=Note: The bank account must be defined on the module of each payment mode (Paypal, Stripe, ...) to have this feature working. +EXPORTS_SHARE_MODELS=Export models are share with everybody +ExportSetup=Setup of module Export \ No newline at end of file From e5f54bd14c003a3c33ff6711c3a420b273d0dd22 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 12:35:44 +0100 Subject: [PATCH 15/29] FIX Remane of project --- htdocs/projet/class/project.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index a704c7d641e..e63cbe80fee 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -338,7 +338,7 @@ class Project extends CommonObject if (file_exists($olddir)) { include_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; - $res=dol_move($olddir, $newdir); + $res=@rename($olddir, $newdir); if (! $res) { $langs->load("errors"); @@ -723,10 +723,10 @@ class Project extends CommonObject return -1; } } - + /** * Delete tasks with no children first, then task with children recursively - * + * * @param User $user User * @return int <0 if KO, 1 if OK */ @@ -754,7 +754,7 @@ class Project extends CommonObject { if (count($this->lines)) $this->deleteTasks($this->lines); } - + return 1; } From 4c4ad0548de1fa0250cf64a22e681ed39bfcf487 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 17:56:46 +0100 Subject: [PATCH 16/29] Fix for creation of index composed with type --- .../mysql/tables/llx_emailcollector_emailcollectorfilter.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/tables/llx_emailcollector_emailcollectorfilter.sql b/htdocs/install/mysql/tables/llx_emailcollector_emailcollectorfilter.sql index 6312fa5785f..e4071e5500a 100644 --- a/htdocs/install/mysql/tables/llx_emailcollector_emailcollectorfilter.sql +++ b/htdocs/install/mysql/tables/llx_emailcollector_emailcollectorfilter.sql @@ -19,7 +19,7 @@ CREATE TABLE llx_emailcollector_emailcollectorfilter( rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL, fk_emailcollector INTEGER NOT NULL, type varchar(128) NOT NULL, - rulevalue varchar(255) NULL, + rulevalue varchar(128) NULL, date_creation datetime NOT NULL, tms timestamp NOT NULL, fk_user_creat integer NOT NULL, From f991d4ba99a118d46598025aaaf8af7a8394ff6b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 18:10:28 +0100 Subject: [PATCH 17/29] Fix typo --- htdocs/admin/emailcollector_card.php | 5 ++--- htdocs/langs/en_US/admin.lang | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/htdocs/admin/emailcollector_card.php b/htdocs/admin/emailcollector_card.php index fd74938d802..42c23398263 100644 --- a/htdocs/admin/emailcollector_card.php +++ b/htdocs/admin/emailcollector_card.php @@ -178,10 +178,9 @@ if ($action == 'confirm_collect') dol_include_once('/emailcollector/class/emailcollector.class.php'); $res = $object->doCollectOneCollector(); - if ($res > 0) { - setEventMessages($object->output, null, 'mesgs'); + setEventMessages($object->lastresult, null, 'mesgs'); } else { @@ -391,7 +390,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $connectstringsource = $connectstringserver.imap_utf7_encode($sourcedir); $connectstringtarget = $connectstringserver.imap_utf7_encode($targetdir); - $connection = imap_open($connectstringsource, $object->user, $object->password); + $connection = imap_open($connectstringsource, $object->login, $object->password); } else { diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 9f7553901f4..dde854f1925 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1837,7 +1837,7 @@ XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (f RecordEvent=Record email event CreateLeadAndThirdParty=Create lead (and third party if necessary) CodeLastResult=Result code of last collect -NbOfEmailsInInbox=Number of email in source directory +NbOfEmailsInInbox=Number of emails in source directory LoadThirdPartyFromName=Load third party from name (load only) LoadThirdPartyFromNameOrCreate=Load third party from name (create if not found) WithDolTrackingID=Dolibarr Tracking ID found From d8212d84df3d286cf7b0ebbc49cb68b4c75bed8e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 19:15:18 +0100 Subject: [PATCH 18/29] Debug emailcollector --- htdocs/admin/emailcollector_card.php | 18 +++++++++++++++--- htdocs/core/class/html.form.class.php | 8 ++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/htdocs/admin/emailcollector_card.php b/htdocs/admin/emailcollector_card.php index 42c23398263..50c54621b51 100644 --- a/htdocs/admin/emailcollector_card.php +++ b/htdocs/admin/emailcollector_card.php @@ -442,8 +442,21 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea // Add filter print ''; print ''; - $arrayoftypes=array('from'=>'MailFrom', 'to'=>'MailTo', 'cc'=>'Cc', 'bcc'=>'Bcc', 'subject'=>'Subject', 'body'=>'Body', 'seen'=>'AlreadyRead', 'unseen'=>'NotRead', 'withtrackingid'=>'WithDolTrackingID', 'withouttrackingid'=>'WithoutDolTrackingID'); - print $form->selectarray('filtertype', $arrayoftypes, '', 1, 0, 0, '', 1); + $arrayoftypes=array( + 'from'=>'MailFrom', + 'to'=>'MailTo', + 'cc'=>'Cc', + 'bcc'=>'Bcc', + 'subject'=>'Subject', + 'body'=>'Body', + 'X1'=>'---', + 'seen'=>'AlreadyRead', + 'unseen'=>'NotRead', + 'X2'=>'---', + 'withtrackingid'=>'WithDolTrackingID', + 'withouttrackingid'=>'WithoutDolTrackingID' + ); + print $form->selectarray('filtertype', $arrayoftypes, '', 1, 0, 0, '', 1, 0, 0, '', '', 0, '', 2); print ''; print ''; print ''; @@ -461,7 +474,6 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; print ''.$rulefilter['rulevalue'].''; print ''; - //print $rulefilterobj->getLibStatut(3); print ' '.img_delete().''; print ''; print ''; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 2fb79ca56f2..4f61435f124 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -5841,10 +5841,10 @@ class Form * @param string $morecss Add more class to css styles * @param int $addjscombo Add js combo * @param string $moreparamonempty Add more param on the empty option line. Not used if show_empty not set - * @param int $disablebademail Check if an email is found into value and if not disable and colorize entry + * @param int $disablebademail 1=Check if a not valid email, 2=Check string '---', and if found into value, disable and colorize entry * @param int $nohtmlescape No html escaping. * @return string HTML select string. - * @see multiselectarray, selectArrayAjax, selectArrayFilter + * @see multiselectarray(), selectArrayAjax(), selectArrayFilter() */ public static function selectarray($htmlname, $array, $id = '', $show_empty = 0, $key_in_label = 0, $value_as_key = 0, $moreparam = '', $translate = 0, $maxlen = 0, $disabled = 0, $sort = '', $morecss = '', $addjscombo = 0, $moreparamonempty = '', $disablebademail = 0, $nohtmlescape = 0) { @@ -5902,9 +5902,9 @@ class Form $disabled=''; $style=''; if (! empty($disablebademail)) { - if (! preg_match('/<.+@.+>/', $value)) + if (($disablebademail == 1 && ! preg_match('/<.+@.+>/', $value)) + || ($disablebademail == 2 && preg_match('/---/', $value))) { - //$value=preg_replace('/'.preg_quote($a,'/').'/', $b, $value); $disabled=' disabled'; $style=' class="warning"'; } From 259235deae116bd067286a9fc509461d1a2e40c0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 19:32:13 +0100 Subject: [PATCH 19/29] Update card.php --- htdocs/supplier_proposal/card.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index af04e15c2c2..c87411cfb83 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -932,12 +932,12 @@ if (empty($reshook)) $object->setProject(GETPOST('projectid'), 'int'); } - // Delai de livraison + // Delivery delay elseif ($action == 'setavailability' && $user->rights->supplier_proposal->creer) { $result = $object->availability($_POST['availability_id']); } - // Terms of the settlement + // Terms of payments elseif ($action == 'setconditions' && $user->rights->supplier_proposal->creer) { $result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int')); } @@ -950,7 +950,7 @@ if (empty($reshook)) $result = $object->set_remise_absolue($user, $_POST['remise_absolue']); } - // Mode de reglement + // Payment mode elseif ($action == 'setmode' && $user->rights->supplier_proposal->creer) { $result = $object->setPaymentMethods(GETPOST('mode_reglement_id', 'int')); } From 430f2c10b42e8eb6269948965c1c18e3c04fc46e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 19:52:19 +0100 Subject: [PATCH 20/29] Update setup.php --- htdocs/takepos/admin/setup.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index 9d13cb0e882..f47f1145451 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -64,7 +64,12 @@ if (GETPOST('action', 'alpha') == 'set') if (GETPOST('socid', 'int') < 0) $_POST["socid"]=''; $res = dolibarr_set_const($db, "CASHDESK_ID_THIRDPARTY", (GETPOST('socid', 'int') > 0 ? GETPOST('socid', 'int') : ''), 'chaine', 0, '', $conf->entity); - foreach($paiements as $modep){ + + $res = dolibarr_set_const($db, "CASHDESK_ID_BANKACCOUNT_CASH", (GETPOST('CASHDESK_ID_BANKACCOUNT_CASH', 'alpha') > 0 ? GETPOST('CASHDESK_ID_BANKACCOUNT_CASH', 'alpha') : ''), 'chaine', 0, '', $conf->entity); + $res = dolibarr_set_const($db, "CASHDESK_ID_BANKACCOUNT_CHEQUE", (GETPOST('CASHDESK_ID_BANKACCOUNT_CHEQUE', 'alpha') > 0 ? GETPOST('CASHDESK_ID_BANKACCOUNT_CHEQUE', 'alpha') : ''), 'chaine', 0, '', $conf->entity); + $res = dolibarr_set_const($db, "CASHDESK_ID_BANKACCOUNT_CB", (GETPOST('CASHDESK_ID_BANKACCOUNT_CB', 'alpha') > 0 ? GETPOST('CASHDESK_ID_BANKACCOUNT_CB', 'alpha') : ''), 'chaine', 0, '', $conf->entity); + foreach($paiements as $modep) { + if (in_array($modep->code, array('LIQ', 'CB', 'CHQ'))) continue; $name="CASHDESK_ID_BANKACCOUNT_".$modep->code; $res = dolibarr_set_const($db, $name, (GETPOST($name, 'alpha') > 0 ? GETPOST($name, 'alpha') : ''), 'chaine', 0, '', $conf->entity); } From 5c0f0eb5458842fc80c7710e55897cbd5d477636 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 19:55:05 +0100 Subject: [PATCH 21/29] Update setup.php --- htdocs/takepos/admin/setup.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index f47f1145451..973c8cbd9cc 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -264,13 +264,26 @@ print $form->select_company($conf->global->CASHDESK_ID_THIRDPARTY, 'socid', 's.c print ''; if (! empty($conf->banque->enabled)) { - - foreach($paiements as $modep){ + print ''.$langs->trans("CashDeskBankAccountForSell").''; + print ''; + $form->select_comptes($conf->global->CASHDESK_ID_BANKACCOUNT_CASH, 'CASHDESK_ID_BANKACCOUNT_CASH', 0, "courant=2", 1); + print ''; + print ''.$langs->trans("CashDeskBankAccountForCheque").''; + print ''; + $form->select_comptes($conf->global->CASHDESK_ID_BANKACCOUNT_CHEQUE, 'CASHDESK_ID_BANKACCOUNT_CHEQUE', 0, "courant=1", 1); + print ''; + print ''.$langs->trans("CashDeskBankAccountForCB").''; + print ''; + $form->select_comptes($conf->global->CASHDESK_ID_BANKACCOUNT_CB, 'CASHDESK_ID_BANKACCOUNT_CB', 0, "courant=1", 1); + print ''; + + foreach($paiements as $modep) { + if (in_array($modep->code, array('LIQ', 'CB', 'CHQ'))) continue; $name="CASHDESK_ID_BANKACCOUNT_".$modep->code; print ''.$langs->trans("CashDeskBankAccountFor").' '.$langs->trans($modep->libelle).''; print ''; $cour=preg_match('/^LIQ.*/', $modep->code)?2:1; - $form->select_comptes($conf->global->$name, $name, 0, "courant=$cour", 1); + $form->select_comptes($conf->global->$name, $name, 0, "courant=".$cour, 1); print ''; } } From 573bc3187d50050a6a4ea5b2d56aa3afb2cf9332 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 20:01:06 +0100 Subject: [PATCH 22/29] Update invoice.php --- htdocs/takepos/invoice.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index 5c5d1cd1163..8981966b802 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -47,18 +47,22 @@ $invoice = new Facture($db); $ret = $invoice->fetch('', '(PROV-POS-'.$place.')'); if ($ret > 0) $placeid = $invoice->id; - +$paycode = $pay; +if ($pay == 'cash') $paycode = 'LIQ'; +if ($pay == 'card') $paycode = 'CB'; +if ($pay == 'cheque') $paycode = 'CHQ'; + // Retrieve paiementid $sql = "SELECT id FROM ".MAIN_DB_PREFIX."c_paiement"; $sql.= " WHERE entity IN (".getEntity('c_paiement').")"; -$sql.= " AND code = '$pay'"; +$sql.= " AND code = '".$paycode."'"; $resql = $db->query($sql); $codes = $db->fetch_array($resql); $paiementid=$codes[0]; /* -* Actions -*/ + * Actions + */ if ($action == 'valid' && $user->rights->facture->creer) { From 337cb493741bc9832ae9aed923c1f536672e867b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 20:02:18 +0100 Subject: [PATCH 23/29] Update invoice.php --- htdocs/takepos/invoice.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index 8981966b802..4d6299b3c0a 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -66,8 +66,14 @@ $paiementid=$codes[0]; if ($action == 'valid' && $user->rights->facture->creer) { - $accountname="CASHDESK_ID_BANKACCOUNT_".$pay; - $bankaccount=$conf->global->$accountname; + if ($pay == "cash") $bankaccount = $conf->global->CASHDESK_ID_BANKACCOUNT_CASH; + elseif ($pay == "card") $bankaccount = $conf->global->CASHDESK_ID_BANKACCOUNT_CB; + elseif ($pay == "cheque") $bankaccount = $conf->global->CASHDESK_ID_BANKACCOUNT_CHEQUE; + else + { + $accountname="CASHDESK_ID_BANKACCOUNT_".$pay; + $bankaccount=$conf->global->$accountname; + } $now=dol_now(); $invoice = new Facture($db); From 7ff51df8f33b49a3cc5108c8cb1099f892961fa4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 20:09:54 +0100 Subject: [PATCH 24/29] Update takepos.php --- htdocs/takepos/takepos.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/htdocs/takepos/takepos.php b/htdocs/takepos/takepos.php index 422db40ad0a..99e69df423a 100644 --- a/htdocs/takepos/takepos.php +++ b/htdocs/takepos/takepos.php @@ -449,17 +449,22 @@ $( document ).ready(function() {
query($sql); $paiementsModes = array(); -if($resql){ +if ($resql){ while ($obj = $db->fetch_object($resql)){ - $accountname="CASHDESK_ID_BANKACCOUNT_".$obj->code; + $paycode = $obj->code; + if ($paycode == 'LIQ') $paycode = 'CASH'; + if ($paycode == 'CB') $paycode = 'CARD'; + if ($paycode == 'CHQ') $paycode = 'CHEQUE'; + + $accountname="CASHDESK_ID_BANKACCOUNT_".$paycode; if($conf->global->$accountname) array_push($paiementsModes, $obj); } } From f902f7beebeea2ff5f33207eb67fbfcb69a250dc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 20:10:48 +0100 Subject: [PATCH 25/29] Update takepos.php --- htdocs/takepos/takepos.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/takepos/takepos.php b/htdocs/takepos/takepos.php index 99e69df423a..3c49a45754a 100644 --- a/htdocs/takepos/takepos.php +++ b/htdocs/takepos/takepos.php @@ -465,7 +465,7 @@ if ($resql){ if ($paycode == 'CHQ') $paycode = 'CHEQUE'; $accountname="CASHDESK_ID_BANKACCOUNT_".$paycode; - if($conf->global->$accountname) array_push($paiementsModes, $obj); + if (! empty($conf->global->$accountname) && $conf->global->$accountname > 0) array_push($paiementsModes, $obj); } } if (empty($paiementsModes)) { From 6bab56c6bbe1f250c6f190cf4677b4f1c485bd57 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 20:12:32 +0100 Subject: [PATCH 26/29] Update pay.php --- htdocs/takepos/pay.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/htdocs/takepos/pay.php b/htdocs/takepos/pay.php index 9672a97cd8d..1f78d5ce6d2 100644 --- a/htdocs/takepos/pay.php +++ b/htdocs/takepos/pay.php @@ -57,10 +57,15 @@ $sql.= " AND active = 1"; $sql.= " ORDER BY libelle"; $resql = $db->query($sql); $paiements = array(); -if($resql){ - while ($obj = $db->fetch_object($resql)){ - $accountname="CASHDESK_ID_BANKACCOUNT_".$obj->code; - if($conf->global->$accountname) array_push($paiements, $obj); +if ($resql) { + while ($obj = $db->fetch_object($resql)) { + $paycode = $obj->code; + if ($paycode == 'LIQ') $paycode = 'CASH'; + if ($paycode == 'CB') $paycode = 'CARD'; + if ($paycode == 'CHQ') $paycode = 'CHEQUE'; + + $accountname="CASHDESK_ID_BANKACCOUNT_".$paycode; + if ($conf->global->$accountname) array_push($paiements, $obj); } } ?> From 27ae740e829f526b5fc2f83887fa66fba248502f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 20:13:25 +0100 Subject: [PATCH 27/29] Update pay.php --- htdocs/takepos/pay.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/takepos/pay.php b/htdocs/takepos/pay.php index 1f78d5ce6d2..49f252f1224 100644 --- a/htdocs/takepos/pay.php +++ b/htdocs/takepos/pay.php @@ -65,7 +65,7 @@ if ($resql) { if ($paycode == 'CHQ') $paycode = 'CHEQUE'; $accountname="CASHDESK_ID_BANKACCOUNT_".$paycode; - if ($conf->global->$accountname) array_push($paiements, $obj); + if (! empty($conf->global->$accountname) && $conf->global->$accountname > 0) array_push($paiements, $obj); } } ?> From 7b8443c3501e3d396052cf8c97d49c2d353f2ede Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 20:34:09 +0100 Subject: [PATCH 28/29] Fix trans --- htdocs/langs/en_US/cashdesk.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index 940307acb9b..becfa8b9a65 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -56,7 +56,7 @@ BillsCoinsPad=Bills and Coins Pad DolistorePosCategory=TakePOS modules and other POS solutions for Dolibarr TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes -CashDeskBankAccountFor=Account used for payments in +CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration TicketVatGrouped=Group VAT by rate in tickets AutoPrintTickets=Automatically print tickets \ No newline at end of file From fb30b9bb824779185fd7d9a397f8b95f6b2b0856 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Mar 2019 20:51:38 +0100 Subject: [PATCH 29/29] Fix compatibility with old version and with setup of other POS modules --- htdocs/takepos/pay.php | 46 +++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/htdocs/takepos/pay.php b/htdocs/takepos/pay.php index 49f252f1224..a4c7f5680f6 100644 --- a/htdocs/takepos/pay.php +++ b/htdocs/takepos/pay.php @@ -61,9 +61,9 @@ if ($resql) { while ($obj = $db->fetch_object($resql)) { $paycode = $obj->code; if ($paycode == 'LIQ') $paycode = 'CASH'; - if ($paycode == 'CB') $paycode = 'CARD'; + if ($paycode == 'CB') $paycode = 'CB'; if ($paycode == 'CHQ') $paycode = 'CHEQUE'; - + $accountname="CASHDESK_ID_BANKACCOUNT_".$paycode; if (! empty($conf->global->$accountname) && $conf->global->$accountname > 0) array_push($paiements, $obj); } @@ -82,7 +82,7 @@ if ($resql) { else print 'received+=parseFloat(price);'; ?> $('#change1').html(parseFloat(received).toFixed(2)); - if (parseFloat(received)>total_ttc;?>) + if (parseFloat(received) > total_ttc;?>) { var change=parseFloat(parseFloat(received)-total_ttc;?>); $('#change2').html(change.toFixed(2)); @@ -140,33 +140,47 @@ $numpad=$conf->global->TAKEPOS_NUMPAD; -0) : ?> - - + 0) { + $paycode = $paiements[0]->code; + if ($paycode == 'LIQ') $paycode = 'cash'; + if ($paycode == 'CB') $paycode = 'card'; + if ($paycode == 'CHQ') $paycode = 'cheque'; +?> + + - + -1) : ?> - - - 1) { + $paycode = $paiements[1]->code; + if ($paycode == 'LIQ') $paycode = 'cash'; + if ($paycode == 'CB') $paycode = 'card'; + if ($paycode == 'CHQ') $paycode = 'cheque'; +?> + + - + -2) : ?> - - + 2) { + $paycode = $paiements[2]->code; + if ($paycode == 'LIQ') $paycode = 'cash'; + if ($paycode == 'CB') $paycode = 'card'; + if ($paycode == 'CHQ') $paycode = 'cheque'; +?> + + - +