LoConte Posted October 30, 2012 Share Posted October 30, 2012 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 demasiadolargas y se pisan con la cantidad) en su defecto que aparezca '---'. 2. Que aparezca la referencia de producto, pero cortar la cadena a 10 caracterescon 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 More sharing options...
jesa Posted October 30, 2012 Share Posted October 30, 2012 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 More sharing options...
LoConte Posted October 30, 2012 Author Share Posted October 30, 2012 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 More sharing options...
LoConte Posted October 31, 2012 Author Share Posted October 31, 2012 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 More sharing options...
Recommended Posts