diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 24adf7efce0..5fddccfa313 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -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; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 288badf6285..c4172d7fad7 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -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; } diff --git a/htdocs/core/modules/reception/doc/pdf_squille.modules.php b/htdocs/core/modules/reception/doc/pdf_squille.modules.php index 0f1add63c44..c272807c620 100644 --- a/htdocs/core/modules/reception/doc/pdf_squille.modules.php +++ b/htdocs/core/modules/reception/doc/pdf_squille.modules.php @@ -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")."
"; - $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)?'
':'').$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; diff --git a/htdocs/core/tpl/contacts.tpl.php b/htdocs/core/tpl/contacts.tpl.php index c7b3ea7342f..18edf7ec67d 100644 --- a/htdocs/core/tpl/contacts.tpl.php +++ b/htdocs/core/tpl/contacts.tpl.php @@ -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) {
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'); ?>
 
@@ -125,7 +126,7 @@ if ($permission) {
element == 'shipping' && is_object($objectsrc)) $tmpobject=$objectsrc; + if (($object->element == 'shipping'|| $object->element == 'reception') && is_object($objectsrc)) $tmpobject=$objectsrc; $formcompany->selectTypeContact($tmpobject, '', 'type','external'); ?>
 
@@ -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); diff --git a/htdocs/fourn/class/fournisseur.commande.dispatch.class.php b/htdocs/fourn/class/fournisseur.commande.dispatch.class.php index 38f1c3243dc..c3c33694514 100644 --- a/htdocs/fourn/class/fournisseur.commande.dispatch.class.php +++ b/htdocs/fourn/class/fournisseur.commande.dispatch.class.php @@ -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 diff --git a/htdocs/reception/card.php b/htdocs/reception/card.php index 1c343614aff..1911466905c 100644 --- a/htdocs/reception/card.php +++ b/htdocs/reception/card.php @@ -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 ''; - // 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 '
'; $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 ''; print ''; // Qty to ship or shipped - print '' . '' . ''; + print '' . '' . ''; // Warehouse source - print '' . $formproduct->selectWarehouses($lines[$i]->entrepot_id, 'entl'.$line_id, '', 1, 0, $lines[$i]->fk_product, '', 1). ''; - //@TODO Batch number managment - if($conf->productbatch->enabled)print ' - ' . $langs->trans("NA") . ''; + print '' . $formproduct->selectWarehouses($lines[$i]->fk_entrepot, 'entl'.$line_id, '', 1, 0, $lines[$i]->fk_product, '', 1). ''; + // Batch number managment + if($conf->productbatch->enabled){ + print '
'; + print $langs->trans('EatByDate').' : '; + print $form->select_date($lines[$i]->eatby,'dlc' .$line_id , '', '', 1, ""). '
'; + print $langs->trans('SellByDate').' : '; + print $form->select_date($lines[$i]->sellby,'dluo' .$line_id , '', '', 1, ""); + print ''; + } print ''; } @@ -2081,7 +1959,7 @@ else if ($id || $ref) print ''; print ''; // Qty to ship or shipped - print '' . '' . ''; + print '' . '' . ''; // Warehouse source print '' . ''; // 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 ''; @@ -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; diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index 9a557a9a50c..a11a18bd149 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -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); } diff --git a/htdocs/reception/contact.php b/htdocs/reception/contact.php index 7c721d7cf47..ef8f9650b5e 100644 --- a/htdocs/reception/contact.php +++ b/htdocs/reception/contact.php @@ -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 = ''.$langs->trans("BackToList").''; + // Reception card + $linkback = ''.$langs->trans("BackToList").''; $morehtmlref='
'; - // 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.='
'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1); // Project if (! empty($conf->projet->enabled)) { $langs->load("projects"); $morehtmlref .= '
' . $langs->trans('Project') . ' '; - if (0) { // Do not change on shipment + if (0) { // Do not change on reception if ($action != 'classify') { $morehtmlref .= '' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; } @@ -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.='
'; - + $object->picto = 'sending'; dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); @@ -213,12 +216,11 @@ if ($id > 0 || ! empty($ref)) print '
'; print ''; - // Linked documents - if ($typeobject == 'commande' && $object->$typeobject->id && ! empty($conf->commande->enabled)) + if ($origin == 'order_supplier' && $object->$typeobject->id && ! empty($conf->fournisseur->enabled)) { print ''; print ''; print '\n"; print ''; } @@ -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; } + } diff --git a/htdocs/reception/note.php b/htdocs/reception/note.php index c32ec5c5124..8ffa32f1715 100644 --- a/htdocs/reception/note.php +++ b/htdocs/reception/note.php @@ -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 = ''.$langs->trans("BackToList").''; + // Reception card + $linkback = ''.$langs->trans("BackToList").''; $morehtmlref='
'; - // 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.='
'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1); // Project if (! empty($conf->projet->enabled)) { $langs->load("projects"); $morehtmlref .= '
' . $langs->trans('Project') . ' '; - if (0) { // Do not change on shipment + if (0) { // Do not change on reception if ($action != 'classify') { $morehtmlref .= '' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; } @@ -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.='
'; - + $object->picto = 'sending'; dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
'; - $objectsrc=new Commande($db); + $objectsrc=new CommandeFournisseur($db); $objectsrc->fetch($object->$typeobject->id); print $langs->trans("RefOrder").''; @@ -233,7 +235,7 @@ if ($id > 0 || ! empty($ref)) $objectsrc->fetch($object->$typeobject->id); print $langs->trans("RefProposal").''; - print $objectsrc->getNomUrl(1,'expedition'); + print $objectsrc->getNomUrl(1,'reception'); print "