NEW Add option "Show price on the generated documents for receptions"

This commit is contained in:
Laurent Destailleur 2022-09-23 09:21:07 +02:00
parent 39e3162a81
commit 3e246f4399
5 changed files with 89 additions and 40 deletions

View File

@ -104,7 +104,7 @@ print '<input type="hidden" name="token" value="'.newToken().'">';
print '<input type="hidden" name="action" value="update">';
if (isModEnabled('propal')) {
print load_fiche_titre($langs->trans("Proposal"), '', '');
print load_fiche_titre($langs->trans("Proposal"), '', 'proposal');
print '<div class="div-table-responsive-no-min">';
print '<table summary="more" class="noborder centpercent">';
@ -127,7 +127,7 @@ if (isModEnabled('propal')) {
if (isModEnabled('facture')) {
print load_fiche_titre($langs->trans("Invoices"), '', '');
print load_fiche_titre($langs->trans("Invoices"), '', 'bill');
print '<div class="div-table-responsive-no-min">';
print '<table summary="more" class="noborder centpercent">';
@ -170,6 +170,42 @@ if (isModEnabled('facture')) {
print '</div>';
}
if (isModEnabled('reception')) {
print load_fiche_titre($langs->trans("Receptions"), '', 'reception');
print '<div class="div-table-responsive-no-min">';
print '<table summary="more" class="noborder centpercent">';
print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameter").'</td><td width="200px">'.$langs->trans("Value").'</td></tr>';
print '<tr class="oddeven"><td>';
print $langs->trans("RECEPTION_PDF_HIDE_ORDERED");
print '</td><td>';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('RECEPTION_PDF_HIDE_ORDERED');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("RECEPTION_PDF_HIDE_ORDERED", $arrval, $conf->global->RECEPTION_PDF_HIDE_ORDERED);
}
print '</td></tr>';
print '<tr class="oddeven"><td>';
print $langs->trans("MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT");
print '</td><td>';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT", $arrval, $conf->global->MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT);
}
print '</td></tr>';
print '</table>';
print '</div>';
}
print '<br><div class="center">';
print '<input class="button button-save" type="submit" name="save" value="'.$langs->trans("Save").'">';
print '</div>';

View File

@ -3977,7 +3977,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
'label', 'language', 'line', 'link', 'list', 'list-alt', 'listlight', 'loan', 'lot', 'long-arrow-alt-right',
'margin', 'map-marker-alt', 'member', 'meeting', 'money-bill-alt', 'movement', 'mrp', 'note', 'next',
'off', 'on', 'order',
'paiment', 'paragraph', 'play', 'pdf', 'phone', 'phoning', 'phoning_mobile', 'phoning_fax', 'playdisabled', 'previous', 'poll', 'pos', 'printer', 'product', 'propal', 'puce',
'paiment', 'paragraph', 'play', 'pdf', 'phone', 'phoning', 'phoning_mobile', 'phoning_fax', 'playdisabled', 'previous', 'poll', 'pos', 'printer', 'product', 'propal', 'proposal', 'puce',
'stock', 'resize', 'service', 'stats', 'trip',
'security', 'setup', 'share-alt', 'sign-out', 'split', 'stripe', 'stripe-s', 'switch_off', 'switch_on', 'switch_on_red', 'tools', 'unlink', 'uparrow', 'user', 'user-tie', 'vcard', 'wrench',
'github', 'google', 'jabber', 'skype', 'twitter', 'facebook', 'linkedin', 'instagram', 'snapchat', 'youtube', 'google-plus-g', 'whatsapp',
@ -4029,7 +4029,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
'intervention'=>'ambulance', 'invoice'=>'file-invoice-dollar', 'currency'=>'dollar-sign', 'multicurrency'=>'dollar-sign', 'order'=>'file-invoice',
'error'=>'exclamation-triangle', 'warning'=>'exclamation-triangle',
'other'=>'square',
'playdisabled'=>'play', 'pdf'=>'file-pdf', 'poll'=>'check-double', 'pos'=>'cash-register', 'preview'=>'binoculars', 'project'=>'project-diagram', 'projectpub'=>'project-diagram', 'projecttask'=>'tasks', 'propal'=>'file-signature',
'playdisabled'=>'play', 'pdf'=>'file-pdf', 'poll'=>'check-double', 'pos'=>'cash-register', 'preview'=>'binoculars', 'project'=>'project-diagram', 'projectpub'=>'project-diagram', 'projecttask'=>'tasks', 'propal'=>'file-signature', 'proposal'=>'file-signature',
'partnership'=>'handshake', 'payment'=>'money-check-alt', 'payment_vat'=>'money-check-alt', 'phoning'=>'phone', 'phoning_mobile'=>'mobile-alt', 'phoning_fax'=>'fax', 'previous'=>'arrow-alt-circle-left', 'printer'=>'print', 'product'=>'cube', 'puce'=>'angle-right',
'recent' => 'question', 'reception'=>'dolly', 'recruitmentjobposition'=>'id-card-alt', 'recruitmentcandidature'=>'id-badge',
'resize'=>'crop', 'supplier_order'=>'dol-order_supplier', 'supplier_proposal'=>'file-signature',
@ -4111,7 +4111,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
'holiday'=>'infobox-holiday', 'info'=>'opacityhigh', 'invoice'=>'infobox-commande',
'knowledgemanagement'=>'infobox-contrat rotate90', 'loan'=>'infobox-bank_account',
'payment'=>'infobox-bank_account', 'payment_vat'=>'infobox-bank_account', 'poll'=>'infobox-adherent', 'pos'=>'infobox-bank_account', 'project'=>'infobox-project', 'projecttask'=>'infobox-project',
'propal'=>'infobox-propal', 'private'=>'infobox-project',
'propal'=>'infobox-propal', 'proposal'=>'infobox-propal','private'=>'infobox-project',
'reception'=>'flip', 'recruitmentjobposition'=>'infobox-adherent', 'recruitmentcandidature'=>'infobox-adherent',
'resource'=>'infobox-action',
'salary'=>'infobox-bank_account', 'shipment'=>'infobox-commande', 'supplier_invoice'=>'infobox-order_supplier', 'supplier_invoicea'=>'infobox-order_supplier', 'supplier_invoiced'=>'infobox-order_supplier',

View File

@ -353,6 +353,8 @@ class pdf_squille extends ModelePdfReception
$nexY = $tab_top + 7;
$fk_commandefourndet = 0;
$totalOrdered = 0;
$totalAmount = 0;
// Loop on each lines
for ($i = 0; $i < $nblines; $i++) {
$curY = $nexY;
@ -479,6 +481,7 @@ class pdf_squille extends ModelePdfReception
$pdf->SetFont('', '', $default_font_size - 1); // On repositionne la police par defaut
// Description
$pdf->SetXY($this->posxweightvol, $curY);
$weighttxt = '';
if ($object->lines[$i]->fk_product_type == 0 && $object->lines[$i]->product->weight) {
@ -492,6 +495,7 @@ class pdf_squille extends ModelePdfReception
$pdf->writeHTMLCell($this->posxqtyordered - $this->posxweightvol + 2, 3, $this->posxweightvol - 1, $curY, $weighttxt.(($weighttxt && $voltxt) ? '<br>' : '').$voltxt, 0, 0, false, true, 'C');
//$pdf->MultiCell(($this->posxqtyordered - $this->posxweightvol), 3, $weighttxt.(($weighttxt && $voltxt)?'<br>':'').$voltxt,'','C');
// Qty ordered
if (empty($conf->global->RECEPTION_PDF_HIDE_ORDERED)) {
$pdf->SetXY($this->posxqtyordered, $curY);
if ($object->lines[$i]->fk_commandefourndet != $fk_commandefourndet) {
@ -501,15 +505,20 @@ class pdf_squille extends ModelePdfReception
$fk_commandefourndet = $object->lines[$i]->fk_commandefourndet;
}
// Qty received
$pdf->SetXY($this->posxqtytoship, $curY);
$pdf->MultiCell(($this->posxpuht - $this->posxqtytoship), 3, $object->lines[$i]->qty, '', 'C');
// Amount
if (!empty($conf->global->MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT)) {
$pdf->SetXY($this->posxpuht, $curY);
$pdf->MultiCell(($this->posxtotalht - $this->posxpuht - 1), 3, price($object->lines[$i]->subprice, 0, $outputlangs), '', 'R');
$amountreceived = price2num($object->lines[$i]->subprice * $object->lines[$i]->qty, 'MT');
$pdf->SetXY($this->posxtotalht, $curY);
$pdf->MultiCell(($this->page_largeur - $this->marge_droite - $this->posxtotalht), 3, price($object->lines[$i]->total_ht, 0, $outputlangs), '', 'R');
$pdf->MultiCell(($this->page_largeur - $this->marge_droite - $this->posxtotalht), 3, price($amountreceived, 0, $outputlangs), '', 'R');
$totalAmount += $amountreceived;
}
$nexY += 3;
@ -568,7 +577,7 @@ class pdf_squille extends ModelePdfReception
}
// Affiche zone totaux
$posy = $this->_tableau_tot($pdf, $object, 0, $bottomlasttab, $outputlangs, $totalOrdered);
$posy = $this->_tableau_tot($pdf, $object, 0, $bottomlasttab, $outputlangs, $totalOrdered, $totalAmount);
// Pied de page
$this->_pagefoot($pdf, $object, $outputlangs);
@ -616,9 +625,10 @@ class pdf_squille extends ModelePdfReception
* @param int $posy Position depart
* @param Translate $outputlangs Objet langs
* @param int $totalOrdered Total ordered
* @param int $totalAmount Total amount
* @return int Position pour suite
*/
protected function _tableau_tot(&$pdf, $object, $deja_regle, $posy, $outputlangs, $totalOrdered)
protected function _tableau_tot(&$pdf, $object, $deja_regle, $posy, $outputlangs, $totalOrdered, $totalAmount = 0)
{
// phpcs:enable
global $conf, $mysoc;
@ -680,41 +690,46 @@ class pdf_squille extends ModelePdfReception
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("Total"), 0, 'L', 1);
$index2 = 0;
// Total Weight
if ($totalWeighttoshow) {
$pdf->SetXY($this->posxweightvol, $tab2_top + $tab2_hl * ($index + $index2));
$pdf->MultiCell(($this->posxqtyordered - $this->posxweightvol), $tab2_hl, $totalWeighttoshow, 0, 'C', 1);
$index2++;
}
if ($totalVolumetoshow) {
$pdf->SetXY($this->posxweightvol, $tab2_top + $tab2_hl * ($index + $index2));
$pdf->MultiCell(($this->posxqtyordered - $this->posxweightvol), $tab2_hl, $totalVolumetoshow, 0, 'C', 1);
$index2++;
}
// Total qty ordered
if (empty($conf->global->RECEPTION_PDF_HIDE_ORDERED)) {
$pdf->SetXY($this->posxqtyordered, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($this->posxqtytoship - $this->posxqtyordered, $tab2_hl, $totalOrdered, 0, 'C', 1);
}
// Total received
$pdf->SetXY($this->posxqtytoship, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($this->posxpuht - $this->posxqtytoship, $tab2_hl, $totalToShip, 0, 'C', 1);
// Amount
if (!empty($conf->global->MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT)) {
$pdf->SetXY($this->posxpuht, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($this->posxtotalht - $this->posxpuht, $tab2_hl, '', 0, 'C', 1);
$pdf->SetXY($this->posxtotalht, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxtotalht, $tab2_hl, price($object->total_ht, 0, $outputlangs), 0, 'C', 1);
}
// Total Weight
if ($totalWeighttoshow) {
$pdf->SetXY($this->posxweightvol, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell(($this->posxqtyordered - $this->posxweightvol), $tab2_hl, $totalWeighttoshow, 0, 'C', 1);
$index++;
}
if ($totalVolumetoshow) {
$pdf->SetXY($this->posxweightvol, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell(($this->posxqtyordered - $this->posxweightvol), $tab2_hl, $totalVolumetoshow, 0, 'C', 1);
$index++;
}
if (!$totalWeighttoshow && !$totalVolumetoshow) {
$index++;
$pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxtotalht, $tab2_hl, price($totalAmount, 0, $outputlangs), 0, 'C', 1);
}
$pdf->SetTextColor(0, 0, 0);
$index++;
if ($index2) {
$index++;
}
return ($tab2_top + ($tab2_hl * $index));
}
@ -754,6 +769,7 @@ class pdf_squille extends ModelePdfReception
$pdf->SetDrawColor(128, 128, 128);
$pdf->SetFont('', '', $default_font_size - 1);
// Description
if (empty($hidetop)) {
$pdf->line($this->marge_gauche, $tab_top + 5, $this->page_largeur - $this->marge_droite, $tab_top + 5);
@ -761,12 +777,14 @@ class pdf_squille extends ModelePdfReception
$pdf->MultiCell($this->posxqtyordered - $this->posxdesc, 2, $outputlangs->transnoentities("Description"), '', 'L');
}
// Volume / Weight
$pdf->line($this->posxweightvol - 1, $tab_top, $this->posxweightvol - 1, $tab_top + $tab_height);
if (empty($hidetop)) {
$pdf->SetXY($this->posxweightvol - 1, $tab_top + 1);
$pdf->MultiCell(($this->posxqtyordered - $this->posxweightvol), 2, $outputlangs->transnoentities("WeightVolShort"), '', 'C');
}
// Qty ordered
if (empty($conf->global->RECEPTION_PDF_HIDE_ORDERED)) {
$pdf->line($this->posxqtyordered - 1, $tab_top, $this->posxqtyordered - 1, $tab_top + $tab_height);
if (empty($hidetop)) {
@ -775,6 +793,7 @@ class pdf_squille extends ModelePdfReception
}
}
// Qty reception
$pdf->line($this->posxqtytoship - 1, $tab_top, $this->posxqtytoship - 1, $tab_top + $tab_height);
if (empty($hidetop)) {
$pdf->SetXY($this->posxqtytoship, $tab_top + 1);
@ -792,6 +811,7 @@ class pdf_squille extends ModelePdfReception
}
}
// Amount
if (!empty($conf->global->MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT)) {
$pdf->line($this->posxpuht - 1, $tab_top, $this->posxpuht - 1, $tab_top + $tab_height);
if (empty($hidetop)) {

View File

@ -2319,3 +2319,5 @@ CssOnList=Css on list pages
HelpCssOnEditDesc=The Css used when editing the field.<br>Example: "minwiwdth100 maxwidth500 widthcentpercentminusx"
HelpCssOnViewDesc=The Css used when viewing the field.
HelpCssOnListDesc=The Css used when field is inside a list table.<br>Example: "tdoverflowmax200"
RECEPTION_PDF_HIDE_ORDERED=Hide the quantity ordered on the generated documents for receptions
MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Show the price on the generated documents for receptions

View File

@ -71,12 +71,6 @@ class Reception extends CommonObject
public $socid;
public $ref_supplier;
/**
* @var int Ref int
* @deprecated
*/
public $ref_int;
public $brouillon;
public $entrepot_id;
public $tracking_number;
@ -365,13 +359,10 @@ class Reception extends CommonObject
* @param int $id Id of object to load
* @param string $ref Ref of object
* @param string $ref_ext External reference of object
* @param string $notused Internal reference of other object
* @return int >0 if OK, 0 if not found, <0 if KO
*/
public function fetch($id, $ref = '', $ref_ext = '', $notused = '')
public function fetch($id, $ref = '', $ref_ext = '')
{
global $conf;
// Check parameters
if (empty($id) && empty($ref) && empty($ref_ext)) {
return -1;
@ -398,9 +389,6 @@ class Reception extends CommonObject
if ($ref_ext) {
$sql .= " AND e.ref_ext='".$this->db->escape($ref_ext)."'";
}
if ($notused) {
$sql .= " AND e.ref_int='".$this->db->escape($notused)."'";
}
dol_syslog(get_class($this)."::fetch", LOG_DEBUG);
$result = $this->db->query($sql);
@ -1181,7 +1169,7 @@ class Reception extends CommonObject
// TODO Remove or keep this ?
$line->fetch_product();
$sql_commfourndet = 'SELECT qty, ref, label, description, tva_tx, vat_src_code, subprice, multicurrency_subprice, remise_percent';
$sql_commfourndet = 'SELECT qty, ref, label, description, tva_tx, vat_src_code, subprice, multicurrency_subprice, remise_percent, total_ht, total_ttc, total_tva';
$sql_commfourndet .= ' FROM '.MAIN_DB_PREFIX.'commande_fournisseurdet';
$sql_commfourndet .= ' WHERE rowid = '.((int) $line->fk_commandefourndet);
$sql_commfourndet .= ' ORDER BY rang';
@ -1199,6 +1187,9 @@ class Reception extends CommonObject
$line->remise_percent = $obj->remise_percent;
$line->label = !empty($obj->label) ? $obj->label : $line->product->label;
$line->ref_supplier = $obj->ref;
$line->total_ht = $obj->total_ht;
$line->total_ttc = $obj->total_ttc;
$line->total_tva = $obj->total_tva;
} else {
$line->qty_asked = 0;
$line->description = '';