From 7622d3b2fbb8d977868ab44fd2c4f69bc8105a61 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Jan 2017 10:23:24 +0100 Subject: [PATCH 1/4] Fix missing info admin picto. Fix colspan. --- htdocs/comm/card.php | 38 +++++++++++--------- htdocs/core/class/html.formcompany.class.php | 4 +-- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index bd559fb96a3..b501ab7523b 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -484,24 +484,28 @@ if ($id > 0) print ''; print ''; if ($action == 'editlevel') + { $formcompany->form_prospect_level($_SERVER['PHP_SELF'].'?socid='.$object->id,$object->fk_prospectlevel,'prospect_level_id',1); - else - print $object->getLibProspLevel(); - print ""; - print ''; - - // Status - $object->loadCacheOfProspStatus(); - print ''.$langs->trans("StatusProsp").''.$object->getLibProspCommStatut(4, $object->cacheprospectstatus[$object->stcomm_id]['label']); - print '     '; - print '
'; - foreach($object->cacheprospectstatus as $key => $val) - { - $titlealt='default'; - if (! empty($val['code']) && ! in_array($val['code'], array('ST_NO', 'ST_NEVER', 'ST_TODO', 'ST_PEND', 'ST_DONE'))) $titlealt=$val['label']; - if ($object->stcomm_id != $val['id']) print ''.img_action($titlealt,$val['code']).''; - } - print '
'; + } + else + { + print $object->getLibProspLevel(); + } + print ""; + print ''; + + // Status + $object->loadCacheOfProspStatus(); + print ''.$langs->trans("StatusProsp").''.$object->getLibProspCommStatut(4, $object->cacheprospectstatus[$object->stcomm_id]['label']); + print '     '; + print '
'; + foreach($object->cacheprospectstatus as $key => $val) + { + $titlealt='default'; + if (! empty($val['code']) && ! in_array($val['code'], array('ST_NO', 'ST_NEVER', 'ST_TODO', 'ST_PEND', 'ST_DONE'))) $titlealt=$val['label']; + if ($object->stcomm_id != $val['id']) print ''.img_action($titlealt,$val['code']).''; + } + print '
'; print ""; } diff --git a/htdocs/core/class/html.formcompany.class.php b/htdocs/core/class/html.formcompany.class.php index 35fcfb4c25b..bcff0981a70 100644 --- a/htdocs/core/class/html.formcompany.class.php +++ b/htdocs/core/class/html.formcompany.class.php @@ -138,7 +138,7 @@ class FormCompany */ function form_prospect_level($page, $selected='', $htmlname='prospect_level_id', $empty=0) { - global $langs; + global $user, $langs; print '
'; print ''; @@ -171,7 +171,7 @@ class FormCompany print Form::selectarray($htmlname, $options, $selected); } else dol_print_error($this->db); - + if (! empty($htmlname) && $user->admin) print ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print ''; print '
'; } From 1878647d26ec38e8d53581da59abe18c475979cd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Jan 2017 20:54:52 +0100 Subject: [PATCH 2/4] NEW Add statistics on supplier tab. --- htdocs/comm/card.php | 4 +- htdocs/compta/facture/class/facture.class.php | 46 ---------- htdocs/core/class/commoninvoice.class.php | 60 +++++++++++++ htdocs/fourn/card.php | 86 ++++++++++++++++++- htdocs/langs/en_US/companies.lang | 1 + htdocs/societe/class/societe.class.php | 39 +++++++-- 6 files changed, 177 insertions(+), 59 deletions(-) diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index b501ab7523b..bfd90b6909b 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -579,7 +579,7 @@ if ($id > 0) $warn = ''; if ($object->outstanding_limit != '' && $object->outstanding_limit < $outstandingOpened) { - $warn = img_warning($langs->trans("OutstandingBillReached")); + $warn = ' '.img_warning($langs->trans("OutstandingBillReached")); } $text=$langs->trans("CurrentOutstandingBill"); $link=DOL_URL_ROOT.'/compta/recap-compta.php?socid='.$object->id; @@ -587,7 +587,7 @@ if ($id > 0) if ($link) $boxstat.=''; $boxstat.='
'; $boxstat.=''.img_object("",$icon).' '.$text.'
'; - $boxstat.=''.price($outstandingOpened).$warn.''; + $boxstat.=''.price($outstandingOpened, 1, $langs, 1, -1, -1, $conf->currency).$warn.''; $boxstat.='
'; if ($link) $boxstat.='
'; } diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index aef95d1b0a9..72e81fd252e 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -3120,52 +3120,6 @@ class Facture extends CommonInvoice } - /** - * Return amount (with tax) of all credit notes and deposits invoices used by invoice - * - * @param int $multicurrency Return multicurrency_amount instead of amount - * @return int <0 if KO, Sum of credit notes and deposits amount otherwise - */ - function getSumCreditNotesUsed($multicurrency=0) - { - require_once DOL_DOCUMENT_ROOT.'/core/class/discount.class.php'; - - $discountstatic=new DiscountAbsolute($this->db); - $result=$discountstatic->getSumCreditNotesUsed($this, $multicurrency); - if ($result >= 0) - { - return $result; - } - else - { - $this->error=$discountstatic->error; - return -1; - } - } - - /** - * Return amount (with tax) of all deposits invoices used by invoice - * - * @param int $multicurrency Return multicurrency_amount instead of amount - * @return int <0 if KO, Sum of deposits amount otherwise - */ - function getSumDepositsUsed($multicurrency=0) - { - require_once DOL_DOCUMENT_ROOT.'/core/class/discount.class.php'; - - $discountstatic=new DiscountAbsolute($this->db); - $result=$discountstatic->getSumDepositsUsed($this, $multicurrency); - if ($result >= 0) - { - return $result; - } - else - { - $this->error=$discountstatic->error; - return -1; - } - } - /** * Return next reference of customer invoice not already used (or last reference) * according to numbering module defined into constant FACTURE_ADDON diff --git a/htdocs/core/class/commoninvoice.class.php b/htdocs/core/class/commoninvoice.class.php index 05cf0b4c3cb..4822ad7d0d8 100644 --- a/htdocs/core/class/commoninvoice.class.php +++ b/htdocs/core/class/commoninvoice.class.php @@ -88,6 +88,7 @@ abstract class CommonInvoice extends CommonObject */ const STATUS_ABANDONED = 3; + /** * Return amount of payments already done * @@ -124,6 +125,65 @@ abstract class CommonInvoice extends CommonObject } } + /** + * Return amount (with tax) of all credit notes and deposits invoices used by invoice + * + * @param int $multicurrency Return multicurrency_amount instead of amount + * @return int <0 if KO, Sum of credit notes and deposits amount otherwise + */ + function getSumCreditNotesUsed($multicurrency=0) + { + if ($this->element == 'facture_fourn' || $this->element == 'invoice_supplier') + { + // TODO + return 0; + } + + require_once DOL_DOCUMENT_ROOT.'/core/class/discount.class.php'; + + $discountstatic=new DiscountAbsolute($this->db); + $result=$discountstatic->getSumCreditNotesUsed($this, $multicurrency); + if ($result >= 0) + { + return $result; + } + else + { + $this->error=$discountstatic->error; + return -1; + } + } + + /** + * Return amount (with tax) of all deposits invoices used by invoice + * + * @param int $multicurrency Return multicurrency_amount instead of amount + * @return int <0 if KO, Sum of deposits amount otherwise + */ + function getSumDepositsUsed($multicurrency=0) + { + if ($this->element == 'facture_fourn' || $this->element == 'invoice_supplier') + { + // TODO + return 0; + } + + require_once DOL_DOCUMENT_ROOT.'/core/class/discount.class.php'; + + $discountstatic=new DiscountAbsolute($this->db); + $result=$discountstatic->getSumDepositsUsed($this, $multicurrency); + if ($result >= 0) + { + return $result; + } + else + { + $this->error=$discountstatic->error; + return -1; + } + } + + /** * Renvoie tableau des ids de facture avoir issus de la facture * diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index 5faf915f329..6b94c29054d 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -277,12 +277,94 @@ if ($object->id > 0) print '
'; - + $boxstat = ''; + + // Nbre max d'elements des petites listes + $MAXLIST=$conf->global->MAIN_SIZE_SHORTLIST_LIMIT; + + // Lien recap + $boxstat.='
'; + $boxstat.=''; + $boxstat.=''; + $boxstat.='
'; + + if ($conf->supplier_proposal->enabled) + { + // Box proposals + $tmp = $object->getOutstandingProposals('supplier'); + $outstandingOpened=$tmp['opened']; + $outstandingTotal=$tmp['total_ht']; + $outstandingTotalIncTax=$tmp['total_ttc']; + $text=$langs->trans("OverAllSupplierProposals"); + $link=''; + $icon='bill'; + if ($link) $boxstat.=''; + $boxstat.='
'; + $boxstat.=''.img_object("",$icon).' '.$text.'
'; + $boxstat.=''.price($outstandingTotal, 1, $langs, 1, -1, -1, $conf->currency).''; + $boxstat.='
'; + if ($link) $boxstat.='
'; + } + + if ($conf->fournisseur->enabled) + { + // Box proposals + $tmp = $object->getOutstandingOrders('supplier'); + $outstandingOpened=$tmp['opened']; + $outstandingTotal=$tmp['total_ht']; + $outstandingTotalIncTax=$tmp['total_ttc']; + $text=$langs->trans("OverAllOrders"); + $link=''; + $icon='bill'; + if ($link) $boxstat.=''; + $boxstat.='
'; + $boxstat.=''.img_object("",$icon).' '.$text.'
'; + $boxstat.=''.price($outstandingTotal, 1, $langs, 1, -1, -1, $conf->currency).''; + $boxstat.='
'; + if ($link) $boxstat.='
'; + } + + if ($conf->fournisseur->enabled) + { + $tmp = $object->getOutstandingBills('supplier'); + $outstandingOpened=$tmp['opened']; + $outstandingTotal=$tmp['total_ht']; + $outstandingTotalIncTax=$tmp['total_ttc']; + + $text=$langs->trans("OverAllInvoices"); + $link=''; + $icon='bill'; + if ($link) $boxstat.=''; + $boxstat.='
'; + $boxstat.=''.img_object("",$icon).' '.$text.'
'; + $boxstat.=''.price($outstandingTotal, 1, $langs, 1, -1, -1, $conf->currency).''; + $boxstat.='
'; + if ($link) $boxstat.='
'; + + // Box outstanding bill + $text=$langs->trans("CurrentOutstandingBill"); + $link=DOL_URL_ROOT.'/fourn/recap-fourn.php?socid='.$object->id; + $icon='bill'; + if ($link) $boxstat.=''; + $boxstat.='
'; + $boxstat.=''.img_object("",$icon).' '.$text.'
'; + $boxstat.=''.price($outstandingOpened, 1, $langs, 1, -1, -1, $conf->currency).$warn.''; + $boxstat.='
'; + if ($link) $boxstat.='
'; + } + + $boxstat.='
'; + $boxstat.='
'; + + print $boxstat; + + $var=true; $MAXLIST=$conf->global->MAIN_SIZE_SHORTLIST_LIMIT; // Lien recap + /* print ''; print ''; print '
'; @@ -290,7 +372,7 @@ if ($object->id > 0) print ''; print '
'.$langs->trans("Summary").'
'; print '
'; - + */ /* * List of products diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index 838f538a273..bd6846bf694 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -81,6 +81,7 @@ PaymentBankAccount=Payment bank account OverAllProposals=Total proposals OverAllOrders=Total orders OverAllInvoices=Total invoices +OverAllSupplierProposals=Total price requests ##### Local Taxes ##### LocalTax1IsUsed=Use second tax LocalTax1IsUsedES= RE is used diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 5c5ca9da3f7..05678ddb821 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -3341,11 +3341,15 @@ class Societe extends CommonObject /** * Return amount of order not paid and total * - * @return array array('opened'=>Amount, 'total'=>Total amount) + * @param string $mode 'customer' or 'supplier' + * @return array array('opened'=>Amount, 'total'=>Total amount) */ - function getOutstandingProposals() + function getOutstandingProposals($mode='customer') { - $sql = "SELECT rowid, total_ht, total as total_ttc, fk_statut FROM ".MAIN_DB_PREFIX."propal as f"; + $table='propal'; + if ($mode == 'supplier') $table = 'supplier_proposal'; + + $sql = "SELECT rowid, total_ht, total as total_ttc, fk_statut FROM ".MAIN_DB_PREFIX.$table." as f"; $sql .= " WHERE fk_soc = ". $this->id; dol_syslog("getOutstandingProposals", LOG_DEBUG); @@ -3372,11 +3376,15 @@ class Societe extends CommonObject /** * Return amount of order not paid and total * + * @param string $mode 'customer' or 'supplier' * @return array array('opened'=>Amount, 'total'=>Total amount) */ - function getOutstandingOrders() + function getOutstandingOrders($mode='customer') { - $sql = "SELECT rowid, total_ht, total_ttc, fk_statut FROM ".MAIN_DB_PREFIX."commande as f"; + $table='commande'; + if ($mode == 'supplier') $table = 'commande_fournisseur'; + + $sql = "SELECT rowid, total_ht, total_ttc, fk_statut FROM ".MAIN_DB_PREFIX.$table." as f"; $sql .= " WHERE fk_soc = ". $this->id; dol_syslog("getOutstandingOrders", LOG_DEBUG); @@ -3403,10 +3411,14 @@ class Societe extends CommonObject /** * Return amount of bill not paid and total * + * @param string $mode 'customer' or 'supplier' * @return array array('opened'=>Amount, 'total'=>Total amount) */ - function getOutstandingBills() + function getOutstandingBills($mode='customer') { + $table='facture'; + if ($mode == 'supplier') $table = 'facture_fourn'; + /* Accurate value of remain to pay is to sum remaintopay for each invoice $paiement = $invoice->getSommePaiement(); $creditnotes=$invoice->getSumCreditNotesUsed(); @@ -3414,7 +3426,8 @@ class Societe extends CommonObject $alreadypayed=price2num($paiement + $creditnotes + $deposits,'MT'); $remaintopay=price2num($invoice->total_ttc - $paiement - $creditnotes - $deposits,'MT'); */ - $sql = "SELECT rowid, total as total_ht, total_ttc, paye, fk_statut, close_code FROM ".MAIN_DB_PREFIX."facture as f"; + if ($mode == 'supplier') $sql = "SELECT rowid, total_ht as total_ht, total_ttc, paye, fk_statut, close_code FROM ".MAIN_DB_PREFIX.$table." as f"; + else $sql = "SELECT rowid, total as total_ht, total_ttc, paye, fk_statut, close_code FROM ".MAIN_DB_PREFIX.$table." as f"; $sql .= " WHERE fk_soc = ". $this->id; dol_syslog("getOutstandingBills", LOG_DEBUG); @@ -3424,8 +3437,16 @@ class Societe extends CommonObject $outstandingOpened = 0; $outstandingTotal = 0; $outstandingTotalIncTax = 0; - require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; - $tmpobject=new Facture($this->db); + if ($mode == 'supplier') + { + require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; + $tmpobject=new FactureFournisseur($this->db); + } + else + { + require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; + $tmpobject=new Facture($this->db); + } while($obj=$this->db->fetch_object($resql)) { $tmpobject->id=$obj->rowid; if ($obj->fk_statut != 0 // Not a draft From f591e2b1b14efe417b8e314d62e9ec75647a63e7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 24 Jan 2017 14:29:05 +0100 Subject: [PATCH 3/4] FIX Combo list of VAT is wrong on POS --- htdocs/cashdesk/tpl/facturation1.tpl.php | 24 +++++++----------------- htdocs/core/class/html.form.class.php | 22 +++++++++++++--------- 2 files changed, 20 insertions(+), 26 deletions(-) diff --git a/htdocs/cashdesk/tpl/facturation1.tpl.php b/htdocs/cashdesk/tpl/facturation1.tpl.php index 208727a7644..8f74cf98626 100644 --- a/htdocs/cashdesk/tpl/facturation1.tpl.php +++ b/htdocs/cashdesk/tpl/facturation1.tpl.php @@ -125,23 +125,13 @@ $langs->load("cashdesk");
- - + tva(); // Try to get a previously entered VAT rowid. First time, this will return empty. + $buyer = new Societe($db); + if ($_SESSION["CASHDESK_ID_THIRDPARTY"] > 0) $buyer->fetch($_SESSION["CASHDESK_ID_THIRDPARTY"]); + + echo $form->load_tva('selTva', (isset($_POST["selTva"])?GETPOST("selTva",'alpha',2):-1), $mysoc, $buyer, 0, 0, '', false, -1); + ?>
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 22a397fb4e7..bc761b2d2b1 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4257,7 +4257,7 @@ class Form dol_syslog(__METHOD__, LOG_DEBUG); - $sql = "SELECT DISTINCT t.code, t.taux, t.recuperableonly"; + $sql = "SELECT DISTINCT t.rowid, t.code, t.taux, t.recuperableonly"; $sql.= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c"; $sql.= " WHERE t.fk_pays = c.rowid"; $sql.= " AND t.active > 0"; @@ -4273,6 +4273,7 @@ class Form for ($i = 0; $i < $num; $i++) { $obj = $this->db->fetch_object($resql); + $this->cache_vatrates[$i]['rowid'] = $obj->rowid; $this->cache_vatrates[$i]['code'] = $obj->code; $this->cache_vatrates[$i]['txtva'] = $obj->taux; $this->cache_vatrates[$i]['libtva'] = $obj->taux.'%'.($obj->code?' ('.$obj->code.')':''); // Label must contains only 0-9 , . % or * @@ -4302,9 +4303,9 @@ class Form * @param float|string $selectedrate Force preselected vat rate. Can be '8.5' or '8.5 (NOO)' for example. Use '' for no forcing. * @param Societe $societe_vendeuse Thirdparty seller * @param Societe $societe_acheteuse Thirdparty buyer - * @param int $idprod Id product + * @param int $idprod Id product. O if unknown of NA. * @param int $info_bits Miscellaneous information on line (1 for NPR) - * @param int $type ''=Unknown, 0=Product, 1=Service (Used if idprod not defined) + * @param int|string $type ''=Unknown, 0=Product, 1=Service (Used if idprod not defined) * Si vendeur non assujeti a TVA, TVA par defaut=0. Fin de regle. * Si le (pays vendeur = pays acheteur) alors la TVA par defaut=TVA du produit vendu. Fin de regle. * Si (vendeur et acheteur dans Communaute europeenne) et bien vendu = moyen de transports neuf (auto, bateau, avion), TVA par defaut=0 (La TVA doit etre paye par l'acheteur au centre d'impots de son pays et non au vendeur). Fin de regle. @@ -4312,10 +4313,10 @@ class Form * Si vendeur et acheteur dans Communauté européenne et acheteur= entreprise alors TVA par défaut=0. Fin de règle. * Sinon la TVA proposee par defaut=0. Fin de regle. * @param bool $options_only Return HTML options lines only (for ajax treatment) - * @param int $addcode Add code into key in select list + * @param int $mode 1=Add code into key in select list * @return string */ - function load_tva($htmlname='tauxtva', $selectedrate='', $societe_vendeuse='', $societe_acheteuse='', $idprod=0, $info_bits=0, $type='', $options_only=false, $addcode=0) + function load_tva($htmlname='tauxtva', $selectedrate='', $societe_vendeuse='', $societe_acheteuse='', $idprod=0, $info_bits=0, $type='', $options_only=false, $mode=0) { global $langs,$conf,$mysoc; @@ -4427,10 +4428,13 @@ class Form // Keep only 0 if seller is not subject to VAT if ($disabled && $rate['txtva'] != 0) continue; - $return.= '