NEW Can build vendor invoice from vendor orders

This commit is contained in:
Laurent Destailleur 2020-10-01 19:05:20 +02:00
parent ece8037f42
commit d912908aef
6 changed files with 145 additions and 88 deletions

View File

@ -777,8 +777,6 @@ if ($object->id > 0)
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td colspan="4"><table width="100%" class="nobordernopadding"><tr><td>'.$langs->trans("LastCustomerOrders", ($num <= $MAXLIST ? "" : $MAXLIST)).'</td><td class="right"><a class="notasortlink" href="'.DOL_URL_ROOT.'/commande/list.php?socid='.$object->id.'">'.$langs->trans("AllOrders").'<span class="badge marginleftonlyshort">'.$num.'</span></a></td>'; print '<td colspan="4"><table width="100%" class="nobordernopadding"><tr><td>'.$langs->trans("LastCustomerOrders", ($num <= $MAXLIST ? "" : $MAXLIST)).'</td><td class="right"><a class="notasortlink" href="'.DOL_URL_ROOT.'/commande/list.php?socid='.$object->id.'">'.$langs->trans("AllOrders").'<span class="badge marginleftonlyshort">'.$num.'</span></a></td>';
print '<td width="20px" class="right"><a href="'.DOL_URL_ROOT.'/commande/stats/index.php?socid='.$object->id.'">'.img_picto($langs->trans("Statistics"), 'stats').'</a></td>'; print '<td width="20px" class="right"><a href="'.DOL_URL_ROOT.'/commande/stats/index.php?socid='.$object->id.'">'.img_picto($langs->trans("Statistics"), 'stats').'</a></td>';
//if($num2 > 0) print '<td width="20px" class="right"><a href="'.DOL_URL_ROOT.'/commande/orderstoinvoice.php?socid='.$object->id.'">'.img_picto($langs->trans("CreateInvoiceForThisCustomer"),'object_bill').'</a></td>';
//else print '<td width="20px" class="right"><a href="#">'.img_picto($langs->trans("NoOrdersToInvoice"),'object_bill').'</a></td>';
print '</tr></table></td>'; print '</tr></table></td>';
print '</tr>'; print '</tr>';
} }
@ -1283,7 +1281,7 @@ if ($object->id > 0)
{ {
if ($object->client != 0 && $object->client != 2) if ($object->client != 0 && $object->client != 2)
{ {
if (!empty($orders2invoice) && $orders2invoice > 0) print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/commande/list.php?socid='.$object->id.'&autoselectall=1">'.$langs->trans("CreateInvoiceForThisCustomer").'</a></div>'; if (!empty($orders2invoice) && $orders2invoice > 0) print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/commande/list.php?socid='.$object->id.'&search_billed=0&autoselectall=1">'.$langs->trans("CreateInvoiceForThisCustomer").'</a></div>';
else print '<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans("NoOrdersToInvoice")).'" href="#">'.$langs->trans("CreateInvoiceForThisCustomer").'</a></div>'; else print '<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans("NoOrdersToInvoice")).'" href="#">'.$langs->trans("CreateInvoiceForThisCustomer").'</a></div>';
} else print '<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans("ThirdPartyMustBeEditAsCustomer")).'" href="#">'.$langs->trans("AddBill").'</a></div>'; } else print '<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans("ThirdPartyMustBeEditAsCustomer")).'" href="#">'.$langs->trans("AddBill").'</a></div>';
} }

View File

@ -1102,7 +1102,7 @@ if ($resql)
{ {
if (($obj->fk_statut > 0 && $obj->fk_statut < 3) || ($obj->fk_statut == 3 && $obj->billed == 0)) if (($obj->fk_statut > 0 && $obj->fk_statut < 3) || ($obj->fk_statut == 3 && $obj->billed == 0))
{ {
print '&nbsp;<a href="'.DOL_URL_ROOT.'/commande/list.php?socid='.$companystatic->id.'&autoselectall=1">'; print '&nbsp;<a href="'.DOL_URL_ROOT.'/commande/list.php?socid='.$companystatic->id.'&search_billed=0&autoselectall=1">';
print img_picto($langs->trans("CreateInvoiceForThisCustomer").' : '.$companystatic->name, 'object_bill', 'hideonsmartphone').'</a>'; print img_picto($langs->trans("CreateInvoiceForThisCustomer").' : '.$companystatic->name, 'object_bill', 'hideonsmartphone').'</a>';
} }
} }
@ -1299,7 +1299,7 @@ if ($resql)
} }
// Action column // Action column
print '<td class="nowrap" align="center">'; print '<td class="nowrap center">';
if ($massactionbutton || $massaction) // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined if ($massactionbutton || $massaction) // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
{ {
$selected = 0; $selected = 0;

View File

@ -615,7 +615,7 @@ if ($massaction == 'confirm_createbills') // Create bills from orders
$cmd->fetch_optionals(); $cmd->fetch_optionals();
$objecttmp->socid = $cmd->socid; $objecttmp->socid = $cmd->socid;
$objecttmp->type = Facture::TYPE_STANDARD; $objecttmp->type = $objecttmp::TYPE_STANDARD;
$objecttmp->cond_reglement_id = $cmd->cond_reglement_id; $objecttmp->cond_reglement_id = $cmd->cond_reglement_id;
$objecttmp->mode_reglement_id = $cmd->mode_reglement_id; $objecttmp->mode_reglement_id = $cmd->mode_reglement_id;
$objecttmp->fk_project = $cmd->fk_project; $objecttmp->fk_project = $cmd->fk_project;
@ -742,7 +742,7 @@ if ($massaction == 'confirm_createbills') // Create bills from orders
'HT', 'HT',
0, 0,
$product_type, $product_type,
$ii, $lines[$i]->rang,
$lines[$i]->special_code, $lines[$i]->special_code,
$objecttmp->origin, $objecttmp->origin,
$lines[$i]->rowid, $lines[$i]->rowid,

View File

@ -798,7 +798,7 @@ if ($object->id > 0)
if ($object->status == 1) if ($object->status == 1)
{ {
// Company is open // Company is open
print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/fourn/commande/orderstoinvoice.php?socid='.$object->id.'">'.$langs->trans("CreateInvoiceForThisCustomer").'</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/fourn/commande/list.php?socid='.$object->id.'&search_billed=0&autoselectall=1">'.$langs->trans("CreateInvoiceForThisSupplier").'</a></div>';
} else { } else {
print '<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#">'.$langs->trans("CreateInvoiceForThisCustomer").'</a></div>'; print '<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#">'.$langs->trans("CreateInvoiceForThisCustomer").'</a></div>';
} }

View File

@ -1601,9 +1601,10 @@ class FactureFournisseur extends CommonInvoice
* @param double $pu_ht_devise Amount in currency * @param double $pu_ht_devise Amount in currency
* @param string $ref_supplier Supplier ref * @param string $ref_supplier Supplier ref
* @param string $special_code Special code * @param string $special_code Special code
* @param int $fk_parent_line Parent line id
* @return int >0 if OK, <0 if KO * @return int >0 if OK, <0 if KO
*/ */
public function addline($desc, $pu, $txtva, $txlocaltax1, $txlocaltax2, $qty, $fk_product = 0, $remise_percent = 0, $date_start = '', $date_end = '', $ventil = 0, $info_bits = '', $price_base_type = 'HT', $type = 0, $rang = -1, $notrigger = false, $array_options = 0, $fk_unit = null, $origin_id = 0, $pu_ht_devise = 0, $ref_supplier = '', $special_code = '') public function addline($desc, $pu, $txtva, $txlocaltax1, $txlocaltax2, $qty, $fk_product = 0, $remise_percent = 0, $date_start = '', $date_end = '', $ventil = 0, $info_bits = '', $price_base_type = 'HT', $type = 0, $rang = -1, $notrigger = false, $array_options = 0, $fk_unit = null, $origin_id = 0, $pu_ht_devise = 0, $ref_supplier = '', $special_code = '', $fk_parent_line = 0)
{ {
global $langs, $mysoc, $conf; global $langs, $mysoc, $conf;
@ -1777,7 +1778,7 @@ class FactureFournisseur extends CommonInvoice
$this->line->info_bits = $info_bits; $this->line->info_bits = $info_bits;
$this->line->special_code = ((string) $special_code != '' ? $special_code : $this->special_code); $this->line->special_code = ((string) $special_code != '' ? $special_code : $this->special_code);
$this->line->fk_parent_line = $this->fk_parent_line; $this->line->fk_parent_line = $fk_parent_line;
$this->line->origin = $this->origin; $this->line->origin = $this->origin;
$this->line->origin_id = $origin_id; $this->line->origin_id = $origin_id;
$this->line->fk_unit = $fk_unit; $this->line->fk_unit = $fk_unit;

View File

@ -35,6 +35,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php';
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formorder.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formorder.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
@ -130,6 +131,9 @@ $fieldstosearchall = array(
'cf.ref_supplier'=>'RefSupplierOrder', 'cf.ref_supplier'=>'RefSupplierOrder',
'pd.description'=>'Description', 'pd.description'=>'Description',
's.nom'=>"ThirdParty", 's.nom'=>"ThirdParty",
's.name_alias'=>"AliasNameShort",
's.zip'=>"Zip",
's.town'=>"Town",
'cf.note_public'=>'NotePublic', 'cf.note_public'=>'NotePublic',
); );
if (empty($user->socid)) $fieldstosearchall["cf.note_private"] = "NotePrivate"; if (empty($user->socid)) $fieldstosearchall["cf.note_private"] = "NotePrivate";
@ -180,7 +184,7 @@ $arrayfields = dol_sort_array($arrayfields, 'position');
*/ */
if (GETPOST('cancel', 'alpha')) { $action = 'list'; $massaction = ''; } if (GETPOST('cancel', 'alpha')) { $action = 'list'; $massaction = ''; }
if (!GETPOST('confirmmassaction', 'alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction = ''; } if (!GETPOST('confirmmassaction', 'alpha') && $massaction != 'presend' && $massaction != 'confirm_presend' && $massaction != 'confirm_createsupplierbills') { $massaction = ''; }
$parameters = array('socid'=>$socid); $parameters = array('socid'=>$socid);
$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
@ -244,7 +248,7 @@ if (empty($reshook))
include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
// TODO Move this into mass action include // TODO Move this into mass action include
if ($massaction == 'confirm_createbills') if ($massaction == 'confirm_createsupplierbills')
{ {
$orders = GETPOST('toselect', 'array'); $orders = GETPOST('toselect', 'array');
$createbills_onebythird = GETPOST('createbills_onebythird', 'int'); $createbills_onebythird = GETPOST('createbills_onebythird', 'int');
@ -258,34 +262,36 @@ if (empty($reshook))
$db->begin(); $db->begin();
foreach ($orders as $id_order) { foreach ($orders as $id_order) {
$cmd = new Commande($db); $cmd = new CommandeFournisseur($db);
if ($cmd->fetch($id_order) <= 0) continue; if ($cmd->fetch($id_order) <= 0) continue;
$object = new Facture($db); $objecttmp = new FactureFournisseur($db);
if (!empty($createbills_onebythird) && !empty($TFactThird[$cmd->socid])) $object = $TFactThird[$cmd->socid]; // If option "one bill per third" is set, we use already created order. if (!empty($createbills_onebythird) && !empty($TFactThird[$cmd->socid])) $objecttmp = $TFactThird[$cmd->socid]; // If option "one bill per third" is set, we use already created order.
else { else {
$object->socid = $cmd->socid; $objecttmp->socid = $cmd->socid;
$object->type = Facture::TYPE_STANDARD; $objecttmp->type = $objecttmp::TYPE_STANDARD;
$object->cond_reglement_id = $cmd->cond_reglement_id; $objecttmp->cond_reglement_id = $cmd->cond_reglement_id;
$object->mode_reglement_id = $cmd->mode_reglement_id; $objecttmp->mode_reglement_id = $cmd->mode_reglement_id;
$object->fk_project = $cmd->fk_project; $objecttmp->fk_project = $cmd->fk_project;
$objecttmp->multicurrency_code = $cmd->multicurrency_code;
if (empty($createbills_onebythird)) $objecttmp->ref_client = $cmd->ref_client;
$datefacture = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']); $datefacture = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
if (empty($datefacture)) if (empty($datefacture))
{ {
$datefacture = dol_mktime(date("h"), date("M"), 0, date("m"), date("d"), date("Y")); $datefacture = dol_now();
} }
$object->date = $datefacture; $objecttmp->date = $datefacture;
$object->origin = 'commande'; $objecttmp->origin = 'order_supplier';
$object->origin_id = $id_order; $objecttmp->origin_id = $id_order;
$res = $object->create($user); $res = $objecttmp->create($user);
if ($res > 0) $nb_bills_created++; if ($res > 0) $nb_bills_created++;
} }
if ($object->id > 0) if ($objecttmp->id > 0)
{ {
$sql = "INSERT INTO ".MAIN_DB_PREFIX."element_element ("; $sql = "INSERT INTO ".MAIN_DB_PREFIX."element_element (";
$sql .= "fk_source"; $sql .= "fk_source";
@ -294,9 +300,9 @@ if (empty($reshook))
$sql .= ", targettype"; $sql .= ", targettype";
$sql .= ") VALUES ("; $sql .= ") VALUES (";
$sql .= $id_order; $sql .= $id_order;
$sql .= ", '".$db->escape($object->origin)."'"; $sql .= ", '".$db->escape($objecttmp->origin)."'";
$sql .= ", ".$object->id; $sql .= ", ".$objecttmp->id;
$sql .= ", '".$db->escape($object->element)."'"; $sql .= ", '".$db->escape($objecttmp->element)."'";
$sql .= ")"; $sql .= ")";
if (!$db->query($sql)) if (!$db->query($sql))
@ -323,7 +329,7 @@ if (empty($reshook))
{ {
// Negative line, we create a discount line // Negative line, we create a discount line
$discount = new DiscountAbsolute($db); $discount = new DiscountAbsolute($db);
$discount->fk_soc = $object->socid; $discount->fk_soc = $objecttmp->socid;
$discount->amount_ht = abs($lines[$i]->total_ht); $discount->amount_ht = abs($lines[$i]->total_ht);
$discount->amount_tva = abs($lines[$i]->total_tva); $discount->amount_tva = abs($lines[$i]->total_tva);
$discount->amount_ttc = abs($lines[$i]->total_ttc); $discount->amount_ttc = abs($lines[$i]->total_ttc);
@ -333,7 +339,7 @@ if (empty($reshook))
$discountid = $discount->create($user); $discountid = $discount->create($user);
if ($discountid > 0) if ($discountid > 0)
{ {
$result = $object->insert_discount($discountid); $result = $objecttmp->insert_discount($discountid);
//$result=$discount->link_to_invoice($lineid,$id); //$result=$discount->link_to_invoice($lineid,$id);
} else { } else {
setEventMessages($discount->error, $discount->errors, 'errors'); setEventMessages($discount->error, $discount->errors, 'errors');
@ -358,32 +364,31 @@ if (empty($reshook))
{ {
$fk_parent_line = 0; $fk_parent_line = 0;
} }
$result = $object->addline( $result = $objecttmp->addline(
$desc, $desc,
$lines[$i]->subprice, $lines[$i]->subprice,
$lines[$i]->qty,
$lines[$i]->tva_tx, $lines[$i]->tva_tx,
$lines[$i]->localtax1_tx, $lines[$i]->localtax1_tx,
$lines[$i]->localtax2_tx, $lines[$i]->localtax2_tx,
$lines[$i]->fk_product, $lines[$i]->qty,
$lines[$i]->fk_product,
$lines[$i]->remise_percent, $lines[$i]->remise_percent,
$date_start, $date_start,
$date_end, $date_end,
0, 0,
$lines[$i]->info_bits, $lines[$i]->info_bits,
$lines[$i]->fk_remise_except, 'HT',
'HT', $product_type,
0, $lines[$i]->rang,
$product_type, false,
$ii, $lines[$i]->array_options,
$lines[$i]->special_code, $lines[$i]->fk_unit,
$object->origin, $objecttmp->origin_id,
$lines[$i]->rowid, $lines[$i]->pa_ht,
$fk_parent_line, $lines[$i]->ref_supplier,
$lines[$i]->fk_fournprice, $lines[$i]->special_code,
$lines[$i]->pa_ht, $fk_parent_line
$lines[$i]->label );
);
if ($result > 0) if ($result > 0)
{ {
$lineid = $result; $lineid = $result;
@ -404,8 +409,8 @@ if (empty($reshook))
$cmd->classifyBilled($user); // TODO Move this in workflow like done for customer orders $cmd->classifyBilled($user); // TODO Move this in workflow like done for customer orders
if (!empty($createbills_onebythird) && empty($TFactThird[$cmd->socid])) $TFactThird[$cmd->socid] = $object; if (!empty($createbills_onebythird) && empty($TFactThird[$cmd->socid])) $TFactThird[$cmd->socid] = $objecttmp;
else $TFact[$object->id] = $object; else $TFact[$objecttmp->id] = $objecttmp;
} }
// Build doc with all invoices // Build doc with all invoices
@ -415,38 +420,67 @@ if (empty($reshook))
if (!$error && $validate_invoices) { if (!$error && $validate_invoices) {
$massaction = $action = 'builddoc'; $massaction = $action = 'builddoc';
foreach ($TAllFact as &$object) foreach ($TAllFact as &$objecttmp)
{ {
$object->validate($user); $objecttmp->validate($user);
if ($result <= 0) if ($result <= 0)
{ {
$error++; $error++;
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($objecttmp->error, $objecttmp->errors, 'errors');
break; break;
} }
$id = $object->id; // For builddoc action $id = $objecttmp->id; // For builddoc action
// Fac builddoc // Fac builddoc
$donotredirect = 1; $donotredirect = 1;
$upload_dir = $conf->facture->dir_output; $upload_dir = $conf->fournisseur->facture->dir_output;
$permissiontoadd = $user->rights->facture->creer; $permissiontoadd = $user->rights->fournisseur->facture->creer;
include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php'; //include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php';
} }
$massaction = $action = 'confirm_createbills'; $massaction = $action = 'confirm_createsupplierbills';
} }
if (!$error) if (!$error)
{ {
$db->commit(); $db->commit();
setEventMessages($langs->trans('BillCreated', $nb_bills_created), null, 'mesgs'); setEventMessages($langs->trans('BillCreated', $nb_bills_created), null, 'mesgs');
// Make a redirect to avoid to bill twice if we make a refresh or back
$param = '';
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage);
if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit);
if ($sall) $param .= '&sall='.urlencode($sall);
if ($socid > 0) $param .= '&socid='.urlencode($socid);
if ($search_status != '') $param .= '&search_status='.urlencode($search_status);
if ($search_orderday) $param .= '&search_orderday='.urlencode($search_orderday);
if ($search_ordermonth) $param .= '&search_ordermonth='.urlencode($search_ordermonth);
if ($search_orderyear) $param .= '&search_orderyear='.urlencode($search_orderyear);
if ($search_deliveryday) $param .= '&search_deliveryday='.urlencode($search_deliveryday);
if ($search_deliverymonth) $param .= '&search_deliverymonth='.urlencode($search_deliverymonth);
if ($search_deliveryyear) $param .= '&search_deliveryyear='.urlencode($search_deliveryyear);
if ($search_ref) $param .= '&search_ref='.urlencode($search_ref);
if ($search_company) $param .= '&search_company='.urlencode($search_company);
if ($search_ref_customer) $param .= '&search_ref_customer='.urlencode($search_ref_customer);
if ($search_user > 0) $param .= '&search_user='.urlencode($search_user);
if ($search_sale > 0) $param .= '&search_sale='.urlencode($search_sale);
if ($search_total_ht != '') $param .= '&search_total_ht='.urlencode($search_total_ht);
if ($search_total_vat != '') $param .= '&search_total_vat='.urlencode($search_total_vat);
if ($search_total_ttc != '') $param .= '&search_total_ttc='.urlencode($search_total_ttc);
if ($search_project_ref >= 0) $param .= "&search_project_ref=".urlencode($search_project_ref);
if ($show_files) $param .= '&show_files='.urlencode($show_files);
if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss);
if ($billed != '') $param .= '&billed='.urlencode($billed);
header("Location: ".$_SERVER['PHP_SELF'].'?'.$param);
exit;
} else { } else {
$db->rollback(); $db->rollback();
$action = 'create'; $action = 'create';
$_GET["origin"] = $_POST["origin"]; $_GET["origin"] = $_POST["origin"];
$_GET["originid"] = $_POST["originid"]; $_GET["originid"] = $_POST["originid"];
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages("Error", null, 'errors');
$error++; $error++;
} }
} }
@ -566,6 +600,7 @@ $sql .= $hookmanager->resPrint;
$sql .= $db->order($sortfield, $sortorder); $sql .= $db->order($sortfield, $sortorder);
// Count total nb of records
$nbtotalofrecords = ''; $nbtotalofrecords = '';
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
{ {
@ -579,6 +614,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
} }
$sql .= $db->plimit($limit + 1, $offset); $sql .= $db->plimit($limit + 1, $offset);
//print $sql;
$resql = $db->query($sql); $resql = $db->query($sql);
if ($resql) if ($resql)
@ -607,23 +643,24 @@ if ($resql)
llxHeader('', $title, $help_url); llxHeader('', $title, $help_url);
$param = ''; $param = '';
if ($socid > 0) $param .= '&socid='.$socid; if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage);
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit);
if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.$limit; if ($sall) $param .= '&sall='.urlencode($sall);
if ($sall) $param .= "&search_all=".$sall; if ($socid > 0) $param .= '&socid='.urlencode($socid);
if ($search_orderday) $param .= '&search_orderday='.$search_orderday; if ($sall) $param .= "&search_all=".urlencode($sall);
if ($search_ordermonth) $param .= '&search_ordermonth='.$search_ordermonth; if ($search_orderday) $param .= '&search_orderday='.urlencode($search_orderday);
if ($search_orderyear) $param .= '&search_orderyear='.$search_orderyear; if ($search_ordermonth) $param .= '&search_ordermonth='.urlencode($search_ordermonth);
if ($search_deliveryday) $param .= '&search_deliveryday='.$search_deliveryday; if ($search_orderyear) $param .= '&search_orderyear='.urlencode($search_orderyear);
if ($search_deliverymonth) $param .= '&search_deliverymonth='.$search_deliverymonth; if ($search_deliveryday) $param .= '&search_deliveryday='.urlencode($search_deliveryday);
if ($search_deliveryyear) $param .= '&search_deliveryyear='.$search_deliveryyear; if ($search_deliverymonth) $param .= '&search_deliverymonth='.urlencode($search_deliverymonth);
if ($search_ref) $param .= '&search_ref='.$search_ref; if ($search_deliveryyear) $param .= '&search_deliveryyear='.urlencode($search_deliveryyear);
if ($search_company) $param .= '&search_company='.$search_company; if ($search_ref) $param .= '&search_ref='.urlencode($search_ref);
if ($search_user > 0) $param .= '&search_user='.$search_user; if ($search_company) $param .= '&search_company='.urlencode($search_company);
if ($search_request_author) $param .= '&search_request_author='.$search_request_author; if ($search_user > 0) $param .= '&search_user='.urlencode($search_user);
if ($search_sale > 0) $param .= '&search_sale='.$search_sale; if ($search_request_author) $param .= '&search_request_author='.urlencode($search_request_author);
if ($search_total_ht != '') $param .= '&search_total_ht='.$search_total_ht; if ($search_sale > 0) $param .= '&search_sale='.urlencode($search_sale);
if ($search_total_ttc != '') $param .= "&search_total_ttc=".$search_total_ttc; if ($search_total_ht != '') $param .= '&search_total_ht='.urlencode($search_total_ht);
if ($search_total_ttc != '') $param .= "&search_total_ttc=".urlencode($search_total_ttc);
if ($search_multicurrency_code != '') $param .= '&search_multicurrency_code='.urlencode($search_multicurrency_code); if ($search_multicurrency_code != '') $param .= '&search_multicurrency_code='.urlencode($search_multicurrency_code);
if ($search_multicurrency_tx != '') $param .= '&search_multicurrency_tx='.urlencode($search_multicurrency_tx); if ($search_multicurrency_tx != '') $param .= '&search_multicurrency_tx='.urlencode($search_multicurrency_tx);
if ($search_multicurrency_montant_ht != '') $param .= '&search_multicurrency_montant_ht='.urlencode($search_multicurrency_montant_ht); if ($search_multicurrency_montant_ht != '') $param .= '&search_multicurrency_montant_ht='.urlencode($search_multicurrency_montant_ht);
@ -644,7 +681,7 @@ if ($resql)
'builddoc'=>$langs->trans("PDFMerge"), 'builddoc'=>$langs->trans("PDFMerge"),
'presend'=>$langs->trans("SendByMail"), 'presend'=>$langs->trans("SendByMail"),
); );
//if($user->rights->fournisseur->facture->creer) $arrayofmassactions['createbills']=$langs->trans("CreateInvoiceForThisCustomer"); if ($user->rights->fournisseur->facture->creer) $arrayofmassactions['createbills'] = $langs->trans("CreateInvoiceForThisSupplier");
if ($user->rights->fournisseur->commande->supprimer) $arrayofmassactions['predelete'] = '<span class="fa fa-trash paddingrightonly"></span>'.$langs->trans("Delete"); if ($user->rights->fournisseur->commande->supprimer) $arrayofmassactions['predelete'] = '<span class="fa fa-trash paddingrightonly"></span>'.$langs->trans("Delete");
if (in_array($massaction, array('presend', 'predelete', 'createbills'))) $arrayofmassactions = array(); if (in_array($massaction, array('presend', 'predelete', 'createbills'))) $arrayofmassactions = array();
$massactionbutton = $form->selectMassAction('', $arrayofmassactions); $massactionbutton = $form->selectMassAction('', $arrayofmassactions);
@ -653,15 +690,16 @@ if ($resql)
if (!empty($socid)) $url .= '&socid='.$socid; if (!empty($socid)) $url .= '&socid='.$socid;
$newcardbutton = dolGetButtonTitle($langs->trans('NewOrder'), '', 'fa fa-plus-circle', $url, '', $user->rights->fournisseur->commande->creer); $newcardbutton = dolGetButtonTitle($langs->trans('NewOrder'), '', 'fa fa-plus-circle', $url, '', $user->rights->fournisseur->commande->creer);
// Fields title search // Lines of title fields
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'; print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">'; if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
print '<input type="hidden" name="token" value="'.newToken().'">'; print '<input type="hidden" name="token" value="'.newToken().'">';
print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">'; print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
print '<input type="hidden" name="action" value="list">'; print '<input type="hidden" name="action" value="list">';
print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">'; print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
print '<input type="hidden" name="socid" value="'.$socid.'">';
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'supplier_order', 0, $newcardbutton, '', $limit, 0, 0, 1); print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'supplier_order', 0, $newcardbutton, '', $limit, 0, 0, 1);
@ -674,11 +712,11 @@ if ($resql)
if ($massaction == 'createbills') if ($massaction == 'createbills')
{ {
//var_dump($_REQUEST); //var_dump($_REQUEST);
print '<input type="hidden" name="massaction" value="confirm_createbills">'; print '<input type="hidden" name="massaction" value="confirm_createsupplierbills">';
print '<table class="border" width="100%" >'; print '<table class="noborder" width="100%" >';
print '<tr>'; print '<tr>';
print '<td class="titlefieldmiddle">'; print '<td class="titlefield">';
print $langs->trans('DateInvoice'); print $langs->trans('DateInvoice');
print '</td>'; print '</td>';
print '<td>'; print '<td>';
@ -760,7 +798,17 @@ if ($resql)
$varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage;
$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
if ($massactionbutton) $selectedfields .= $form->showCheckAddButtons('checkforselect', 1); $selectedfields .= $form->showCheckAddButtons('checkforselect', 1);
if (GETPOST('autoselectall', 'int')) {
$selectedfields .= '<script>';
$selectedfields .= ' $(document).ready(function() {';
$selectedfields .= ' console.log("Autoclick on checkforselects");';
$selectedfields .= ' $("#checkforselects").click();';
$selectedfields .= ' $("#massaction").val("createbills").change();';
$selectedfields .= ' });';
$selectedfields .= '</script>';
}
print '<div class="div-table-responsive">'; print '<div class="div-table-responsive">';
print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n"; print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
@ -933,6 +981,7 @@ if ($resql)
print "</tr>\n"; print "</tr>\n";
// Fields title
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
if (!empty($arrayfields['cf.ref']['checked'])) print_liste_field_titre($arrayfields['cf.ref']['label'], $_SERVER["PHP_SELF"], "cf.ref", "", $param, '', $sortfield, $sortorder); if (!empty($arrayfields['cf.ref']['checked'])) print_liste_field_titre($arrayfields['cf.ref']['label'], $_SERVER["PHP_SELF"], "cf.ref", "", $param, '', $sortfield, $sortorder);
if (!empty($arrayfields['cf.ref_supplier']['checked'])) print_liste_field_titre($arrayfields['cf.ref_supplier']['label'], $_SERVER["PHP_SELF"], "cf.ref_supplier", "", $param, '', $sortfield, $sortorder, 'tdoverflowmax100imp '); if (!empty($arrayfields['cf.ref_supplier']['checked'])) print_liste_field_titre($arrayfields['cf.ref_supplier']['label'], $_SERVER["PHP_SELF"], "cf.ref_supplier", "", $param, '', $sortfield, $sortorder, 'tdoverflowmax100imp ');
@ -983,6 +1032,12 @@ if ($resql)
{ {
$obj = $db->fetch_object($resql); $obj = $db->fetch_object($resql);
$notshippable = 0;
$warning = 0;
$text_info = '';
$text_warning = '';
$nbprod = 0;
$objectstatic->id = $obj->rowid; $objectstatic->id = $obj->rowid;
$objectstatic->ref = $obj->ref; $objectstatic->ref = $obj->ref;
$objectstatic->ref_supplier = $obj->ref_supplier; $objectstatic->ref_supplier = $obj->ref_supplier;
@ -1220,22 +1275,25 @@ if ($resql)
if (!$i) $totalarray['nbfield']++; if (!$i) $totalarray['nbfield']++;
print "</tr>\n"; print "</tr>\n";
$total += $obj->total_ht;
$subtotal += $obj->total_ht;
$i++; $i++;
} }
// Show total line // Show total line
include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php'; include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php';
$db->free($resql);
$parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql); $parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql);
$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters); // Note that $action and $object may have been modified by hook $reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters); // Note that $action and $object may have been modified by hook
print $hookmanager->resPrint; print $hookmanager->resPrint;
print "</table>\n"; print '</table>'."\n";
print '</div>'; print '</div>';
print "</form>\n";
$db->free($resql); print '</form>'."\n";
$hidegeneratedfilelistifempty = 1; $hidegeneratedfilelistifempty = 1;
if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files) $hidegeneratedfilelistifempty = 0; if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files) $hidegeneratedfilelistifempty = 0;