Merge pull request #22123 from Easya-Solutions/new-order-invoice-payment-values-from-reception

NEW payment default values when supplier order created from reception
This commit is contained in:
Laurent Destailleur 2023-01-23 01:31:14 +01:00 committed by GitHub
commit ef57b5c717
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 181 additions and 15 deletions

View File

@ -2008,15 +2008,93 @@ if ($action == 'create') {
$projectid = (!empty($objectsrc->fk_project) ? $objectsrc->fk_project : '');
//$ref_client = (!empty($objectsrc->ref_client)?$object->ref_client:'');
$soc = $objectsrc->thirdparty;
$cond_reglement_id = (!empty($objectsrc->cond_reglement_id) ? $objectsrc->cond_reglement_id : (!empty($soc->cond_reglement_supplier_id) ? $soc->cond_reglement_supplier_id : 0)); // TODO maybe add default value option
$mode_reglement_id = (!empty($objectsrc->mode_reglement_id) ? $objectsrc->mode_reglement_id : (!empty($soc->mode_reglement_supplier_id) ? $soc->mode_reglement_supplier_id : 0));
$fk_account = (!empty($objectsrc->fk_account) ? $objectsrc->fk_account : (!empty($soc->fk_account) ? $soc->fk_account : 0));
$remise_percent = (!empty($objectsrc->remise_percent) ? $objectsrc->remise_percent : (!empty($soc->remise_supplier_percent) ? $soc->remise_supplier_percent : 0));
$remise_absolue = (!empty($objectsrc->remise_absolue) ? $objectsrc->remise_absolue : (!empty($soc->remise_absolue) ? $soc->remise_absolue : 0));
$dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE) ?-1 : '';
$transport_mode_id = (!empty($objectsrc->transport_mode_id) ? $objectsrc->transport_mode_id : (!empty($soc->transport_mode_id) ? $soc->transport_mode_id : 0));
$cond_reglement_id = 0;
$mode_reglement_id = 0;
$fk_account = 0;
$remise_percent = 0;
$remise_absolue = 0;
$transport_mode_id = 0;
// set from object source
if (!empty($objectsrc->cond_reglement_id)) {
$cond_reglement_id = $objectsrc->cond_reglement_id;
}
if (!empty($objectsrc->mode_reglement_id)) {
$mode_reglement_id = $objectsrc->mode_reglement_id;
}
if (!empty($objectsrc->fk_account)) {
$fk_account = $objectsrc->fk_account;
}
if (!empty($objectsrc->remise_percent)) {
$remise_percent = $objectsrc->remise_percent;
}
if (!empty($objectsrc->remise_absolue)) {
$remise_absolue = $objectsrc->remise_absolue;
}
if (!empty($objectsrc->transport_mode_id)) {
$transport_mode_id = $objectsrc->transport_mode_id;
}
if (empty($cond_reglement_id)
|| empty($mode_reglement_id)
|| empty($fk_account)
|| empty($remise_percent)
|| empty($remise_absolue)
|| empty($transport_mode_id)
) {
if ($origin == 'reception') {
// try to get from source of reception (supplier order)
if (!isset($objectsrc->supplier_order)) {
$objectsrc->fetch_origin();
}
if (!empty($objectsrc->commandeFournisseur)) {
$supplierOrder = $objectsrc->commandeFournisseur;
if (empty($cond_reglement_id) && !empty($supplierOrder->cond_reglement_id)) {
$cond_reglement_id = $supplierOrder->cond_reglement_id;
}
if (empty($mode_reglement_id) && !empty($supplierOrder->mode_reglement_id)) {
$mode_reglement_id = $supplierOrder->mode_reglement_id;
}
if (empty($fk_account) && !empty($supplierOrder->fk_account)) {
$fk_account = $supplierOrder->fk_account;
}
if (empty($remise_percent) && !empty($supplierOrder->remise_percent)) {
$remise_percent = $supplierOrder->remise_percent;
}
if (empty($remise_absolue) && !empty($supplierOrder->remise_absolue)) {
$remise_absolue = $supplierOrder->remise_absolue;
}
if (empty($transport_mode_id) && !empty($supplierOrder->transport_mode_id)) {
$transport_mode_id = $supplierOrder->transport_mode_id;
}
}
}
// try to get from third-party of source object
if (!empty($soc)) {
if (empty($cond_reglement_id) && !empty($soc->cond_reglement_supplier_id)) {
$cond_reglement_id = $soc->cond_reglement_supplier_id;
}
if (empty($mode_reglement_id) && !empty($soc->mode_reglement_supplier_id)) {
$mode_reglement_id = $soc->mode_reglement_supplier_id;
}
if (empty($fk_account) && !empty($soc->fk_account)) {
$fk_account = $soc->fk_account;
}
if (empty($remise_percent) && !empty($soc->remise_supplier_percent)) {
$remise_percent = $soc->remise_supplier_percent;
}
if (empty($remise_absolue) && !empty($soc->remise_absolue)) {
$remise_absolue = $soc->remise_absolue;
}
if (empty($transport_mode_id) && !empty($soc->transport_mode_id)) {
$transport_mode_id = $soc->transport_mode_id;
}
}
}
if (isModEnabled("multicurrency")) {
if (!empty($objectsrc->multicurrency_code)) {
@ -2028,7 +2106,7 @@ if ($action == 'create') {
}
$datetmp = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
$dateinvoice = ($datetmp == '' ? (empty($conf->global->MAIN_AUTOFILL_DATE) ?-1 : '') : $datetmp);
$dateinvoice = ($datetmp == '' ? (empty($conf->global->MAIN_AUTOFILL_DATE) ? -1 : '') : $datetmp);
$datetmp = dol_mktime(12, 0, 0, GETPOST('echmonth', 'int'), GETPOST('echday', 'int'), GETPOST('echyear', 'int'));
$datedue = ($datetmp == '' ?-1 : $datetmp);

View File

@ -252,15 +252,98 @@ if (empty($reshook)) {
}
}
} else {
$cond_reglement_id = 0;
$mode_reglement_id = 0;
$fk_account = 0;
$remise_percent = 0;
$remise_absolue = 0;
$transport_mode_id = 0;
if (!empty($rcp->cond_reglement_id)) {
$cond_reglement_id = $rcp->cond_reglement_id;
}
if (!empty($rcp->mode_reglement_id)) {
$mode_reglement_id = $rcp->mode_reglement_id;
}
if (!empty($rcp->fk_account)) {
$fk_account = $rcp->fk_account;
}
if (!empty($rcp->remise_percent)) {
$remise_percent = $rcp->remise_percent;
}
if (!empty($rcp->remise_absolue)) {
$remise_absolue = $rcp->remise_absolue;
}
if (!empty($rcp->transport_mode_id)) {
$transport_mode_id = $rcp->transport_mode_id;
}
if (empty($cond_reglement_id)
|| empty($mode_reglement_id)
|| empty($fk_account)
|| empty($remise_percent)
|| empty($remise_absolue)
|| empty($transport_mode_id)
) {
if (!isset($rcp->supplier_order)) {
$rcp->fetch_origin();
}
// try to get from source of reception (supplier order)
if (!empty($rcp->commandeFournisseur)) {
$supplierOrder = $rcp->commandeFournisseur;
if (empty($cond_reglement_id) && !empty($supplierOrder->cond_reglement_id)) {
$cond_reglement_id = $supplierOrder->cond_reglement_id;
}
if (empty($mode_reglement_id) && !empty($supplierOrder->mode_reglement_id)) {
$mode_reglement_id = $supplierOrder->mode_reglement_id;
}
if (empty($fk_account) && !empty($supplierOrder->fk_account)) {
$fk_account = $supplierOrder->fk_account;
}
if (empty($remise_percent) && !empty($supplierOrder->remise_percent)) {
$remise_percent = $supplierOrder->remise_percent;
}
if (empty($remise_absolue) && !empty($supplierOrder->remise_absolue)) {
$remise_absolue = $supplierOrder->remise_absolue;
}
if (empty($transport_mode_id) && !empty($supplierOrder->transport_mode_id)) {
$transport_mode_id = $supplierOrder->transport_mode_id;
}
}
// try get from third-party of reception
if (!empty($rcp->thirdparty)) {
$soc = $rcp->thirdparty;
if (empty($cond_reglement_id) && !empty($soc->cond_reglement_supplier_id)) {
$cond_reglement_id = $soc->cond_reglement_supplier_id;
}
if (empty($mode_reglement_id) && !empty($soc->mode_reglement_supplier_id)) {
$mode_reglement_id = $soc->mode_reglement_supplier_id;
}
if (empty($fk_account) && !empty($soc->fk_account)) {
$fk_account = $soc->fk_account;
}
if (empty($remise_percent) && !empty($soc->remise_supplier_percent)) {
$remise_percent = $soc->remise_supplier_percent;
}
if (empty($remise_absolue) && !empty($soc->remise_absolue)) {
$remise_absolue = $soc->remise_absolue;
}
if (empty($transport_mode_id) && !empty($soc->transport_mode_id)) {
$transport_mode_id = $soc->transport_mode_id;
}
}
}
// If we want one invoice per reception or if there is no first invoice yet for this thirdparty.
$objecttmp->socid = $rcp->socid;
$objecttmp->type = $objecttmp::TYPE_STANDARD;
$objecttmp->cond_reglement_id = $rcp->cond_reglement_id || $rcp->thirdparty->cond_reglement_supplier_id;
$objecttmp->mode_reglement_id = $rcp->mode_reglement_id || $rcp->thirdparty->mode_reglement_supplier_id;
$objecttmp->fk_account = !empty($rcp->thirdparty->fk_account) ? $rcp->thirdparty->fk_account : 0;
$objecttmp->remise_percent = !empty($rcp->thirdparty->remise_percent) ? $rcp->thirdparty->remise_percent : 0;
$objecttmp->remise_absolue = !empty($rcp->thirdparty->remise_absolue) ? $rcp->thirdparty->remise_absolue : 0;
$objecttmp->cond_reglement_id = $cond_reglement_id;
$objecttmp->mode_reglement_id = $mode_reglement_id;
$objecttmp->fk_account = $fk_account;
$objecttmp->remise_percent = $remise_percent;
$objecttmp->remise_absolue = $remise_absolue;
$objecttmp->transport_mode_id = $transport_mode_id;
$objecttmp->fk_project = $rcp->fk_project;
//$objecttmp->multicurrency_code = $rcp->multicurrency_code;
@ -280,6 +363,11 @@ if (empty($reshook)) {
$objecttmp->origin = 'reception';
$objecttmp->origin_id = $id_reception;
// Auto calculation of date due if not filled by user
if (empty($objecttmp->date_echeance)) {
$objecttmp->date_echeance = $objecttmp->calculate_date_lim_reglement();
}
$objecttmp->array_options = $rcp->array_options; // Copy extrafields
// Set $objecttmp->linked_objects with all links order_supplier existing on reception, so same links will be added to the generated supplier invoice