From 1878647d26ec38e8d53581da59abe18c475979cd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Jan 2017 20:54:52 +0100 Subject: [PATCH] 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