diff --git a/htdocs/accountancy/class/accountancyexport.class.php b/htdocs/accountancy/class/accountancyexport.class.php index 03f62a7f83a..a310700cee4 100644 --- a/htdocs/accountancy/class/accountancyexport.class.php +++ b/htdocs/accountancy/class/accountancyexport.class.php @@ -1,19 +1,19 @@ - * Copyright (C) 2014 Juanjo Menent - * Copyright (C) 2015 Florian Henry - * Copyright (C) 2015 Raphaël Doursenaud - * Copyright (C) 2016 Pierre-Henry Favre - * Copyright (C) 2016-2024 Alexandre Spangaro - * Copyright (C) 2022 Lionel Vessiller - * Copyright (C) 2013-2017 Olivier Geffroy - * Copyright (C) 2017 Elarifr. Ari Elbaz - * Copyright (C) 2017-2024 Frédéric France - * Copyright (C) 2017 André Schild - * Copyright (C) 2020 Guillaume Alexandre - * Copyright (C) 2022 Joachim Kueter - * Copyright (C) 2022 Progiseize + * Copyright (C) 2007-2012 Laurent Destailleur + * Copyright (C) 2014 Juanjo Menent + * Copyright (C) 2015 Florian Henry + * Copyright (C) 2015 Raphaël Doursenaud + * Copyright (C) 2016 Pierre-Henry Favre + * Copyright (C) 2016-2025 Alexandre Spangaro + * Copyright (C) 2022 Lionel Vessiller + * Copyright (C) 2013-2017 Olivier Geffroy + * Copyright (C) 2017 Elarifr. Ari Elbaz + * Copyright (C) 2017-2024 Frédéric France + * Copyright (C) 2017 André Schild + * Copyright (C) 2020 Guillaume Alexandre + * Copyright (C) 2022 Joachim Kueter + * Copyright (C) 2022 Progiseize * Copyright (C) 2024 MDW * * This program is free software; you can redistribute it and/or modify @@ -1501,14 +1501,20 @@ class AccountancyExport $objectDirPath = ''; $objectFileName = dol_sanitizeFileName($line->doc_ref); if ($line->doc_type == 'customer_invoice') { - $objectDirPath = !empty($conf->invoice->multidir_output[$conf->entity]) ? $conf->invoice->multidir_output[$conf->entity] : $conf->invoice->dir_output; + if (getDolGlobalInt('ACCOUNTING_EXPORT_REMOVE_INVOICE_SOURCE_FILE')) { + $objectDirPath = !empty($conf->invoice->multidir_output[$conf->entity]) ? $conf->invoice->multidir_output[$conf->entity] : $conf->invoice->dir_output; + } } elseif ($line->doc_type == 'expense_report') { - $objectDirPath = !empty($conf->expensereport->multidir_output[$conf->entity]) ? $conf->expensereport->multidir_output[$conf->entity] : $conf->expensereport->dir_output; + if (getDolGlobalInt('ACCOUNTING_EXPORT_REMOVE_EXPENSEREPORT_SOURCE_FILE')) { + $objectDirPath = !empty($conf->expensereport->multidir_output[$conf->entity]) ? $conf->expensereport->multidir_output[$conf->entity] : $conf->expensereport->dir_output; + } } elseif ($line->doc_type == 'supplier_invoice') { - '@phan-var-force FactureFournisseur $invoice'; - /** @var FactureFournisseur $invoice */ - $objectDirPath = !empty($conf->fournisseur->facture->multidir_output[$conf->entity]) ? $conf->fournisseur->facture->multidir_output[$conf->entity] : $conf->fournisseur->facture->dir_output; - $objectDirPath .= '/'.rtrim(get_exdir($invoice->id, 2, 0, 0, $invoice, 'invoice_supplier'), '/'); + if (getDolGlobalInt('ACCOUNTING_EXPORT_REMOVE_SUPPLIERINVOICE_SOURCE_FILE')) { + '@phan-var-force FactureFournisseur $invoice'; + /** @var FactureFournisseur $invoice */ + $objectDirPath = !empty($conf->fournisseur->facture->multidir_output[$conf->entity]) ? $conf->fournisseur->facture->multidir_output[$conf->entity] : $conf->fournisseur->facture->dir_output; + $objectDirPath .= '/' . rtrim(get_exdir($invoice->id, 2, 0, 0, $invoice, 'invoice_supplier'), '/'); + } } $arrayofinclusion = array(); // If it is a supplier invoice, we want to use last uploaded file @@ -1715,14 +1721,20 @@ class AccountancyExport $objectDirPath = ''; $objectFileName = dol_sanitizeFileName($line->doc_ref); if ($line->doc_type == 'customer_invoice') { - $objectDirPath = !empty($conf->invoice->multidir_output[$conf->entity]) ? $conf->invoice->multidir_output[$conf->entity] : $conf->invoice->dir_output; + if (getDolGlobalInt('ACCOUNTING_EXPORT_REMOVE_INVOICE_SOURCE_FILE')) { + $objectDirPath = !empty($conf->invoice->multidir_output[$conf->entity]) ? $conf->invoice->multidir_output[$conf->entity] : $conf->invoice->dir_output; + } } elseif ($line->doc_type == 'expense_report') { - $objectDirPath = !empty($conf->expensereport->multidir_output[$conf->entity]) ? $conf->expensereport->multidir_output[$conf->entity] : $conf->expensereport->dir_output; + if (getDolGlobalInt('ACCOUNTING_EXPORT_REMOVE_EXPENSEREPORT_SOURCE_FILE')) { + $objectDirPath = !empty($conf->expensereport->multidir_output[$conf->entity]) ? $conf->expensereport->multidir_output[$conf->entity] : $conf->expensereport->dir_output; + } } elseif ($line->doc_type == 'supplier_invoice') { - '@phan-var-force FactureFournisseur $invoice'; - /** @var FactureFournisseur $invoice */ - $objectDirPath = !empty($conf->fournisseur->facture->multidir_output[$conf->entity]) ? $conf->fournisseur->facture->multidir_output[$conf->entity] : $conf->fournisseur->facture->dir_output; - $objectDirPath .= '/'.rtrim(get_exdir($invoice->id, 2, 0, 0, $invoice, 'invoice_supplier'), '/'); + if (getDolGlobalInt('ACCOUNTING_EXPORT_REMOVE_SUPPLIERINVOICE_SOURCE_FILE')) { + '@phan-var-force FactureFournisseur $invoice'; + /** @var FactureFournisseur $invoice */ + $objectDirPath = !empty($conf->fournisseur->facture->multidir_output[$conf->entity]) ? $conf->fournisseur->facture->multidir_output[$conf->entity] : $conf->fournisseur->facture->dir_output; + $objectDirPath .= '/' . rtrim(get_exdir($invoice->id, 2, 0, 0, $invoice, 'invoice_supplier'), '/'); + } } $arrayofinclusion = array(); // If it is a supplier invoice, we want to use last uploaded file diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index e08e2c670bc..b8e4d47ca6d 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -1195,7 +1195,7 @@ if (empty($reshook)) { $facture_source = new Facture($db); // fetch origin object if ($facture_source->fetch($object->fk_facture_source) > 0) { - if ($facture_source->type == Facture::TYPE_SITUATION) { + if ($facture_source->isSituationInvoice()) { $object->situation_counter = $facture_source->situation_counter; $object->situation_cycle_ref = $facture_source->situation_cycle_ref; $facture_source->fetchPreviousNextSituationInvoice(); @@ -1240,7 +1240,7 @@ if (empty($reshook)) { } - if ($facture_source->type == Facture::TYPE_SITUATION) { + if ($facture_source->isSituationInvoice()) { $source_fk_prev_id = $line->fk_prev_id; // temporary storing situation invoice fk_prev_id $line->fk_prev_id = $line->id; // The new line of the new credit note we are creating must be linked to the situation invoice line it is created from @@ -2943,7 +2943,7 @@ if (empty($reshook)) { $object->fetch($id, '', '', 0, true); if (in_array($object->status, array(Facture::STATUS_CLOSED, Facture::STATUS_VALIDATED)) - && $object->type == Facture::TYPE_SITUATION + && $object->isSituationInvoice() && $usercancreate && !$objectidnext && $object->is_last_in_cycle() @@ -2999,7 +2999,7 @@ if (empty($reshook)) { $lineIndex = count($object->tab_previous_situation_invoice) - 1; $searchPreviousInvoice = true; while ($searchPreviousInvoice) { - if ($object->tab_previous_situation_invoice[$lineIndex]->type == Facture::TYPE_SITUATION || $lineIndex < 1) { + if ($object->tab_previous_situation_invoice[$lineIndex]->isSituationInvoice() || $lineIndex < 1) { $searchPreviousInvoice = false; // find, exit; break; } else { @@ -3098,7 +3098,7 @@ if (empty($reshook)) { $pa_ht = $originLine->pa_ht; $label = $originLine->label; $array_options = $originLine->array_options; - if ($object->type == Facture::TYPE_SITUATION) { + if ($object->isSituationInvoice()) { $situation_percent = 0; } else { $situation_percent = 100; @@ -3727,12 +3727,12 @@ if ($action == 'create') { $opt = $form->selectSituationInvoices(GETPOSTINT('originid'), $socid); print '
'; - $tmp = ''.$langs->trans('NoSituations').'') || (GETPOST('origin') && GETPOST('origin') != 'facture' && GETPOST('origin') != 'commande')) { $tmp .= ' disabled'; } $tmp .= '> '; - $text = $tmp.' '; + $text = $tmp.' '; $text .= ''; - print ''; - print ''; - // Extrafields $extrafields->fetch_name_optionals_label("product_customer_price"); $extralabels = !empty($extrafields->attributes["product_customer_price"]['label']) ? $extrafields->attributes["product_customer_price"]['label'] : ''; @@ -572,6 +563,12 @@ if (getDolGlobalString('PRODUIT_CUSTOMER_PRICES') || getDolGlobalString('PRODUIT print ''; + // Update all child soc + print '
'; + print ' '; + print ''; + print '
'; + print $form->buttonsSaveCancel(); print ''; @@ -759,19 +756,26 @@ if (getDolGlobalString('PRODUIT_CUSTOMER_PRICES') || getDolGlobalString('PRODUIT } print ''; + + $colspan = 0; + foreach ($prodcustprice->fields as $key => $val) { if (!empty($arrayfields['t.'.$key]['checked'])) { print getTitleFieldOfList($arrayfields['t.'.$key]['label'], 0, $_SERVER['PHP_SELF'], $key, '', $param, '', $sortfield, $sortorder)."\n"; + $colspan++; } } if (!empty($extralabels) && is_array($extralabels)) { foreach ($extralabels as $key => $val) { if (!empty($arrayfields['ef.'.$key]['checked'])) { print getTitleFieldOfList($arrayfields['ef.'.$key]['label'], 0, $_SERVER['PHP_SELF'], $key, '', $param, '', $sortfield, $sortorder)."\n"; + $colspan++; } } } print ''; + $colspan++; + print ''; if (count($prodcustprice->lines) > 0 || $search_prod) { @@ -826,6 +830,7 @@ if (getDolGlobalString('PRODUIT_CUSTOMER_PRICES') || getDolGlobalString('PRODUIT print ''; print $userstatic->getNomUrl(-1); print ''; + // Extrafields $extrafields->fetch_name_optionals_label("product_customer_price"); $extralabels = $extrafields->attributes["product_customer_price"]['label']; @@ -876,11 +881,10 @@ if (getDolGlobalString('PRODUIT_CUSTOMER_PRICES') || getDolGlobalString('PRODUIT print "\n"; } } else { - $colspan = 10; if ($user->hasRight('produit', 'supprimer') || $user->hasRight('service', 'supprimer')) { $colspan += 1; } - print ''.$langs->trans('None').''; + print ''.$langs->trans('None').''; } print "";