From 10deb1baadc374658a9d5cabf137c8c207724a00 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 2 Oct 2020 13:51:32 +0200 Subject: [PATCH] Clean code - Removed no more used files orderstoinvoice.php --- htdocs/comm/card.php | 6 +- htdocs/commande/orderstoinvoice.php | 723 ---------------------- htdocs/fourn/card.php | 5 +- htdocs/fourn/commande/orderstoinvoice.php | 635 ------------------- 4 files changed, 4 insertions(+), 1365 deletions(-) delete mode 100644 htdocs/commande/orderstoinvoice.php delete mode 100644 htdocs/fourn/commande/orderstoinvoice.php diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index 79278fef056..d056f4fb3af 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -1274,13 +1274,11 @@ if ($object->id > 0) { print '
'.$langs->trans("AddBill").'
'; } else { - $langs->load("bills"); - $langs->load("orders"); + $langs->loadLangs(array("orders", "bills")); if (!empty($conf->commande->enabled)) { - if ($object->client != 0 && $object->client != 2) - { + if ($object->client != 0 && $object->client != 2) { if (!empty($orders2invoice) && $orders2invoice > 0) print '
'.$langs->trans("CreateInvoiceForThisCustomer").'
'; else print '
'.$langs->trans("CreateInvoiceForThisCustomer").'
'; } else print '
'.$langs->trans("AddBill").'
'; diff --git a/htdocs/commande/orderstoinvoice.php b/htdocs/commande/orderstoinvoice.php deleted file mode 100644 index a4d4ed07dee..00000000000 --- a/htdocs/commande/orderstoinvoice.php +++ /dev/null @@ -1,723 +0,0 @@ - - * Copyright (C) 2004-2019 Laurent Destailleur - * Copyright (C) 2005 Marc Barilley / Ocebo - * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2012 Andreu Bisquerra Gaya - * Copyright (C) 2012 David Rodriguez Martinez - * Copyright (C) 2012-2018 Juanjo Menent - * Copyright (C) 2015 Ferran Marcet - * Copyright (C) 2018 Frédéric France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/commande/orderstoinvoice.php - * \ingroup commande - * \brief Page to invoice multiple orders - */ - -require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; -require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/report.lib.php'; -if (!empty($conf->projet->enabled)) { - require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; -} - -// Load translation files required by the page -$langs->loadLangs(array("orders", "deliveries", "companies")); - -if (!$user->rights->facture->creer) - accessforbidden(); - -$id = (GETPOST('id') ?GETPOST('id', 'int') : GETPOST("facid", "int")); // For backward compatibility -$ref = GETPOST('ref', 'alpha'); -$action = GETPOST('action', 'alpha'); -$confirm = GETPOST('confirm', 'alpha'); -$sref = GETPOST('sref', 'alpha'); -$sref_client = GETPOST('sref_client', 'alpha'); -$sall = trim((GETPOST('search_all', 'alphanohtml') != '') ?GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml')); -$socid = GETPOST('socid', 'int'); -$selected = GETPOST('orders_to_invoice'); -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); -$search_status = GETPOST('search_status', 'alpha'); - -$error = 0; - -if (!$sortfield) $sortfield = 'c.rowid'; -if (!$sortorder) $sortorder = 'DESC'; - -$now = dol_now(); -$date_start = dol_mktime(0, 0, 0, $_REQUEST["date_startmonth"], $_REQUEST["date_startday"], $_REQUEST["date_startyear"]); // Date for local PHP server -$date_end = dol_mktime(23, 59, 59, $_REQUEST["date_endmonth"], $_REQUEST["date_endday"], $_REQUEST["date_endyear"]); -$date_starty = dol_mktime(0, 0, 0, $_REQUEST["date_start_delymonth"], $_REQUEST["date_start_delyday"], $_REQUEST["date_start_delyyear"]); // Date for local PHP server -$date_endy = dol_mktime(23, 59, 59, $_REQUEST["date_end_delymonth"], $_REQUEST["date_end_delyday"], $_REQUEST["date_end_delyyear"]); - -$extrafields = new ExtraFields($db); - -$object = new Facture($db); - -// fetch optionals attributes and labels -$extrafields->fetch_name_optionals_label($object->table_element); - -if ($action == 'create') -{ - if (!is_array($selected)) - { - $error++; - setEventMessages($langs->trans('Error_OrderNotChecked'), null, 'errors'); - } else { - $origin = GETPOST('origin'); - $originid = GETPOST('originid'); - } -} - -// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context -include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; -$hookmanager = new HookManager($db); -$hookmanager->initHooks(array('orderstoinvoice')); - - -/* - * Actions - */ - -if (($action == 'create' || $action == 'add') && !$error) -{ - require_once DOL_DOCUMENT_ROOT.'/core/modules/facture/modules_facture.php'; - require_once DOL_DOCUMENT_ROOT.'/core/class/discount.class.php'; - require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; - require_once DOL_DOCUMENT_ROOT.'/core/lib/invoice.lib.php'; - if (!empty($conf->projet->enabled)) require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; - - $langs->load('bills'); - $langs->load('products'); - $langs->load('main'); - if (isset($_GET['orders_to_invoice'])) - { - $orders_id = GETPOST('orders_to_invoice', '', 1); - $n = count($orders_id); - $i = 0; - - $originid = $orders_id[0]; - $_GET['originid'] = $orders_id[0]; - } - if (isset($_POST['orders_to_invoice'])) - { - $orders_id = GETPOST('orders_to_invoice', '', 2); - $nn = count($orders_id); - $ii = 0; - - $originid = $orders_id[0]; - $_POST['originid'] = $orders_id[0]; - } - - $projectid = GETPOST('projectid', 'int') ?GETPOST('projectid', 'int') : 0; - $lineid = GETPOST('lineid', 'int'); - $userid = GETPOST('userid', 'int'); - $search_ref = GETPOST('sf_ref') ?GETPOST('sf_ref') : GETPOST('search_ref'); - $closeOrders = GETPOST('autocloseorders') ? true : false; - - // Security check - $fieldid = GETPOST('ref', 'alpha') ? 'ref' : 'rowid'; - if ($user->socid) $socid = $user->socid; - $result = restrictedArea($user, 'facture', $id, '', '', 'fk_soc', $fieldid); - - $usehm = $conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE; - - // Insert new invoice in database - if ($action == 'add' && $user->rights->facture->creer) - { - $object->socid = GETPOST('socid'); - $db->begin(); - $error = 0; - - // Standard or deposit or proforma invoice - if ($_POST['type'] == 0) - { - $datefacture = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']); - if (empty($datefacture)) - { - $datefacture = dol_mktime(date("h"), date("M"), 0, date("m"), date("d"), date("Y")); - } - if (!$error) - { - // Si facture standard - $object->socid = $_POST['socid']; - $object->type = $_POST['type']; - $object->number = $_POST['ref']; - $object->date = $datefacture; - $object->note_public = trim($_POST['note_public']); - $object->note = trim($_POST['note']); - $object->ref_client = $_POST['ref_client']; - $object->model_pdf = $_POST['model']; - $object->fk_project = $_POST['projectid']; - $object->cond_reglement_id = ($_POST['type'] == 3 ? 1 : $_POST['cond_reglement_id']); - $object->mode_reglement_id = $_POST['mode_reglement_id']; - $object->amount = $_POST['amount']; - $object->remise_absolue = $_POST['remise_absolue']; - $object->remise_percent = $_POST['remise_percent']; - - $ret = $extrafields->setOptionalsFromPost(null, $object); - if ($ret < 0) $error++; - - if ($_POST['origin'] && $_POST['originid']) - { - $object->origin = $_POST['origin']; - $object->origin_id = $orders_id[$ii]; - $object->linked_objects = $orders_id; - $id = $object->create($user); - $object->fetch_thirdparty(); - - if ($id > 0) - { - foreach ($orders_id as $origin => $origin_id) - { - $origin_id = (!empty($origin_id) ? $origin_id : $object->origin_id); - $db->begin(); - $sql = "INSERT INTO ".MAIN_DB_PREFIX."element_element ("; - $sql .= "fk_source"; - $sql .= ", sourcetype"; - $sql .= ", fk_target"; - $sql .= ", targettype"; - $sql .= ") VALUES ("; - $sql .= $origin_id; - $sql .= ", '".$db->escape($object->origin)."'"; - $sql .= ", ".$id; - $sql .= ", '".$db->escape($object->element)."'"; - $sql .= ")"; - - if ($db->query($sql)) - { - $db->commit(); - } else { - $db->rollback(); - } - } - - while ($ii < $nn) - { - include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; - $objectsrc = new Commande($db); - dol_syslog("Try to find source object origin=".$object->origin." originid=".$object->origin_id." to add lines"); - $result = $objectsrc->fetch($orders_id[$ii]); - if ($result > 0) - { - if ($closeOrders) - { - $objectsrc->classifyBilled($user); - $objectsrc->setStatut(3); - } - $lines = $objectsrc->lines; - if (empty($lines) && method_exists($objectsrc, 'fetch_lines')) - { - $objectsrc->fetch_lines(); - $lines = $objectsrc->lines; - } - $fk_parent_line = 0; - $num = count($lines); - for ($i = 0; $i < $num; $i++) - { - $desc = ($lines[$i]->desc ? $lines[$i]->desc : $lines[$i]->libelle); - if ($lines[$i]->subprice < 0) - { - // Negative line, we create a discount line - $discount = new DiscountAbsolute($db); - $discount->fk_soc = $object->socid; - $discount->amount_ht = abs($lines[$i]->total_ht); - $discount->amount_tva = abs($lines[$i]->total_tva); - $discount->amount_ttc = abs($lines[$i]->total_ttc); - $discount->tva_tx = $lines[$i]->tva_tx; - $discount->fk_user = $user->id; - $discount->description = $desc; - $discountid = $discount->create($user); - if ($discountid > 0) - { - $result = $object->insert_discount($discountid); - //$result=$discount->link_to_invoice($lineid,$id); - } else { - setEventMessages($discount->error, $discount->errors, 'errors'); - $error++; - break; - } - } else { - // Positive line - $product_type = ($lines[$i]->product_type ? $lines[$i]->product_type : 0); - // Date start - $date_start = false; - if ($lines[$i]->date_debut_prevue) $date_start = $lines[$i]->date_debut_prevue; - if ($lines[$i]->date_debut_reel) $date_start = $lines[$i]->date_debut_reel; - if ($lines[$i]->date_start) $date_start = $lines[$i]->date_start; - //Date end - $date_end = false; - if ($lines[$i]->date_fin_prevue) $date_end = $lines[$i]->date_fin_prevue; - if ($lines[$i]->date_fin_reel) $date_end = $lines[$i]->date_fin_reel; - if ($lines[$i]->date_end) $date_end = $lines[$i]->date_end; - // Reset fk_parent_line for no child products and special product - if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) - { - $fk_parent_line = 0; - } - - // Extrafields - if (method_exists($lines[$i], 'fetch_optionals')) { - $lines[$i]->fetch_optionals(); - $array_options = $lines[$i]->array_options; - } - - $result = $object->addline( - $desc, - $lines[$i]->subprice, - $lines[$i]->qty, - $lines[$i]->tva_tx, - $lines[$i]->localtax1_tx, - $lines[$i]->localtax2_tx, - $lines[$i]->fk_product, - $lines[$i]->remise_percent, - $date_start, - $date_end, - 0, - $lines[$i]->info_bits, - $lines[$i]->fk_remise_except, - 'HT', - 0, - $product_type, - $ii, - $lines[$i]->special_code, - $object->origin, - $lines[$i]->rowid, - $fk_parent_line, - $lines[$i]->fk_fournprice, - $lines[$i]->pa_ht, - $lines[$i]->label, - $array_options - ); - if ($result > 0) - { - $lineid = $result; - } else { - $lineid = 0; - $error++; - break; - } - // Defined the new fk_parent_line - if ($result > 0 && $lines[$i]->product_type == 9) - { - $fk_parent_line = $result; - } - } - } - } else { - setEventMessages($objectsrc->error, $objectsrc->errors, 'errors'); - $error++; - } - $ii++; - } - } else { - setEventMessages($object->error, $object->errors, 'errors'); - $error++; - } - } - } - } - - // End of object creation, we show it - if ($id > 0 && !$error) - { - $db->commit(); - header('Location: '.DOL_URL_ROOT.'/compta/facture/card.php?facid='.$id); - exit; - } else { - $db->rollback(); - $action = 'create'; - $_GET["origin"] = $_POST["origin"]; - $_GET["originid"] = $_POST["originid"]; - setEventMessages($object->error, $object->errors, 'errors'); - $error++; - } - } -} - - -/* - * View - */ - -$html = new Form($db); -$htmlother = new FormOther($db); -$formfile = new FormFile($db); -$companystatic = new Societe($db); - -// Mode creation -if ($action == 'create' && !$error) -{ - $facturestatic = new Facture($db); - - llxHeader(); - print load_fiche_titre($langs->trans('NewBill')); - - $soc = new Societe($db); - if ($socid) $res = $soc->fetch($socid); - if ($res) - { - $cond_reglement_id = $soc->cond_reglement_id; - $mode_reglement_id = $soc->mode_reglement_id; - $remise_percent = $soc->remise_percent; - } - $remise_absolue = 0; - $dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE) ?-1 : ''; - - $absolute_discount = $soc->getAvailableDiscounts(); - print '
'; - print ''; - print ''; - print ''."\n"; - print ''; - print ''; - print ''; - print ''; - - dol_fiche_head(); - - print ''; - - // Ref - print ''; - - // Third party - print ''; - print ''."\n"; - - // Type - print ''; - // Payment term - print ''; - // Payment mode - print ''; - // Project - if (!empty($conf->projet->enabled)) - { - $formproject = new FormProjets($db); - - $langs->load('projects'); - print ''; - } - - include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; - $objectsrc = new Commande($db); - $listoforders = array(); - foreach ($selected as $sel) - { - $result = $objectsrc->fetch($sel); - if ($result > 0) - { - $listoforders[] = $objectsrc->ref; - } - } - - // Other attributes - $parameters = array('objectsrc' => $objectsrc, 'idsrc' => $listoforders); - $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - if (empty($reshook)) - { - $object = new Facture($db); - print $object->showOptionals($extrafields, 'edit'); - } - - // Modele PDF - print ''; - print '"; - - // Public note - print ''; - print ''; - print ''; - // Private note - if (empty($user->socid)) - { - print ''; - print ''; - print ''; - } - - print '
'.$langs->trans('Ref').''.$langs->trans('Draft').'
'.$langs->trans('Customer').''; - print $soc->getNomUrl(1); - print ''; - print '
'.$langs->trans('Type').''; - print ''."\n"; - - // Standard invoice - print ''."\n"; - print '
'; - print ''; - print ''; - $desc = $html->textwithpicto($langs->trans("InvoiceStandardAsk"), $langs->transnoentities("InvoiceStandardDesc"), 1); - print $desc; - print '
'; - - // Date invoice - print '
'.$langs->trans('Date').''; - print $html->selectDate('', '', '', '', '', "add", 1, 1); - print '
'.$langs->trans('PaymentConditionsShort').''; - $html->select_conditions_paiements(isset($_POST['cond_reglement_id']) ? $_POST['cond_reglement_id'] : $cond_reglement_id, 'cond_reglement_id'); - print '
'.$langs->trans('PaymentMode').''; - $html->select_types_paiements(isset($_POST['mode_reglement_id']) ? $_POST['mode_reglement_id'] : $mode_reglement_id, 'mode_reglement_id'); - print '
'.$langs->trans('Project').''; - $formproject->select_projects($soc->id, $projectid, 'projectid'); - print '
'.$langs->trans('Model').''; - include_once DOL_DOCUMENT_ROOT.'/core/modules/facture/modules_facture.php'; - $liste = ModelePDFFactures::liste_modeles($db); - print $html->selectarray('model', $liste, $conf->global->FACTURE_ADDON_PDF); - print "
'.$langs->trans('NotePublic').''; - print '
'.$langs->trans('NotePrivate').''; - print '
'; - - while ($i < $n) - { - print ''; - - $i++; - } - - dol_fiche_end(); - - // Button "Create Draft" - print '
'; - print "
\n"; - - print ''; - print "\n"; -} - -// Mode liste -if (($action != 'create' && $action != 'add') || ($action == 'create' && $error)) -{ - llxHeader(); - ?> - - rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql .= ' WHERE c.entity IN ('.getEntity('commande').')'; - $sql .= ' AND c.fk_soc = s.rowid'; - - // Show orders with status validated, shipping started and delivered (well any order we can bill) - $sql .= " AND ((c.fk_statut IN (1,2)) OR (c.fk_statut = 3 AND c.facture = 0))"; - - if ($socid) $sql .= ' AND s.rowid = '.$socid; - if (!$user->rights->societe->client->voir && !$socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; - if ($sref) - { - $sql .= " AND c.ref LIKE '%".$db->escape($sref)."%'"; - } - if ($sall) - { - $sql .= " AND (c.ref LIKE '%".$db->escape($sall)."%' OR c.note LIKE '%".$db->escape($sall)."%')"; - } - - //Date filter - if ($date_start && $date_end) $sql .= " AND c.date_commande >= '".$db->idate($date_start)."' AND c.date_commande <= '".$db->idate($date_end)."'"; - if ($date_starty && $date_endy) $sql .= " AND c.date_livraison >= '".$db->idate($date_starty)."' AND c.date_livraison <= '".$db->idate($date_endy)."'"; - - if (!empty($sref_client)) - { - $sql .= ' AND c.ref_client LIKE \'%'.$db->escape($sref_client).'%\''; - } - $sql .= $db->order($sortfield, $sortorder); - - $resql = $db->query($sql); - if ($resql) - { - if ($socid) - { - $soc = new Societe($db); - $soc->fetch($socid); - } - $title = $langs->trans('ListOfOrders'); - $title .= ' - '.$langs->trans('StatusOrderValidated').', '.$langs->trans("StatusOrderSent").', '.$langs->trans('StatusOrderToBill'); - $num = $db->num_rows($resql); - print load_fiche_titre($title); - $i = 0; - $period = $html->selectDate($date_start, 'date_start', 0, 0, 1, '', 1, 0).' - '.$html->selectDate($date_end, 'date_end', 0, 0, 1, '', 1, 0); - $periodely = $html->selectDate($date_starty, 'date_start_dely', 0, 0, 1, '', 1, 0).' - '.$html->selectDate($date_endy, 'date_end_dely', 0, 0, 1, '', 1, 0); - - if (!empty($socid)) - { - // Company - $companystatic->id = $socid; - $companystatic->name = $soc->name; - print '

'.$companystatic->getNomUrl(1, 'customer').'

'; - } - - print '
'; - print ''; - print ''; - print_liste_field_titre('Ref', $_SERVER["PHP_SELF"], 'c.ref', '', '&socid='.$socid, '', $sortfield, $sortorder); - print_liste_field_titre('RefCustomerOrder', $_SERVER["PHP_SELF"], 'c.ref_client', '', '&socid='.$socid, '', $sortfield, $sortorder); - print_liste_field_titre('OrderDate', $_SERVER["PHP_SELF"], 'c.date_commande', '', '&socid='.$socid, 'align="center"', $sortfield, $sortorder); - print_liste_field_titre('DeliveryDate', $_SERVER["PHP_SELF"], 'c.date_livraison', '', '&socid='.$socid, 'align="center"', $sortfield, $sortorder); - print_liste_field_titre('Status', '', '', '', '', 'class="right"'); - print_liste_field_titre('GenerateBill', '', '', '', '', 'align="center"'); - print ''; - - // Fields title search - print ''; - print ''; - print ''; - - //REF - print ''; - - print ''; - - //DATE ORDER - print ''; - - //DATE DELIVERY - print ''; - - //SEARCH BUTTON - print ''; - - //ALL/NONE - print ''; - - print ''; - print ''; - - print ''; - - $generic_commande = new Commande($db); - - while ($i < $num) - { - $objp = $db->fetch_object($resql); - - print ''; - print ''; - - print ''; - - // Order date - print ''; - - //Delivery date - print ''; - - // Statut - print ''; - - // Checkbox - print ''; - - print ''; - - $total = $total + $objp->price; - $subtotal = $subtotal + $objp->price; - $i++; - } - print '
'; - print ''; - print ''; - print ''; - print ''; - print $period; - print ''; - print $periodely; - print ''; - print ''; - print ''; - if ($conf->use_javascript_ajax) print ''.$langs->trans("All").' / '.$langs->trans("None").''; - print '
'; - - $generic_commande->id = $objp->rowid; - $generic_commande->ref = $objp->ref; - $generic_commande->statut = $objp->fk_statut; - $generic_commande->date_commande = $db->jdate($objp->date_commande); - $generic_commande->date_livraison = $db->jdate($objp->date_livraison); - - print ''; - print ''; - - print ''; - - print '
'; - print $generic_commande->getNomUrl(1, 0); - print ''; - if ($generic_commande->hasDelay()) { - print img_picto($langs->trans("Late"), "warning"); - } - print ''; - $filename = dol_sanitizeFileName($objp->ref); - $filedir = $conf->commande->multidir_output[$objp->entity].'/'.dol_sanitizeFileName($objp->ref); - $urlsource = $_SERVER['PHP_SELF'].'?id='.$objp->rowid; - print $formfile->getDocumentsLink($generic_commande->element, $filename, $filedir); - print '
'; - print '
'.$objp->ref_client.''; - print dol_print_date($db->jdate($objp->date_commande), 'day'); - print ''; - print dol_print_date($db->jdate($objp->date_livraison), 'day'); - print ''.$generic_commande->LibStatut($objp->fk_statut, $objp->billed, 5).''; - print ''; - print '
'; - print '
'; - - // Buttons actions - print '
global->INVOICE_CLOSE_ORDERS_OFF_BY_DEFAULT_FORMASSINVOICE) ? ' checked="checked"' : '').' name="autocloseorders"> '.$langs->trans("CloseProcessedOrdersAutomatically"); - print '
'; - print ''; - print ''; - print '
'; - //print ''.$langs->trans("GoBack").''; - print ''; - print '
'; - print '
'; - - print ''; - - $db->free($resql); - } else { - dol_print_error($db); - } -} - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index 1de6d30b681..9aeef877bab 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -595,7 +595,7 @@ if ($object->id > 0) // Show orders we can bill if (empty($conf->global->SUPPLIER_ORDER_TO_INVOICE_STATUS)) { - $sql2 .= " AND c.fk_statut IN (".$db->sanitize(CommandeFournisseur::STATUS_RECEIVED_COMPLETELY).")"; // Must match filter in htdocs/fourn/orderstoinvoice.php + $sql2 .= " AND c.fk_statut IN (".$db->sanitize(CommandeFournisseur::STATUS_RECEIVED_COMPLETELY).")"; // Must match filter in htdocs/fourn/commande/list.php } else { // CommandeFournisseur::STATUS_ORDERSENT.", ".CommandeFournisseur::STATUS_RECEIVED_PARTIALLY.", ".CommandeFournisseur::STATUS_RECEIVED_COMPLETELY $sql2 .= " AND c.fk_statut IN (".$db->sanitize($db->escape($conf->global->SUPPLIER_ORDER_TO_INVOICE_STATUS)).")"; @@ -795,8 +795,7 @@ if ($object->id > 0) { if (!empty($orders2invoice) && $orders2invoice > 0) { - if ($object->status == 1) - { + if ($object->status == 1) { // Company is open print ''; } else { diff --git a/htdocs/fourn/commande/orderstoinvoice.php b/htdocs/fourn/commande/orderstoinvoice.php deleted file mode 100644 index 83dd50a32e0..00000000000 --- a/htdocs/fourn/commande/orderstoinvoice.php +++ /dev/null @@ -1,635 +0,0 @@ - - * Copyright (C) 2004-2013 Laurent Destailleur - * Copyright (C) 2005 Marc Barilley / Ocebo - * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2012 Andreu Bisquerra Gaya - * Copyright (C) 2012 David Rodriguez Martinez - * Copyright (C) 2012-2017 Juanjo Menent - * Copyright (C) 2014 Florian Henry - * Copyright (C) 2015 Marcos García - * Copyright (C) 2018 Frédéric France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/fourn/commande/orderstoinvoice.php - * \ingroup commande - * \brief Page to invoice multiple supplier orders - */ -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; -require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/report.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/modules/supplier_invoice/modules_facturefournisseur.php'; -if (!empty($conf->projet->enabled)) { - require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; -} - -// Load translation files required by the page -$langs->loadLangs(array("orders", "companies", "deliveries")); - -if (!$user->rights->fournisseur->facture->creer) - accessforbidden(); - -$id = (GETPOST('id') ? GETPOST('id', 'int') : GETPOST("facid")); // For backward compatibility -$ref = GETPOST('ref', 'alpha'); -$action = GETPOST('action', 'aZ09'); -$confirm = GETPOST('confirm', 'alpha'); -$sref = GETPOST('sref'); -$sref_client = GETPOST('sref_client'); -$sall = trim((GETPOST('search_all', 'alphanohtml') != '') ?GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml')); -$socid = GETPOST('socid', 'int'); -$selected = GETPOST('orders_to_invoice'); -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); -$search_status = GETPOST('search_status'); - -if (!$sortfield) - $sortfield = 'c.rowid'; -if (!$sortorder) - $sortorder = 'DESC'; - -$now = dol_now(); -$date_start = dol_mktime(0, 0, 0, $_REQUEST["date_startmonth"], $_REQUEST["date_startday"], $_REQUEST["date_startyear"]); // Date for local PHP server -$date_end = dol_mktime(23, 59, 59, $_REQUEST["date_endmonth"], $_REQUEST["date_endday"], $_REQUEST["date_endyear"]); -$date_starty = dol_mktime(0, 0, 0, $_REQUEST["date_start_delymonth"], $_REQUEST["date_start_delyday"], $_REQUEST["date_start_delyyear"]); // Date for local PHP server -$date_endy = dol_mktime(23, 59, 59, $_REQUEST["date_end_delymonth"], $_REQUEST["date_end_delyday"], $_REQUEST["date_end_delyyear"]); - -$extrafields = new ExtraFields($db); - -$object = new FactureFournisseur($db); - -// fetch optionals attributes and labels -$extrafields->fetch_name_optionals_label($object->table_element); - -if ($action == 'create') -{ - if (!GETPOST('createbill')) - { - $action = ''; - } else { - if (!is_array($selected)) - { - //$error++; - setEventMessages($langs->trans('Error_OrderNotChecked'), null, 'errors'); - $action = ''; - } else { - $origin = GETPOST('origin', 'alpha'); - $originid = GETPOST('originid', 'int'); - } - } -} - -// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context -include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; -$hookmanager = new HookManager($db); -$hookmanager->initHooks(array('orderstoinvoicesupplier')); - - -/* - * Actions - */ - -if (($action == 'create' || $action == 'add') && !$error) { - require_once DOL_DOCUMENT_ROOT.'/core/lib/fourn.lib.php'; - if (!empty($conf->projet->enabled)) - require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; - - // Load translation files required by the page - $langs->loadLangs(array("bills", "main", "products")); - - if (isset($_GET['orders_to_invoice'])) { - $orders_id = GETPOST('orders_to_invoice', '', 1); - $n = count($orders_id); - $i = 0; - - $originid = $orders_id[0]; - $_GET['originid'] = $orders_id[0]; - } - if (isset($_POST['orders_to_invoice'])) { - $orders_id = GETPOST('orders_to_invoice', '', 2); - $nn = count($orders_id); - $ii = 0; - - $originid = $orders_id[0]; - $_POST['originid'] = $orders_id[0]; - } - - $projectid = GETPOST('projectid', 'int') ? GETPOST('projectid', 'int') : 0; - $lineid = GETPOST('lineid', 'int'); - $userid = GETPOST('userid', 'int'); - $search_ref = GETPOST('sf_ref') ? GETPOST('sf_ref') : GETPOST('search_ref'); - - // Security check - if ($user->socid) - $socid = $user->socid; - $result = restrictedArea($user, 'fournisseur', $id, 'facture_fourn', 'facture'); - - $usehm = $conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE; - $object = new FactureFournisseur($db); - - // Insert new invoice in database - if ($action == 'add' && $user->rights->fournisseur->facture->creer) { - $object->socid = GETPOST('socid'); - $db->begin(); - $error = 0; - - // Standard or deposit or proforma invoice - $datefacture = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']); - if (empty($datefacture)) { - $datefacture = dol_mktime(date("h"), date("M"), 0, date("m"), date("d"), date("Y")); - } - if (!$error) { - $object->ref = GETPOST('ref', 'nohtml'); - $object->ref_supplier = GETPOST('ref_supplier', 'alpha'); - $object->socid = GETPOST('socid', 'int'); - $object->libelle = (GETPOSTISSET('libelle') ? GETPOST('libelle', 'nohtml') : GETPOST('label', 'nohtml')); - $object->label = (GETPOSTISSET('libelle') ? GETPOST('libelle', 'nohtml') : GETPOST('label', 'nohtml')); - $object->date = $datefacture; - $object->date_echeance = $datedue; - $object->note_public = GETPOST('note_public', 'restricthtml'); - $object->note_private = GETPOST('note_private', 'restricthtml'); - $object->cond_reglement_id = GETPOST('cond_reglement_id'); - $object->mode_reglement_id = GETPOST('mode_reglement_id'); - $projectid = GETPOST('projectid', 'int'); - if ($projectid > 0) - $object->fk_project = $projectid; - - // Auto calculation of date due if not filled by user - if (empty($object->date_echeance)) - $object->date_echeance = $object->calculate_date_lim_reglement(); - - $ret = $extrafields->setOptionalsFromPost(null, $object); - if ($ret < 0) $error++; - - if ($_POST['origin'] && $_POST['originid']) { - $linked_orders_ids = array(); - foreach ($orders_id as $origin => $origin_id) { - $origin_id = (!empty($origin_id) ? $origin_id : $orders_id[$ii]); - $linked_orders_ids[] = $origin_id; - } - $object->linked_objects = array(GETPOST('origin')=>$linked_orders_ids); - $id = $object->create($user); - - if ($id > 0) { - while ($ii < $nn) { - $objectsrc = new CommandeFournisseur($db); - dol_syslog("Try to find source object origin=".$object->origin." originid=".$object->origin_id." to add lines"); - $result = $objectsrc->fetch($orders_id[$ii]); - if ($result > 0) { - $lines = $objectsrc->lines; - if (empty($lines) && method_exists($objectsrc, 'fetch_lines')) { - $objectsrc->fetch_lines(); - $lines = $objectsrc->lines; - } - $fk_parent_line = 0; - $num = count($lines); - for ($i = 0; $i < $num; $i++) { - $desc = ($lines[$i]->desc ? $lines[$i]->desc : $lines[$i]->libelle); - - $desc = ($lines[$i]->desc ? $lines[$i]->desc : $lines[$i]->libelle); - $product_type = ($lines[$i]->product_type ? $lines[$i]->product_type : 0); - - // Dates - // TODO mutualiser - $date_start = $lines[$i]->date_debut_prevue; - if ($lines[$i]->date_debut_reel) - $date_start = $lines[$i]->date_debut_reel; - if ($lines[$i]->date_start) - $date_start = $lines[$i]->date_start; - $date_end = $lines[$i]->date_fin_prevue; - if ($lines[$i]->date_fin_reel) - $date_end = $lines[$i]->date_fin_reel; - if ($lines[$i]->date_end) - $date_end = $lines[$i]->date_end; - - // Reset fk_parent_line for no child products and special product - if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) { - $fk_parent_line = 0; - } - // FIXME Missing $lines[$i]->ref_supplier and $lines[$i]->label into addline and updateline methods. They are filled when coming from order for example. - $result = $object->addline($desc, $lines[$i]->subprice, $lines[$i]->tva_tx, $lines[$i]->localtax1_tx, $lines[$i]->localtax2_tx, $lines[$i]->qty, $lines[$i]->fk_product, $lines[$i]->remise_percent, $date_start, $date_end, 0, $lines[$i]->info_bits, 'HT', $product_type, -1, false, 0, $lines[$i]->fk_unit, $line[$i]->id); - - if ($result > 0) { - $lineid = $result; - } else { - $lineid = 0; - $error++; - break; - } - // Defined the new fk_parent_line - if ($result > 0 && $lines[$i]->product_type == 9) { - $fk_parent_line = $result; - } - } - } else { - $mesgs[] = $objectsrc->error; - $error++; - } - $ii++; - } - } else { - $mesgs[] = $object->error; - $error++; - } - } - } - - // End of object creation, we show it - if ($id > 0 && !$error) { - foreach ($orders_id as $fk_supplier_order) { - $supplier_order = new CommandeFournisseur($db); - if ($supplier_order->fetch($fk_supplier_order) > 0 && $supplier_order->statut == 5) - { - if ($supplier_order->classifyBilled($user) < 0) - { - $db->rollback(); - $action = 'create'; - $_GET["origin"] = $_POST["origin"]; - $_GET["originid"] = $_POST["originid"]; - $mesgs[] = '
'.$object->error.'
'; - - $error++; - break; - } - } - } - - if (!$error) { - $db->commit(); - header('Location: '.DOL_URL_ROOT.'/fourn/facture/card.php?facid='.$id); - exit(); - } - } else { - $db->rollback(); - $action = 'create'; - $_GET["origin"] = $_POST["origin"]; - $_GET["originid"] = $_POST["originid"]; - $mesgs[] = '
'.$object->error.'
'; - } - } -} - -/* - * View - */ - -$html = new Form($db); -$htmlother = new FormOther($db); -$formfile = new FormFile($db); - -// Mode creation -if ($action == 'create' && !$error) { - llxHeader(); - print load_fiche_titre($langs->trans('NewBill')); - - $soc = new Societe($db); - if ($socid) - $res = $soc->fetch($socid); - if ($res) { - $cond_reglement_id = $soc->cond_reglement_supplier_id; - $mode_reglement_id = $soc->mode_reglement_supplier_id; - } - $dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE) ? -1 : ''; - - $objectsrc = new CommandeFournisseur($db); - $listoforders = array(); - foreach ($selected as $sel) { - $result = $objectsrc->fetch($sel); - if ($result > 0) { - $listoforders[] = $objectsrc->ref; - } - - if (empty($cond_reglement_id)) $cond_reglement_id = $objectsrc->cond_reglement_id; - if (empty($mode_reglement_id)) $mode_reglement_id = $objectsrc->mode_reglement_id; - } - - print '
'; - print ''; - print ''; - print ''."\n"; - print ''; - print ''; - print ''; - print ''; - - print ''; - - // Ref - print ''; - - // Ref supplier - print ''; - print ''; - - // Date invoice - print ''; - // Payment term - print ''; - // Payment mode - print ''; - // Project - if (!empty($conf->projet->enabled)) { - $formproject = new FormProjets($db); - - $langs->load('projects'); - print ''; - } - - // Other attributes - $parameters = array( - 'objectsrc' => $objectsrc, - 'idsrc' => $listoforders - ); - $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - - if (empty($reshook)) - { - $object = new FactureFournisseur($db); - print $object->showOptionals($extrafields, 'edit'); - } - - // Modele PDF - print ''; - print '"; - - // Public note - print ''; - print ''; - print ''; - - // Private note - if (empty($user->socid)) { - print ''; - print ''; - print ''; - } - - print '
'.$langs->trans('Ref').''.$langs->trans('Draft').'
'.$langs->trans('RefSupplier').'
'.$langs->trans('Date').''; - print $html->selectDate('', '', '', '', '', "add", 1, 1); - print '
'.$langs->trans('PaymentConditionsShort').''; - $html->select_conditions_paiements(isset($_POST['cond_reglement_id']) ? $_POST['cond_reglement_id'] : $cond_reglement_id, 'cond_reglement_id'); - print '
'.$langs->trans('PaymentMode').''; - $html->select_types_paiements(isset($_POST['mode_reglement_id']) ? $_POST['mode_reglement_id'] : $mode_reglement_id, 'mode_reglement_id'); - print '
'.$langs->trans('Project').''; - $formproject->select_projects($soc->id, $projectid, 'projectid'); - print '
'.$langs->trans('Model').''; - $liste = ModelePDFSuppliersInvoices::liste_modeles($db); - print $html->selectarray('model', $liste, $conf->global->INVOICE_SUPPLIER_ADDON_PDF); - print "
'.$langs->trans('NotePublic').''; - print '
'.$langs->trans('NotePrivate').''; - print '
'; - - while ($i < $n) { - print ''; - - $i++; - } - - // Button "Create Draft" - print '
'; - print "
\n"; - - print ''; - print "\n"; -} - -// Mode liste -if (($action != 'create' && $action != 'add') && !$error) { - llxHeader(); - ?> - - rights->societe->client->voir && !$socid) - $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql .= ' WHERE c.entity = '.$conf->entity; - $sql .= ' AND c.fk_soc = s.rowid'; - - // Show orders we can bill - if (empty($conf->global->SUPPLIER_ORDER_TO_INVOICE_STATUS)) - { - $sql .= " AND c.fk_statut IN (".$db->sanitize($db->escape(CommandeFournisseur::STATUS_RECEIVED_COMPLETELY)).")"; // Must match filter in htdocs/fourn/card.php - } else { - // CommandeFournisseur::STATUS_ORDERSENT.", ".CommandeFournisseur::STATUS_RECEIVED_PARTIALLY.", ".CommandeFournisseur::STATUS_RECEIVED_COMPLETELY - $sql .= " AND c.fk_statut IN (".$db->sanitize($db->escape($conf->global->SUPPLIER_ORDER_TO_INVOICE_STATUS)).")"; - } - - $sql .= " AND c.billed = 0"; - - // Find order that are not already invoiced - //No need due to the billed status - //$sql .= " AND c.rowid NOT IN (SELECT fk_source FROM " . MAIN_DB_PREFIX . "element_element WHERE targettype='invoice_supplier')"; - - if ($socid) - $sql .= ' AND s.rowid = '.$socid; - if (!$user->rights->societe->client->voir && !$socid) - $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; - if ($sref) { - $sql .= natural_search("c.ref", $sref); - } - if ($sall) { - $sql .= natural_search(array("c.ref", "c.note"), $sall); - } - - // Date filter - //$sql.= dolSqlDateFilter("c.date_commande", GETPOST("date_startday", 'int'), GETPOST("date_startmonth", 'int'), GETPOST("date_startyear", 'int')); - //$sql.= dolSqlDateFilter("c.date_livraison", $search_deliveryday, $search_deliverymonth, $search_deliveryyear); - if ($date_start) - $sql .= " AND c.date_commande >= '".$db->idate($date_start)."'"; - if ($date_end) - $sql .= " AND c.date_commande <= '".$db->idate($date_end)."'"; - if ($date_starty) - $sql .= " AND c.date_livraison >= '".$db->idate($date_starty)."'"; - if ($date_endy) - $sql .= " AND c.date_livraison <= '".$db->idate($date_endy)."'"; - - if (!empty($sref_client)) { - $sql .= natural_search('c.ref_supplier', $sref_client); - } - $sql .= ' ORDER BY '.$sortfield.' '.$sortorder; - dol_syslog('fourn/commande/ordertoinvoice.php sql='.$sql); - $resql = $db->query($sql); - - if ($resql) { - if ($socid) { - $soc = new Societe($db); - $soc->fetch($socid); - } - $title = $langs->trans('ListOfSupplierOrders'); - $title .= ' - '.$langs->trans('StatusOrderReceivedAllShort'); - $title .= ' - '.$soc->getNomUrl(1, 'supplier'); - - $num = $db->num_rows($resql); - - print load_fiche_titre($title); - - $i = 0; - $period = $html->selectDate($date_start, 'date_start', 0, 0, 1, '', 1, 0).' - '.$html->selectDate($date_end, 'date_end', 0, 0, 1, '', 1, 0); - $periodely = $html->selectDate($date_starty, 'date_start_dely', 0, 0, 1, '', 1, 0).' - '.$html->selectDate($date_endy, 'date_end_dely', 0, 0, 1, '', 1, 0); - - print '
'; - print ''; - print ''; - - - print ''; - print ''; - print_liste_field_titre('Ref', 'orderstoinvoice.php', 'c.ref', '', '&socid='.$socid, '', $sortfield, $sortorder); - print_liste_field_titre('RefSupplier', 'orderstoinvoice.php', 'c.ref_supplier', '', '&socid='.$socid, '', $sortfield, $sortorder); - print_liste_field_titre('OrderDate', 'orderstoinvoice.php', 'c.date_commande', '', '&socid='.$socid, '', $sortfield, $sortorder, 'center '); - print_liste_field_titre('DeliveryDate', 'orderstoinvoice.php', 'c.date_livraison', '', '&socid='.$socid, '', $sortfield, $sortorder, 'center '); - print_liste_field_titre('Status', '', '', '', '', '', '', '', 'right '); - print_liste_field_titre('GenerateBill', '', '', '', '', '', '', '', 'center '); - print "\n"; - - // Fields title search - print ''; - - print ''; - - // print ''; - - // DATE ORDER - print ''; - - // DATE DELIVERY - print ''; - - // SEARCH BUTTON - print ''; - - // ALL/NONE - print ''; - - print ''; - - $generic_commande = new CommandeFournisseur($db); - - while ($i < $num) { - $objp = $db->fetch_object($resql); - - print ''; - print ''; - - print ''; - - // Order date - print ''; - - // Delivery date - print ''; - - // Statut - print ''; - - // Checkbox - print ''; - - print ''; - - $total = $total + $objp->price; - $subtotal = $subtotal + $objp->price; - $i++; - } - print '
'; - // REF - print ''; - print ''; - print ''; - print ''; - print ''; - print $period; - print ''; - print $periodely; - print ''; - print ''; - print ''; - if ($conf->use_javascript_ajax) - print ''.$langs->trans("All").' / '.$langs->trans("None").''; - print '
'; - - $generic_commande->id = $objp->rowid; - $generic_commande->ref = $objp->ref; - - print ''; - print ''; - - print '
'; - print $generic_commande->getNomUrl(1, $objp->fk_statut); - print ''; - $filename = dol_sanitizeFileName($objp->ref); - $filedir = $conf->fournisseur->commande->dir_output.'/'.dol_sanitizeFileName($objp->ref); - $urlsource = $_SERVER['PHP_SELF'].'?id='.$objp->rowid; - print $formfile->getDocumentsLink($generic_commande->element, $filename, $filedir); - print '
'; - print '
'.$objp->ref_supplier.''; - print dol_print_date($db->jdate($objp->date_commande), 'day'); - print ''; - print dol_print_date($db->jdate($objp->date_livraison), 'day'); - print ''.$generic_commande->LibStatut($objp->fk_statut, 5).''; - print ''; - print '
'; - - /* - * Boutons actions - */ - print '
'; - print '
'; - print ''; - print ''; - print '
'; - // print ''.$langs->trans("GoBack").''; - print ''; - print '
'; - print '
'; - - print '
'; - - $db->free($resql); - } else { - dol_print_error($db); - } -} - -dol_htmloutput_mesg($mesg, $mesgs); - -// End of page -llxFooter(); -$db->close();