NEW note, contact and lines on card

This commit is contained in:
atm-quentin 2018-10-08 16:54:33 +02:00
parent 095d851e79
commit c6ab79bad3
9 changed files with 195 additions and 290 deletions

View File

@ -962,6 +962,9 @@ abstract class CommonObject
if($this->element=='shipping' && $this->origin_id != 0) {
$id=$this->origin_id;
$element='commande';
} else if($this->element=='reception' && $this->origin_id != 0) {
$id=$this->origin_id;
$element='order_supplier';
} else {
$id=$this->id;
$element=$this->element;
@ -982,7 +985,7 @@ abstract class CommonObject
$sql.= " AND tc.code = '".$code."'";
$sql.= " AND tc.active = 1";
if ($status) $sql.= " AND ec.statut = ".$status;
dol_syslog(get_class($this)."::getIdContact", LOG_DEBUG);
$resql=$this->db->query($sql);
if ($resql)
@ -998,7 +1001,6 @@ abstract class CommonObject
$this->error=$this->db->error();
return null;
}
return $result;
}
@ -1193,6 +1195,7 @@ abstract class CommonObject
{
if ($this->origin == 'shipping') $this->origin = 'expedition';
if ($this->origin == 'delivery') $this->origin = 'livraison';
if ($this->origin == 'order_supplier') $this->origin = 'commandeFournisseur';
$origin = $this->origin;
@ -3105,9 +3108,13 @@ abstract class CommonObject
{
if (empty($totalToShip)) $totalToShip=0; // Avoid warning because $totalToShip is ''
$totalToShip+=$line->qty_shipped; // defined for shipment only
}else if ($line->element == 'commandefournisseurdispatch' && isset($line->qty))
{
if (empty($totalToShip)) $totalToShip=0;
$totalToShip+=$line->qty; // defined for reception only
}
// Define qty, weight, volume, weight_units, volume_units
// Define qty, weight, volume, weight_units, volume_units
if ($this->element == 'shipping') {
// for shipments
$qty = $line->qty_shipped ? $line->qty_shipped : 0;

View File

@ -3932,10 +3932,10 @@ function showDimensionInBestUnit($dimension, $unit, $type, $outputlangs, $round=
$dimension = $dimension / 1000;
$unit = $unit + 3;
}
$ret=price($dimension, 0, $outputlangs, 0, 0, $round).' '.measuring_units_string($unit, $type);
return $ret;
return $ret;
}

View File

@ -126,7 +126,7 @@ class pdf_squille extends ModelePdfReception
$outputlangs->load("products");
$outputlangs->load("propal");
$outputlangs->load("deliveries");
$outputlangs->load("sendings");
$outputlangs->load("receptions");
$outputlangs->load("productbatch");
$nblignes = count($object->lines);
@ -182,13 +182,13 @@ class pdf_squille extends ModelePdfReception
// Definition de $dir et $file
if ($object->specimen)
{
$dir = $conf->reception->dir_output."/sending";
$dir = $conf->reception->dir_output;
$file = $dir . "/SPECIMEN.pdf";
}
else
{
$expref = dol_sanitizeFileName($object->ref);
$dir = $conf->reception->dir_output."/sending/" . $expref;
$dir = $conf->reception->dir_output."/" . $expref;
$file = $dir . "/" . $expref . ".pdf";
}
@ -309,10 +309,10 @@ class pdf_squille extends ModelePdfReception
if ($object->reception_method_id > 0)
{
// Get code using getLabelFromKey
$code=$outputlangs->getLabelFromKey($this->db,$object->reception_method_id,'c_shipment_mode','rowid','code');
$code=$outputlangs->getLabelFromKey($this->db,$object->shipment_method_id,'c_shipment_mode','rowid','code');
$label='';
if ($object->tracking_url != $object->tracking_number) $label.=$outputlangs->trans("LinkToTrackYourPackage")."<br>";
$label.=$outputlangs->trans("SendingMethod").": ".$outputlangs->trans("SendingMethod".strtoupper($code));
$label.=$outputlangs->trans("ReceptionMethod").": ".$outputlangs->trans("ReceptionMethod".strtoupper($code));
//var_dump($object->tracking_url != $object->tracking_number);exit;
if ($object->tracking_url != $object->tracking_number)
{
@ -405,6 +405,7 @@ class pdf_squille extends ModelePdfReception
$pageposafter=$pageposbefore;
//print $pageposafter.'-'.$pageposbefore;exit;
$pdf->setPageOrientation('', 1, $heightforfooter); // The only function to edit the bottom margin of current page to set it.
pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxpicture-$curX,3,$curX,$curY,$hideref,$hidedesc);
$pageposafter=$pdf->getPage();
@ -453,14 +454,14 @@ class pdf_squille extends ModelePdfReception
$pdf->SetXY($this->posxweightvol, $curY);
$weighttxt='';
if ($object->lines[$i]->fk_product_type == 0 && $object->lines[$i]->weight)
if ($object->lines[$i]->fk_product_type == 0 && $object->lines[$i]->product->weight)
{
$weighttxt=round($object->lines[$i]->weight * $object->lines[$i]->qty_shipped, 5).' '.measuring_units_string($object->lines[$i]->weight_units,"weight");
$weighttxt=round($object->lines[$i]->product->weight * $object->lines[$i]->qty, 5).' '.measuring_units_string($object->lines[$i]->product->weight_units,"weight");
}
$voltxt='';
if ($object->lines[$i]->fk_product_type == 0 && $object->lines[$i]->volume)
if ($object->lines[$i]->fk_product_type == 0 && $object->lines[$i]->product->volume)
{
$voltxt=round($object->lines[$i]->volume * $object->lines[$i]->qty_shipped, 5).' '.measuring_units_string($object->lines[$i]->volume_units?$object->lines[$i]->volume_units:0,"volume");
$voltxt=round($object->lines[$i]->product->volume * $object->lines[$i]->qty, 5).' '.measuring_units_string($object->lines[$i]->product->volume_units?$object->lines[$i]->product->volume_units:0,"volume");
}
$pdf->writeHTMLCell($this->posxqtyordered - $this->posxweightvol + 2, 3, $this->posxweightvol - 1, $curY, $weighttxt.(($weighttxt && $voltxt)?'<br>':'').$voltxt, 0, 0, false, true, 'C');
@ -473,7 +474,7 @@ class pdf_squille extends ModelePdfReception
}
$pdf->SetXY($this->posxqtytoship, $curY);
$pdf->MultiCell(($this->posxpuht - $this->posxqtytoship), 3, $object->lines[$i]->qty_shipped,'','C');
$pdf->MultiCell(($this->posxpuht - $this->posxqtytoship), 3, $object->lines[$i]->qty,'','C');
if(!empty($conf->global->MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT))
{
@ -622,18 +623,20 @@ class pdf_squille extends ModelePdfReception
$totalVolume=$tmparray['volume'];
$totalOrdered=$tmparray['ordered'];
$totalToShip=$tmparray['toship'];
// Set trueVolume and volume_units not currently stored into database
if ($object->trueWidth && $object->trueHeight && $object->trueDepth)
{
$object->trueVolume=price(($object->trueWidth * $object->trueHeight * $object->trueDepth), 0, $outputlangs, 0, 0);
$object->volume_units=$object->size_units * 3;
}
if ($totalWeight!='') $totalWeighttoshow=showDimensionInBestUnit($totalWeight, 0, "weight", $outputlangs);
if ($totalVolume!='') $totalVolumetoshow=showDimensionInBestUnit($totalVolume, 0, "volume", $outputlangs);
if ($object->trueWeight) $totalWeighttoshow=showDimensionInBestUnit($object->trueWeight, $object->weight_units, "weight", $outputlangs);
if ($object->trueVolume) $totalVolumetoshow=showDimensionInBestUnit($object->trueVolume, $object->volume_units, "volume", $outputlangs);
$pdf->SetFillColor(255,255,255);
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("Total"), 0, 'L', 1);
@ -740,7 +743,7 @@ class pdf_squille extends ModelePdfReception
if (empty($hidetop))
{
$pdf->SetXY($this->posxqtytoship, $tab_top+1);
$pdf->MultiCell(($this->posxpuht - $this->posxqtytoship), 2, $outputlangs->transnoentities("QtyToShip"),'','C');
$pdf->MultiCell(($this->posxpuht - $this->posxqtytoship), 2, $outputlangs->transnoentities("QtyToReceive"),'','C');
}
if(!empty($conf->global->MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT)) {
@ -834,7 +837,7 @@ class pdf_squille extends ModelePdfReception
//$pdf->Rect($this->marge_gauche, $this->marge_haute, $this->page_largeur-$this->marge_gauche-$this->marge_droite, 30);
if (! empty($conf->barcode->enabled))
{
// TODO Build code bar with function writeBarCode of barcode module for sending ref $object->ref
// TODO Build code bar with function writeBarCode of barcode module for reception ref $object->ref
//$pdf->SetXY($this->marge_gauche+3, $this->marge_haute+3);
//$pdf->Image($logo,10, 5, 0, 24);
}
@ -842,7 +845,7 @@ class pdf_squille extends ModelePdfReception
$pdf->SetDrawColor(128,128,128);
if (! empty($conf->barcode->enabled))
{
// TODO Build code bar with function writeBarCode of barcode module for sending ref $object->ref
// TODO Build code bar with function writeBarCode of barcode module for reception ref $object->ref
//$pdf->SetXY($this->marge_gauche+3, $this->marge_haute+3);
//$pdf->Image($logo,10, 5, 0, 24);
}
@ -854,7 +857,7 @@ class pdf_squille extends ModelePdfReception
$pdf->SetFont('','B', $default_font_size + 2);
$pdf->SetXY($posx,$posy);
$pdf->SetTextColor(0,0,60);
$title=$outputlangs->transnoentities("SendingSheet");
$title=$outputlangs->transnoentities("ReceptionSheet");
$pdf->MultiCell($w, 4, $title, '', 'R');
$pdf->SetFont('','', $default_font_size + 1);
@ -863,7 +866,7 @@ class pdf_squille extends ModelePdfReception
$pdf->SetXY($posx,$posy);
$pdf->SetTextColor(0,0,60);
$pdf->MultiCell($w, 4, $outputlangs->transnoentities("RefSending") ." : ".$object->ref, '', 'R');
$pdf->MultiCell($w, 4, $outputlangs->transnoentities("RefReception") ." : ".$object->ref, '', 'R');
// Date planned delivery
if (! empty($object->date_delivery))
@ -874,12 +877,12 @@ class pdf_squille extends ModelePdfReception
$pdf->MultiCell($w, 4, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->date_delivery,"day",false,$outputlangs,true), '', 'R');
}
if (! empty($object->thirdparty->code_client))
if (! empty($object->thirdparty->code_fournisseur))
{
$posy+=4;
$pdf->SetXY($posx,$posy);
$pdf->SetTextColor(0,0,60);
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->thirdparty->code_client), '', 'R');
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("SupplierCode")." : " . $outputlangs->transnoentities($object->thirdparty->code_fournisseur), '', 'R');
}
@ -891,11 +894,11 @@ class pdf_squille extends ModelePdfReception
$origin_id = $object->origin_id;
// TODO move to external function
if (! empty($conf->$origin->enabled)) // commonly $origin='commande'
if (! empty($conf->fournisseur->enabled)) // commonly $origin='commande'
{
$outputlangs->load('orders');
$classname = ucfirst($origin);
$classname = 'CommandeFournisseur';
$linkedobject = new $classname($this->db);
$result=$linkedobject->fetch($origin_id);
if ($result >= 0)
@ -962,7 +965,8 @@ class pdf_squille extends ModelePdfReception
// If RECEPTION contact defined, we use it
$usecontact=false;
$arrayidcontact=$object->$origin->getIdContact('external','RECEPTION');
$arrayidcontact=$object->$origin->getIdContact('external','SHIPPING');
if (count($arrayidcontact) > 0)
{
$usecontact=true;

View File

@ -34,6 +34,7 @@ elseif ($module == 'order_supplier') { $permission=$user->rights->fournisseur->c
elseif ($module == 'project') { $permission=$user->rights->projet->creer; }
elseif ($module == 'action') { $permission=$user->rights->agenda->myactions->create; }
elseif ($module == 'shipping') { $permission=$user->rights->expedition->creer; }
elseif ($module == 'reception') { $permission=$user->rights->reception->creer; }
elseif ($module == 'project_task') { $permission=$user->rights->projet->creer; }
elseif (! isset($permission) && isset($user->rights->$module->creer))
{
@ -86,7 +87,7 @@ if ($permission) {
<div class="tagtd maxwidthonsmartphone">
<?php
$tmpobject=$object;
if ($object->element == 'shipping' && is_object($objectsrc)) $tmpobject=$objectsrc;
if (($object->element == 'shipping' || $object->element == 'reception') && is_object($objectsrc)) $tmpobject=$objectsrc;
echo $formcompany->selectTypeContact($tmpobject, '', 'type','internal');
?></div>
<div class="tagtd">&nbsp;</div>
@ -125,7 +126,7 @@ if ($permission) {
<div class="tagtd maxwidthonsmartphone noborderbottom">
<?php
$tmpobject=$object;
if ($object->element == 'shipping' && is_object($objectsrc)) $tmpobject=$objectsrc;
if (($object->element == 'shipping'|| $object->element == 'reception') && is_object($objectsrc)) $tmpobject=$objectsrc;
$formcompany->selectTypeContact($tmpobject, '', 'type','external'); ?>
</div>
<div class="tagtd noborderbottom">&nbsp;</div>
@ -155,7 +156,7 @@ if ($permission) {
foreach($arrayofsource as $source) {
$tmpobject=$object;
if ($object->element == 'shipping' && is_object($objectsrc)) $tmpobject=$objectsrc;
if (($object->element == 'shipping'|| $object->element == 'reception') && is_object($objectsrc)) $tmpobject=$objectsrc;
$tab = $tmpobject->liste_contact(-1,$source);
$num=count($tab);

View File

@ -333,16 +333,23 @@ class CommandeFournisseurDispatch extends CommonObject
if (! $error)
{
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
{
if(empty($this->id) && !empty($this->rowid))$this->id=$this->rowid;
$result=$this->insertExtraFields();
if ($result < 0)
{
$error++;
}
}
if (! $notrigger)
{
// Uncomment this and change MYOBJECT to your own tag if you
// want this action calls a trigger.
//// Call triggers
//$result=$this->call_trigger('MYOBJECT_MODIFY',$user);
//if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
//// End call triggers
}
// Call trigger
$result=$this->call_trigger('LINERECEPTION_UPDATE',$user);
if ($result < 0) $error++;
// End call triggers
}
}
// Commit or rollback

View File

@ -166,17 +166,17 @@ if (empty($reshook))
$result = $object->setIncoterms(GETPOST('incoterm_id', 'int'), GETPOST('location_incoterms', 'alpha'));
}
if ($action == 'setref_customer')
if ($action == 'setref_supplier')
{
$result = $object->fetch($id);
if ($result < 0) {
setEventMessages($object->error, $object->errors, 'errors');
}
$result = $object->setValueFrom('ref_customer', GETPOST('ref_customer','alpha'), '', null, 'text', '', $user, 'RECEPTION_MODIFY');
$result = $object->setValueFrom('ref_supplier', GETPOST('ref_supplier','alpha'), '', null, 'text', '', $user, 'RECEPTION_MODIFY');
if ($result < 0) {
setEventMessages($object->error, $object->errors, 'errors');
$action = 'editref_customer';
$action = 'editref_supplier';
} else {
header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
exit;
@ -622,202 +622,77 @@ if (empty($reshook))
else if ($action == 'updateline' && $user->rights->reception->creer && GETPOST('save'))
{
// Clean parameters
$qty=0;
$qty = 0;
$entrepot_id = 0;
$batch_id = 0;
$lines = $object->lines;
$num_prod = count($lines);
for ($i = 0 ; $i < $num_prod ; $i++)
for ($i = 0; $i < $num_prod; $i++)
{
if ($lines[$i]->id == $line_id) // we have found line to update
if ($lines[$i]->id == $line_id) // we have found line to update
{
$line = new CommandeFournisseurDispatch($db);
$line->fetch($line_id);
// Extrafields Lines
$extrafieldsline = new ExtraFields($db);
$extralabelsline = $extrafieldsline->fetch_name_optionals_label($object->table_element_line);
$line->array_options = $extrafieldsline->getOptionalsFromPost($extralabelsline);
// Unset extrafield POST Data
if (is_array($extralabelsline)) {
foreach ($extralabelsline as $key => $value) {
unset($_POST["options_" . $key]);
}
}
$line->fk_product = $lines[$i]->fk_product;
if (is_array($lines[$i]->detail_batch) && count($lines[$i]->detail_batch) > 0)
if ($lines[$i]->fk_product > 0)
{
// line with lot
foreach ($lines[$i]->detail_batch as $detail_batch)
{
$lotStock = new Productbatch($db);
$batch="batchl".$detail_batch->fk_receptiondet."_".$detail_batch->fk_origin_stock;
$qty = "qtyl".$detail_batch->fk_receptiondet.'_'.$detail_batch->id;
$batch_id = GETPOST($batch,'int');
$batch_qty = GETPOST($qty, 'int');
if (! empty($batch_id) && ($batch_id != $detail_batch->fk_origin_stock || $batch_qty != $detail_batch->dluo_qty))
{
if ($lotStock->fetch($batch_id) > 0 && $line->fetch($detail_batch->fk_receptiondet) > 0) // $line is ReceptionLine
{
if ($lines[$i]->entrepot_id != 0)
{
// allow update line entrepot_id if not multi warehouse reception
$line->entrepot_id = $lotStock->warehouseid;
}
// detail_batch can be an object with keys, or an array of ReceptionLineBatch
if (empty($line->detail_batch)) $line->detail_batch=new stdClass();
$line->detail_batch->fk_origin_stock = $batch_id;
$line->detail_batch->batch = $lotStock->batch;
$line->detail_batch->id = $detail_batch->id;
$line->detail_batch->entrepot_id = $lotStock->warehouseid;
$line->detail_batch->dluo_qty = $batch_qty;
if ($line->update($user) < 0) {
setEventMessages($line->error, $line->errors, 'errors');
$error++;
}
}
else
{
setEventMessages($lotStock->error, $lotStock->errors, 'errors');
$error++;
}
}
unset($_POST[$batch]);
unset($_POST[$qty]);
// single warehouse reception line
$stockLocation = "entl".$line_id;
$qty = "qtyl".$line_id;
$line->id = $line_id;
$line->fk_entrepot = GETPOST($stockLocation, 'int');
$line->qty = GETPOST($qty, 'int');
if(!empty($conf->productbatch->enabled)){
$batch = "batch".$line_id;
$dlc = "dlc".$line_id;
$dluo = "dluo".$line_id;
$eatby = GETPOST($dlc, 'alpha');
$eatbydate = str_replace('/','-',$eatby);
$sellby = GETPOST($dluo, 'alpha');
$sellbydate = str_replace('/','-',$sellby);
$line->batch = GETPOST($batch, 'alpha');
$line->eatby = strtotime($eatbydate);
$line->sellby = strtotime($sellbydate);
}
// add new batch
$lotStock = new Productbatch($db);
$batch="batchl".$line_id."_0";
$qty = "qtyl".$line_id."_0";
$batch_id = GETPOST($batch,'int');
$batch_qty = GETPOST($qty, 'int');
$lineIdToAddLot = 0;
if ($batch_qty > 0 && ! empty($batch_id))
if ($line->update($user) < 0)
{
if ($lotStock->fetch($batch_id) > 0)
{
// check if lotStock warehouse id is same as line warehouse id
if ($lines[$i]->entrepot_id > 0)
{
// single warehouse reception line
if ($lines[i]->entrepot_id == $lotStock->warehouseid)
{
$lineIdToAddLot = $line_id;
}
}
else if (count($lines[$i]->details_entrepot) > 1)
{
// multi warehouse reception lines
foreach ($lines[$i]->details_entrepot as $detail_entrepot)
{
if ($detail_entrepot->entrepot_id == $lotStock->warehouseid)
{
$lineIdToAddLot = $detail_entrepot->line_id;
}
}
}
if ($lineIdToAddLot)
{
// add lot to existing line
if ($line->fetch($lineIdToAddLot) > 0)
{
$line->detail_batch->fk_origin_stock = $batch_id;
$line->detail_batch->batch = $lotStock->batch;
$line->detail_batch->entrepot_id = $lotStock->warehouseid;
$line->detail_batch->dluo_qty = $batch_qty;
if ($line->update($user) < 0) {
setEventMessages($line->error, $line->errors, 'errors');
$error++;
}
}
else
{
setEventMessages($line->error, $line->errors, 'errors');
$error++;
}
}
else
{
// create new line with new lot
$line->origin_line_id = $lines[$i]->origin_line_id;
$line->entrepot_id = $lotStock->warehouseid;
$line->detail_batch[0] = new ReceptionLineBatch($db);
$line->detail_batch[0]->fk_origin_stock = $batch_id;
$line->detail_batch[0]->batch = $lotStock->batch;
$line->detail_batch[0]->entrepot_id = $lotStock->warehouseid;
$line->detail_batch[0]->dluo_qty = $batch_qty;
if ($object->create_line_batch($line, $line->array_options) < 0)
{
setEventMessages($object->error, $object->errors, 'errors');
$error++;
}
}
}
else
{
setEventMessages($lotStock->error, $lotStock->errors, 'errors');
$error++;
}
setEventMessages($line->error, $line->errors, 'errors');
$error++;
}
}
else
else // Product no predefined
{
if ($lines[$i]->fk_product > 0)
$qty = "qtyl".$line_id;
$line->id = $line_id;
$line->qty = GETPOST($qty, 'int');
$line->fk_entrepot = 0;
if ($line->update($user) < 0)
{
// line without lot
if ($lines[$i]->entrepot_id > 0)
{
// single warehouse reception line
$stockLocation="entl".$line_id;
$qty = "qtyl".$line_id;
$line->id = $line_id;
$line->entrepot_id = GETPOST($stockLocation,'int');
$line->qty = GETPOST($qty, 'int');
if ($line->update($user) < 0) {
setEventMessages($line->error, $line->errors, 'errors');
$error++;
}
unset($_POST[$stockLocation]);
unset($_POST[$qty]);
}
else if (count($lines[$i]->details_entrepot) > 1)
{
// multi warehouse reception lines
foreach ($lines[$i]->details_entrepot as $detail_entrepot)
{
if (! $error) {
$stockLocation="entl".$detail_entrepot->line_id;
$qty = "qtyl".$detail_entrepot->line_id;
$warehouse = GETPOST($stockLocation,'int');
if (!empty ($warehouse))
{
$line->id = $detail_entrepot->line_id;
$line->entrepot_id = $warehouse;
$line->qty = GETPOST($qty, 'int');
if ($line->update($user) < 0) {
setEventMessages($line->error, $line->errors, 'errors');
$error++;
}
}
unset($_POST[$stockLocation]);
unset($_POST[$qty]);
}
}
}
}
else // Product no predefined
{
$qty = "qtyl".$line_id;
$line->id = $line_id;
$line->qty = GETPOST($qty, 'int');
$line->entrepot_id = 0;
if ($line->update($user) < 0) {
setEventMessages($line->error, $line->errors, 'errors');
$error++;
}
unset($_POST[$qty]);
setEventMessages($line->error, $line->errors, 'errors');
$error++;
}
unset($_POST[$qty]);
}
}
}
@ -1953,7 +1828,7 @@ else if ($id || $ref)
if ($obj)
{
// $obj->rowid is rowid in $origin."det" table
$alreadysent[$obj->rowid][$obj->receptionline_id]=array('reception_ref'=>$obj->reception_ref, 'reception_id'=>$obj->reception_id, 'warehouse'=>$obj->fk_entrepot, 'qty_shipped'=>$obj->qty, 'date_valid'=>$obj->date_valid, 'date_delivery'=>$obj->date_delivery);
$alreadysent[$obj->rowid][$obj->receptionline_id]=array('reception_ref'=>$obj->reception_ref, 'reception_id'=>$obj->reception_id, 'warehouse'=>$obj->fk_entrepot, 'qty'=>$obj->qty, 'date_valid'=>$obj->date_valid, 'date_delivery'=>$obj->date_delivery);
}
$i++;
}
@ -1981,20 +1856,16 @@ else if ($id || $ref)
{
$prod = new Product($db);
$prod->fetch($lines[$i]->fk_product);
$label = ( ! empty($prod->multilangs[$outputlangs->defaultlang]["label"])) ? $prod->multilangs[$outputlangs->defaultlang]["label"] : $lines[$i]->product->product_label;
$label = ( ! empty($prod->multilangs[$outputlangs->defaultlang]["label"])) ? $prod->multilangs[$outputlangs->defaultlang]["label"] : $lines[$i]->product->label;
}
else
$label = (! empty($lines[$i]->product->label)?$lines[$i]->product->label:$lines[$i]->product->product_label);
print '<td>';
// Show product and description
$product_static->type=$lines[$i]->product->fk_product_type;
$product_static->id=$lines[$i]->product->fk_product;
$product_static->ref=$lines[$i]->product->ref;
$product_static->status_batch=$lines[$i]->product->product_tobatch;
$text=$product_static->getNomUrl(1);
$text=$lines[$i]->product->getNomUrl(1);
$text.= ' - '.$label;
$description=(! empty($conf->global->PRODUIT_DESC_IN_FORM)?'':dol_htmlentitiesbr($lines[$i]->product->description));
print $form->textwithtooltip($text,$description,3,'','',$i);
@ -2042,7 +1913,7 @@ else if ($id || $ref)
if ($j > 1) print '<br>';
$reception_static->fetch($receptionline_var['reception_id']);
print $reception_static->getNomUrl(1);
print ' - '.$receptionline_var['qty_shipped'];
print ' - '.$receptionline_var['qty'];
$htmltext=$langs->trans("DateValidation").' : '.(empty($receptionline_var['date_valid'])?$langs->trans("Draft"):dol_print_date($receptionline_var['date_valid'], 'dayhour'));
if (! empty($conf->stock->enabled) && $receptionline_var['warehouse'] > 0)
@ -2068,11 +1939,18 @@ else if ($id || $ref)
print '<!-- case edit 1 -->';
print '<tr>';
// Qty to ship or shipped
print '<td>' . '<input name="qtyl'.$line_id.'" id="qtyl'.$line_id.'" type="text" size="4" value="'.$lines[$i]->qty_shipped.'">' . '</td>';
print '<td>' . '<input name="qtyl'.$line_id.'" id="qtyl'.$line_id.'" type="text" size="4" value="'.$lines[$i]->qty.'">' . '</td>';
// Warehouse source
print '<td>' . $formproduct->selectWarehouses($lines[$i]->entrepot_id, 'entl'.$line_id, '', 1, 0, $lines[$i]->fk_product, '', 1). '</td>';
//@TODO Batch number managment
if($conf->productbatch->enabled)print '<td> - ' . $langs->trans("NA") . '</td>';
print '<td>' . $formproduct->selectWarehouses($lines[$i]->fk_entrepot, 'entl'.$line_id, '', 1, 0, $lines[$i]->fk_product, '', 1). '</td>';
// Batch number managment
if($conf->productbatch->enabled){
print '<td> <input name="batch'.$line_id.'" id="batch'.$line_id.'" type="text" value="'.$lines[$i]->batch.'"> </br>';
print $langs->trans('EatByDate').' : ';
print $form->select_date($lines[$i]->eatby,'dlc' .$line_id , '', '', 1, ""). '</br>';
print $langs->trans('SellByDate').' : ';
print $form->select_date($lines[$i]->sellby,'dluo' .$line_id , '', '', 1, "");
print '</td>';
}
print '</tr>';
}
@ -2081,7 +1959,7 @@ else if ($id || $ref)
print '<!-- case edit 2 -->';
print '<tr>';
// Qty to ship or shipped
print '<td>' . '<input name="qtyl'.$line_id.'" id="qtyl'.$line_id.'" type="text" size="4" value="'.$lines[$i]->qty_shipped.'">' . '</td>';
print '<td>' . '<input name="qtyl'.$line_id.'" id="qtyl'.$line_id.'" type="text" size="4" value="'.$lines[$i]->qty.'">' . '</td>';
// Warehouse source
print '<td>' . '</td>';
// Batch number managment
@ -2196,7 +2074,7 @@ else if ($id || $ref)
// Display lines extrafields
if (is_array($extralabelslines) && count($extralabelslines)>0) {
$colspan= empty($conf->productbatch->enabled) ? 5 : 6;
$colspan= empty($conf->productbatch->enabled) ? 8 : 9;
$line = new CommandeFournisseurDispatch($db);
$line->fetch_optionals($lines[$i]->id,$extralabelslines);
print '<tr class="oddeven">';
@ -2339,7 +2217,7 @@ else if ($id || $ref)
$genallowed=$user->rights->reception->lire;
$delallowed=$user->rights->reception->creer;
print $formfile->showdocuments('reception',$objectref,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'','','',$soc->default_lang);
@ -2359,7 +2237,7 @@ else if ($id || $ref)
{
$ref = dol_sanitizeFileName($object->ref);
include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$fileparams = dol_most_recent_file($conf->reception->dir_output . '/reception/' . $ref, preg_quote($ref, '/').'[^\-]+');
$fileparams = dol_most_recent_file($conf->reception->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
$file=$fileparams['fullname'];
// Define output language
$outputlangs = $langs;

View File

@ -1194,18 +1194,22 @@ class Reception extends CommonObject
$sql = 'SELECT rowid FROM '.MAIN_DB_PREFIX.'commande_fournisseur_dispatch WHERE fk_reception='.$this->id;
$resql = $db->query($sql);
if(!empty($resql)){
$this->lines = array();
while ($obj = $resql->fetch_object()){
$line = new CommandeFournisseurDispatch($db);
$line->fetch($obj->rowid);
$line->fetch_product();
$sql_qtyasked = 'SELECT qty FROM llx_commande_fournisseurdet WHERE rowid='.$line->fk_commandefourndet;
$sql_qtyasked = 'SELECT qty, description, label FROM llx_commande_fournisseurdet WHERE rowid='.$line->fk_commandefourndet;
$resql_qtyasked = $db->query($sql_qtyasked);
if(!empty($resql_qtyasked)){
$obj = $db->fetch_object($resql_qtyasked);
$line->qty_asked = $obj->qty;
$line->description = $obj->description;
$line->label = $obj->label;
}else {
$line->qty_asked = 0;
$line->description = '';
$line->label = $obj->label;
}
$this->lines[]=$line;
}
@ -2059,7 +2063,7 @@ class Reception extends CommonObject
if (! dol_strlen($modele)) {
$modele = 'rouget';
$modele = 'squille';
if ($this->modelpdf) {
$modele = $this->modelpdf;
@ -2071,7 +2075,7 @@ class Reception extends CommonObject
$modelpath = "core/modules/reception/doc/";
$this->fetch_origin();
return $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref);
}

View File

@ -18,15 +18,16 @@
*/
/**
* \file htdocs/expedition/contact.php
* \ingroup expedition
* \brief Onglet de gestion des contacts de expedition
* \file htdocs/reception/contact.php
* \ingroup reception
* \brief Onglet de gestion des contacts de reception
*/
require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/expedition/class/expedition.class.php';
require_once DOL_DOCUMENT_ROOT.'/reception/class/reception.class.php';
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/sendings.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/reception.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
if (! empty($conf->projet->enabled)) {
@ -35,7 +36,7 @@ if (! empty($conf->projet->enabled)) {
}
$langs->load("orders");
$langs->load("sendings");
$langs->load("receptions");
$langs->load("companies");
$id=GETPOST('id','int');
@ -44,25 +45,27 @@ $action=GETPOST('action','alpha');
// Security check
if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'expedition', $id,'');
$result = restrictedArea($user, 'reception', $id,'');
$object = new Expedition($db);
$object = new Reception($db);
if ($id > 0 || ! empty($ref))
{
$object->fetch($id, $ref);
$object->fetch_thirdparty();
if (!empty($object->origin))
{
$typeobject = $object->origin;
$origin = $object->origin;
$object->fetch_origin();
$typeobject = $object->origin;
}
// Linked documents
if ($typeobject == 'commande' && $object->$typeobject->id && ! empty($conf->commande->enabled))
if ($origin == 'order_supplier' && $object->$typeobject->id && ! empty($conf->fournisseur->enabled))
{
$objectsrc=new Commande($db);
$objectsrc=new CommandeFournisseur($db);
$objectsrc->fetch($object->$typeobject->id);
}
if ($typeobject == 'propal' && $object->$typeobject->id && ! empty($conf->propal->enabled))
@ -77,7 +80,7 @@ if ($id > 0 || ! empty($ref))
* Actions
*/
if ($action == 'addcontact' && $user->rights->expedition->creer)
if ($action == 'addcontact' && $user->rights->reception->creer)
{
if ($result > 0 && $id > 0)
{
@ -104,13 +107,13 @@ if ($action == 'addcontact' && $user->rights->expedition->creer)
}
// bascule du statut d'un contact
else if ($action == 'swapstatut' && $user->rights->expedition->creer)
else if ($action == 'swapstatut' && $user->rights->reception->creer)
{
$result=$objectsrc->swapContactStatus(GETPOST('ligne'));
}
// Efface un contact
else if ($action == 'deletecontact' && $user->rights->expedition->creer)
else if ($action == 'deletecontact' && $user->rights->reception->creer)
{
$result = $objectsrc->delete_contact(GETPOST("lineid"));
@ -124,7 +127,7 @@ else if ($action == 'deletecontact' && $user->rights->expedition->creer)
}
}
/*
else if ($action == 'setaddress' && $user->rights->expedition->creer)
else if ($action == 'setaddress' && $user->rights->reception->creer)
{
$object->fetch($id);
$result=$object->setDeliveryAddress($_POST['fk_address']);
@ -136,7 +139,7 @@ else if ($action == 'setaddress' && $user->rights->expedition->creer)
* View
*/
llxHeader('',$langs->trans('Order'),'EN:Customers_Orders|FR:expeditions_Clients|ES:Pedidos de clientes');
llxHeader('',$langs->trans('Reception'),'EN:Customers_Orders|FR:receptions_Clients|ES:Pedidos de clientes');
$form = new Form($db);
$formcompany = new FormCompany($db);
@ -155,24 +158,24 @@ if ($id > 0 || ! empty($ref))
{
$langs->trans("OrderCard");
$head = shipping_prepare_head($object);
dol_fiche_head($head, 'contact', $langs->trans("Shipment"), -1, 'sending');
$head = reception_prepare_head($object);
dol_fiche_head($head, 'contact', $langs->trans("Reception"), -1, 'sending');
// Shipment card
$linkback = '<a href="'.DOL_URL_ROOT.'/expedition/list.php">'.$langs->trans("BackToList").'</a>';
// Reception card
$linkback = '<a href="'.DOL_URL_ROOT.'/reception/list.php">'.$langs->trans("BackToList").'</a>';
$morehtmlref='<div class="refidno">';
// Ref customer shipment
$morehtmlref.=$form->editfieldkey("RefCustomer", '', $object->ref_customer, $object, $user->rights->expedition->creer, 'string', '', 0, 1);
$morehtmlref.=$form->editfieldval("RefCustomer", '', $object->ref_customer, $object, $user->rights->expedition->creer, 'string', '', null, null, '', 1);
// Ref customer reception
$morehtmlref.=$form->editfieldkey("RefSupplier", '', $object->ref_supplier, $object, $user->rights->reception->creer, 'string', '', 0, 1);
$morehtmlref.=$form->editfieldval("RefSupplier", '', $object->ref_supplier, $object, $user->rights->reception->creer, 'string', '', null, null, '', 1);
// Thirdparty
$morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1);
// Project
if (! empty($conf->projet->enabled)) {
$langs->load("projects");
$morehtmlref .= '<br>' . $langs->trans('Project') . ' ';
if (0) { // Do not change on shipment
if (0) { // Do not change on reception
if ($action != 'classify') {
$morehtmlref .= '<a href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
}
@ -188,8 +191,8 @@ if ($id > 0 || ! empty($ref))
$morehtmlref .= $form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1);
}
} else {
// We don't have project on shipment, so we will use the project or source object instead
// TODO Add project on shipment
// We don't have project on reception, so we will use the project or source object instead
// TODO Add project on reception
$morehtmlref .= ' : ';
if (! empty($objectsrc->fk_project)) {
$proj = new Project($db);
@ -204,7 +207,7 @@ if ($id > 0 || ! empty($ref))
}
$morehtmlref.='</div>';
$object->picto = 'sending';
dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
@ -213,12 +216,11 @@ if ($id > 0 || ! empty($ref))
print '<div class="underbanner clearboth"></div>';
print '<table class="border centpercent">';
// Linked documents
if ($typeobject == 'commande' && $object->$typeobject->id && ! empty($conf->commande->enabled))
if ($origin == 'order_supplier' && $object->$typeobject->id && ! empty($conf->fournisseur->enabled))
{
print '<tr><td class="titlefield">';
$objectsrc=new Commande($db);
$objectsrc=new CommandeFournisseur($db);
$objectsrc->fetch($object->$typeobject->id);
print $langs->trans("RefOrder").'</td>';
print '<td colspan="3">';
@ -233,7 +235,7 @@ if ($id > 0 || ! empty($ref))
$objectsrc->fetch($object->$typeobject->id);
print $langs->trans("RefProposal").'</td>';
print '<td colspan="3">';
print $objectsrc->getNomUrl(1,'expedition');
print $objectsrc->getNomUrl(1,'reception');
print "</td>\n";
print '</tr>';
}
@ -261,11 +263,12 @@ if ($id > 0 || ! empty($ref))
// Contacts lines (modules that overwrite templates must declare this into descriptor)
$dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl'));
foreach($dirtpls as $reldir)
foreach($dirtpls as $reldir)
{
$res=@include dol_buildpath($reldir.'/contacts.tpl.php');
if ($res) break;
}
}

View File

@ -19,20 +19,21 @@
*/
/**
* \file htdocs/expedition/note.php
* \ingroup expedition
* \brief Note card expedition
* \file htdocs/reception/nosendingte.php
* \ingroup receptionsending
* \brief Note card reception
*/
require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/expedition/class/expedition.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/sendings.lib.php';
require_once DOL_DOCUMENT_ROOT.'/reception/class/reception.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/reception.lib.php';
dol_include_once('/fourn/class/fournisseur.commande.class.php');
if (! empty($conf->projet->enabled)) {
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
}
$langs->load("sendings");
$langs->load("receptions");
$langs->load("companies");
$langs->load("bills");
$langs->load('deliveries');
@ -50,7 +51,7 @@ $socid='';
if ($user->societe_id) $socid=$user->societe_id;
$result=restrictedArea($user, $origin, $origin_id);
$object = new Expedition($db);
$object = new Reception($db);
if ($id > 0 || ! empty($ref))
{
$object->fetch($id, $ref);
@ -76,7 +77,7 @@ if ($id > 0 || ! empty($ref))
}
}
$permissionnote=$user->rights->expedition->creer; // Used by the include of actions_setnotes.inc.php
$permissionnote=$user->rights->reception->creer; // Used by the include of actions_setnotes.inc.php
/*
@ -90,31 +91,31 @@ include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include,
* View
*/
llxHeader();
llxHeader('','Reception');
$form = new Form($db);
if ($id > 0 || ! empty($ref))
{
$head=shipping_prepare_head($object);
dol_fiche_head($head, 'note', $langs->trans("Shipment"), -1, 'sending');
$head=reception_prepare_head($object);
dol_fiche_head($head, 'note', $langs->trans("Reception"), -1, 'sending');
// Shipment card
$linkback = '<a href="'.DOL_URL_ROOT.'/expedition/list.php">'.$langs->trans("BackToList").'</a>';
// Reception card
$linkback = '<a href="'.DOL_URL_ROOT.'/reception/list.php">'.$langs->trans("BackToList").'</a>';
$morehtmlref='<div class="refidno">';
// Ref customer shipment
$morehtmlref.=$form->editfieldkey("RefCustomer", '', $object->ref_customer, $object, $user->rights->expedition->creer, 'string', '', 0, 1);
$morehtmlref.=$form->editfieldval("RefCustomer", '', $object->ref_customer, $object, $user->rights->expedition->creer, 'string', '', null, null, '', 1);
// Ref customer reception
$morehtmlref.=$form->editfieldkey("RefSupplier", '', $object->ref_supplier, $object, $user->rights->reception->creer, 'string', '', 0, 1);
$morehtmlref.=$form->editfieldval("RefSupplier", '', $object->ref_supplier, $object, $user->rights->reception->creer, 'string', '', null, null, '', 1);
// Thirdparty
$morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1);
// Project
if (! empty($conf->projet->enabled)) {
$langs->load("projects");
$morehtmlref .= '<br>' . $langs->trans('Project') . ' ';
if (0) { // Do not change on shipment
if (0) { // Do not change on reception
if ($action != 'classify') {
$morehtmlref .= '<a href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
}
@ -130,8 +131,8 @@ if ($id > 0 || ! empty($ref))
$morehtmlref .= $form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1);
}
} else {
// We don't have project on shipment, so we will use the project or source object instead
// TODO Add project on shipment
// We don't have project on reception, so we will use the project or source object instead
// TODO Add project on reception
$morehtmlref .= ' : ';
if (! empty($objectsrc->fk_project)) {
$proj = new Project($db);
@ -146,7 +147,7 @@ if ($id > 0 || ! empty($ref))
}
$morehtmlref.='</div>';
$object->picto = 'sending';
dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);