Jump to content

Eliminar o modificar la referencia de la Factura


LoConte

Recommended Posts

Hola,

 

Estoy intentando modificar la referencia de producto que aparece en la tabla

de productos dentro de la Factura, cualquiera de estos dos casos

sería ideal:

  • 1. Que no aparezca la referencia (ya que el cliente ha introducido unas referencias demasiado
    largas y se pisan con la cantidad) en su defecto que aparezca '---'.
  • 2. Que aparezca la referencia de producto, pero cortar la cadena a 10 caracteres
    con una función Split o algo así.

Hemos localizado las siguientes líneas de codigo en el fichero PDF.php y modificando sin éxito estas líneas de código (utilizamos la v.1.4.9.0):

 

[ desde la línea 450 ]

public function ProdReturnTab()

{

...

// $this->Cell($w[1], $lineSize, ($product['product_reference'] != '' ? Tools::iconv('utf-8', self::encoding(), $product['product_reference']) : '---'), 'B');

$this->Cell($w[1], $lineSize, '---', 'B');

 

[ desde la línea 969 ]

 

// $this->Cell($w[++$i], $lineSize, $product['product_reference'], 'B');

$this->Cell($w[++$i], $lineSize, '---', 'B');

 

No producen ningún efecto en la salida de la factura, sigue saliendo

la referencia del producto, os adjunto un ejemplo de una factura.

 

Salu2 Cordiales

000005.pdf

Link to comment
Share on other sites

Hola,

por el nombre del método que estás modificando, tiene pinta que es para los datos de la mercancía devuelta. Tienes que mirar el método: public function ProdTab($delivery = false) que es el que genera la tabla para las facturas. Si quieres eliminar la columna también tendrás que tocar el ProdTabHeader para eliminar la referencia de la cabecera.

Si eliminas la columna se te descuadrará todo y ahí de momento no te puedo ayudar porque justamente estoy modificando yo la factura para que me sirva para otro tipo de documento, y no se bien como funciona el fpdf.

Link to comment
Share on other sites

Gracias Jesa,

 

No queremos eliminar la columna referencia, sólo que en vez de la

referencia aparezcan los caracteres: '---'.

 

También había modificado las líneas de codigo del método que me indicas

y sin efecto aparente en la factura esta es la función modificada por

nosotros (hemos comentado las líneas de código originales):

 

/**

* Product table with price, quantities...

*/

public function ProdTab($delivery = false)

{

if (!$delivery)

$w = array(100, 15, 30, 15, 30);

else

$w = array(120, 30, 10);

self::ProdTabHeader($delivery);

if (!self::$orderSlip)

{

if (isset(self::$order->products) AND sizeof(self::$order->products))

$products = self::$order->products;

else

$products = self::$order->getProducts();

}

else

$products = self::$orderSlip->getOrdersSlipProducts(self::$orderSlip->id, self::$order);

$customizedDatas = Product::getAllCustomizedDatas((int)(self::$order->id_cart));

Product::addCustomizationPrice($products, $customizedDatas);

 

$counter = 0;

$lines = 25;

$lineSize = 0;

$line = 0;

 

foreach($products AS $product)

if (!$delivery OR ((int)($product['product_quantity']) - (int)($product['product_quantity_refunded']) > 0))

{

if ($counter >= $lines)

{

$this->AddPage();

$this->Ln();

self::ProdTabHeader($delivery);

$lineSize = 0;

$counter = 0;

$lines = 40;

$line++;

}

$counter = $counter + ($lineSize / 5) ;

 

$i = -1;

 

// Unit vars

$unit_without_tax = $product['product_price'] + $product['ecotax'];

$unit_with_tax = $product['product_price_wt'];

if (self::$_priceDisplayMethod == PS_TAX_EXC)

$unit_price = &$unit_without_tax;

else

$unit_price = &$unit_with_tax;

$productQuantity = $delivery ? ((int)($product['product_quantity']) - (int)($product['product_quantity_refunded'])) : (int)($product['product_quantity']);

 

if ($productQuantity <= 0)

continue ;

 

// Total prices

$total_with_tax = $unit_with_tax * $productQuantity;

$total_without_tax = $unit_without_tax * $productQuantity;

// Spec

if (self::$_priceDisplayMethod == PS_TAX_EXC)

$final_price = &$total_without_tax;

else

$final_price = &$total_with_tax;

// End Spec

 

if (isset($customizedDatas[$product['product_id']][$product['product_attribute_id']]))

{

$custoLabel = '';

 

foreach($customizedDatas[$product['product_id']][$product['product_attribute_id']] as $customizedData)

{

$customizationGroup = $customizedData['datas'];

$nb_images = 0;

 

if (array_key_exists(_CUSTOMIZE_FILE_, $customizationGroup))

$nb_images = sizeof($customizationGroup[_CUSTOMIZE_FILE_]);

 

if (array_key_exists(_CUSTOMIZE_TEXTFIELD_, $customizationGroup))

foreach($customizationGroup[_CUSTOMIZE_TEXTFIELD_] as $customization)

if (!empty($customization['name'])) $custoLabel .= '- '.$customization['name'].': '.$customization['value']."\n";

 

 

if ($nb_images > 0)

$custoLabel .= '- '.$nb_images. ' '. self::l('image(s)')."\n";

 

$custoLabel .= "---\n";

}

 

$custoLabel = rtrim($custoLabel, "---\n");

 

$productQuantity = (int)($product['product_quantity']) - (int)($product['customizationQuantityTotal']);

if ($delivery)

$this->SetX(25);

$before = $this->GetY();

$this->MultiCell($w[++$i], 5, Tools::iconv('utf-8', self::encoding(), $product['product_name']).' - '.self::l('Customized')." \n".Tools::iconv('utf-8', self::encoding(), $custoLabel), 'B');

$lineSize = $this->GetY() - $before;

$this->SetXY($this->GetX() + $w[0] + ($delivery ? 15 : 0), $this->GetY() - $lineSize);

// INI CODE v.1.4.9.0.

// $this->Cell($w[++$i], $lineSize, $product['product_reference'], 'B');

//

// CHANGE LINE CODE >>

$this->Cell($w[++$i], $lineSize, '---', 'B');

 

if (!$delivery)

$this->Cell($w[++$i], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($unit_price, self::$currency, true)), 'B', 0, 'R');

$this->Cell($w[++$i], $lineSize, (int)($product['customizationQuantityTotal']), 'B', 0, 'C');

if (!$delivery)

$this->Cell($w[++$i], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($unit_price * (int)($product['customizationQuantityTotal']), self::$currency, true)), 'B', 0, 'R');

$this->Ln();

$i = -1;

$total_with_tax = $unit_with_tax * $productQuantity;

$total_without_tax = $unit_without_tax * $productQuantity;

}

if ($delivery)

$this->SetX(25);

if ($productQuantity)

{

$before = $this->GetY();

$this->MultiCell($w[++$i], 5, Tools::iconv('utf-8', self::encoding(), $product['product_name']), 'B');

$lineSize = $this->GetY() - $before;

$this->SetXY($this->GetX() + $w[0] + ($delivery ? 15 : 0), $this->GetY() - $lineSize);

// INI CODE v.1.4.9.0.

// $this->Cell($w[++$i], $lineSize, ($product['product_reference'] ? Tools::iconv('utf-8', self::encoding(), $product['product_reference']) : '--'), 'B');

//

// CHANGE LINE CODE >>

$this->Cell($w[++$i], $lineSize, '---', 'B');

 

if (!$delivery)

$this->Cell($w[++$i], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($unit_price, self::$currency, true)), 'B', 0, 'R');

$this->Cell($w[++$i], $lineSize, $productQuantity, 'B', 0, 'C');

if (!$delivery)

$this->Cell($w[++$i], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($final_price, self::$currency, true)), 'B', 0, 'R');

$this->Ln();

}

}

 

if (!sizeof(self::$order->getDiscounts()) AND !$delivery)

$this->Cell(array_sum($w), 0, '');

}

 

Si te fijas esta cadena l 'product_reference' sólo aparece en estas

líneas de código, que hemos cambiado, pero seguimos igual.

 

Sigue apareciendo la referencia del producto :(

 

Sigo investigando :)

Link to comment
Share on other sites

Perdona Jesa,

 

Te marco las modificaciones que hemos realizado de la función en negrita

para facilitarte la localización:

 

/**

* Product table with price, quantities...

*/

public function ProdTab($delivery = false)

{

if (!$delivery)

$w = array(100, 15, 30, 15, 30);

else

$w = array(120, 30, 10);

self::ProdTabHeader($delivery);

if (!self::$orderSlip)

{

if (isset(self::$order->products) AND sizeof(self::$order->products))

$products = self::$order->products;

else

$products = self::$order->getProducts();

}

else

$products = self::$orderSlip->getOrdersSlipProducts(self::$orderSlip->id, self::$order);

$customizedDatas = Product::getAllCustomizedDatas((int)(self::$order->id_cart));

Product::addCustomizationPrice($products, $customizedDatas);

 

$counter = 0;

$lines = 25;

$lineSize = 0;

$line = 0;

 

foreach($products AS $product)

if (!$delivery OR ((int)($product['product_quantity']) - (int)($product['product_quantity_refunded']) > 0))

{

if ($counter >= $lines)

{

$this->AddPage();

$this->Ln();

self::ProdTabHeader($delivery);

$lineSize = 0;

$counter = 0;

$lines = 40;

$line++;

}

$counter = $counter + ($lineSize / 5) ;

 

$i = -1;

 

// Unit vars

$unit_without_tax = $product['product_price'] + $product['ecotax'];

$unit_with_tax = $product['product_price_wt'];

if (self::$_priceDisplayMethod == PS_TAX_EXC)

$unit_price = &$unit_without_tax;

else

$unit_price = &$unit_with_tax;

$productQuantity = $delivery ? ((int)($product['product_quantity']) - (int)($product['product_quantity_refunded'])) : (int)($product['product_quantity']);

 

if ($productQuantity <= 0)

continue ;

 

// Total prices

$total_with_tax = $unit_with_tax * $productQuantity;

$total_without_tax = $unit_without_tax * $productQuantity;

// Spec

if (self::$_priceDisplayMethod == PS_TAX_EXC)

$final_price = &$total_without_tax;

else

$final_price = &$total_with_tax;

// End Spec

 

if (isset($customizedDatas[$product['product_id']][$product['product_attribute_id']]))

{

$custoLabel = '';

 

foreach($customizedDatas[$product['product_id']][$product['product_attribute_id']] as $customizedData)

{

$customizationGroup = $customizedData['datas'];

$nb_images = 0;

 

if (array_key_exists(_CUSTOMIZE_FILE_, $customizationGroup))

$nb_images = sizeof($customizationGroup[_CUSTOMIZE_FILE_]);

 

if (array_key_exists(_CUSTOMIZE_TEXTFIELD_, $customizationGroup))

foreach($customizationGroup[_CUSTOMIZE_TEXTFIELD_] as $customization)

if (!empty($customization['name'])) $custoLabel .= '- '.$customization['name'].': '.$customization['value']."\n";

 

 

if ($nb_images > 0)

$custoLabel .= '- '.$nb_images. ' '. self::l('image(s)')."\n";

 

$custoLabel .= "---\n";

}

 

$custoLabel = rtrim($custoLabel, "---\n");

 

$productQuantity = (int)($product['product_quantity']) - (int)($product['customizationQuantityTotal']);

if ($delivery)

$this->SetX(25);

$before = $this->GetY();

$this->MultiCell($w[++$i], 5, Tools::iconv('utf-8', self::encoding(), $product['product_name']).' - '.self::l('Customized')." \n".Tools::iconv('utf-8', self::encoding(), $custoLabel), 'B');

$lineSize = $this->GetY() - $before;

$this->SetXY($this->GetX() + $w[0] + ($delivery ? 15 : 0), $this->GetY() - $lineSize);

// INI CODE v.1.4.9.0.

// $this->Cell($w[++$i], $lineSize, $product['product_reference'], 'B');

//

// CHANGE LINE CODE >>

$this->Cell($w[++$i], $lineSize, '---', 'B');

 

if (!$delivery)

$this->Cell($w[++$i], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($unit_price, self::$currency, true)), 'B', 0, 'R');

$this->Cell($w[++$i], $lineSize, (int)($product['customizationQuantityTotal']), 'B', 0, 'C');

if (!$delivery)

$this->Cell($w[++$i], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($unit_price * (int)($product['customizationQuantityTotal']), self::$currency, true)), 'B', 0, 'R');

$this->Ln();

$i = -1;

$total_with_tax = $unit_with_tax * $productQuantity;

$total_without_tax = $unit_without_tax * $productQuantity;

}

if ($delivery)

$this->SetX(25);

if ($productQuantity)

{

$before = $this->GetY();

$this->MultiCell($w[++$i], 5, Tools::iconv('utf-8', self::encoding(), $product['product_name']), 'B');

$lineSize = $this->GetY() - $before;

$this->SetXY($this->GetX() + $w[0] + ($delivery ? 15 : 0), $this->GetY() - $lineSize);

// INI CODE v.1.4.9.0.

// $this->Cell($w[++$i], $lineSize, ($product['product_reference'] ? Tools::iconv('utf-8', self::encoding(), $product['product_reference']) : '--'), 'B');

//

// CHANGE LINE CODE >>

$this->Cell($w[++$i], $lineSize, '---', 'B');

 

if (!$delivery)

$this->Cell($w[++$i], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($unit_price, self::$currency, true)), 'B', 0, 'R');

$this->Cell($w[++$i], $lineSize, $productQuantity, 'B', 0, 'C');

if (!$delivery)

$this->Cell($w[++$i], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($final_price, self::$currency, true)), 'B', 0, 'R');

$this->Ln();

}

}

 

if (!sizeof(self::$order->getDiscounts()) AND !$delivery)

$this->Cell(array_sum($w), 0, '');

}

 

Si te fijas esta cadena l 'product_reference' sólo aparece en estas

líneas de código, que hemos cambiado, pero seguimos igual.

 

Sigue apareciendo la referencia del producto :(

 

Sigo investigando :)

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...