Jump to content
Swysbad

[RESOLU] Supprimé les attributs du produit dans la facture

Recommended Posts

Bonjour,

Je me heurte a un problème de taille, j'aimerais que dans ma facture seul le nom du produit  apparaisse (sans tous les attributs à la suite).

Pouvez-vous m'indiquer le ou les fichier(s) php et/ou tpl à modifier pour parvenir à ce résultat

 

MERCI :)

Edited by Swysbad (see edit history)

Share this post


Link to post
Share on other sites

Hello!

 

Il te faut overrider (surcharger) le fichier invoice.tpl situé dans le répertoire pdf. Si tu modifies directement le fichier à la source, à la prochaine mise à jour, il sera écraser.

 

@+

Share this post


Link to post
Share on other sites

Merci pour la réponse, mais hélas ce n'est pas la bonne .


 


Dans invoice.tpl on retrouve "{$order_detail.product_name}" la variable smarty qui regroupe "nom + attributs" .


Il faut donc modifier plus haut (au niveau la génération de cette variable), donc dans un fichier php dans classes/ .


J'ai modifié PDF.php et OrderDetail.php sans résultat pour l'instant. :(


Share this post


Link to post
Share on other sites

$order_details est défini dans la classe HTMLTemplateInvoice, fonction getContent().

'order_details' => $this->order_invoice->getProducts(),

le getProducts() est défini dans la classe OrderInvoice:

public function getProducts($products = false, $selectedProducts = false, $selectedQty = false)
	{
		if (!$products)
			$products = $this->getProductsDetail();

		$order = new Order($this->id_order);
		$customized_datas = Product::getAllCustomizedDatas($order->id_cart);

		$resultArray = array();
		foreach ($products as $row)
		{
			// Change qty if selected
			if ($selectedQty)
			{
				$row['product_quantity'] = 0;
				foreach ($selectedProducts as $key => $id_product)
					if ($row['id_order_detail'] == $id_product)
						$row['product_quantity'] = (int)($selectedQty[$key]);
				if (!$row['product_quantity'])
					continue;
			}

			$this->setProductImageInformations($row);
			$this->setProductCurrentStock($row);
			$this->setProductCustomizedDatas($row, $customized_datas);

			// Add information for virtual product
			if ($row['download_hash'] && !empty($row['download_hash']))
			{
				$row['filename'] = ProductDownload::getFilenameFromIdProduct((int)$row['product_id']);
				// Get the display filename
				$row['display_filename'] = ProductDownload::getFilenameFromFilename($row['filename']);
			}
			
			$row['id_address_delivery'] = $order->id_address_delivery;
			
			/* Stock product */
			$resultArray[(int)$row['id_order_detail']] = $row;
		}

		if ($customized_datas)
			Product::addCustomizationPrice($resultArray, $customized_datas);

		return $resultArray;
	}

A mon avis (comme cela sans avoir testé), la fonction que tu dois surcharger, c'est celle-là.

 

:D

Share this post


Link to post
Share on other sites

Enfaite j'ai trouvé, enfin!  la variable "product_name" est défini dans Classes/order/OrderDetail.php donc j'ai juste modifié le fichier override/classes/order/OrderDetail.php

 comme ceci :

class OrderDetail extends OrderDetailCore
{
	protected function create(Order $order, Cart $cart, $product, $id_order_state, $id_order_invoice, $use_taxes = true, $id_warehouse = 0)
	{
		if ($use_taxes)
			$this->tax_calculator = new TaxCalculator();

		$this->id = null;

		$this->product_id = (int)($product['id_product']);
		$this->product_attribute_id = (int)($product['id_product_attribute'] ? (int)($product['id_product_attribute']) : null);
		$this->product_name = $product['name'];
		/*
		.
			((isset($product['attributes']) && $product['attributes'] != null) ?
				' - '.$product['attributes'] : '');
		*/
		$this->product_quantity = (int)($product['cart_quantity']);
		$this->product_ean13 = empty($product['ean13']) ? null : pSQL($product['ean13']);
		$this->product_upc = empty($product['upc']) ? null : pSQL($product['upc']);
		$this->product_reference = empty($product['reference']) ? null : pSQL($product['reference']);
		$this->product_supplier_reference = empty($product['supplier_reference']) ? null : pSQL($product['supplier_reference']);
		$this->product_weight = (float)($product['id_product_attribute'] ? $product['weight_attribute'] : $product['weight']);
		$this->id_warehouse = $id_warehouse;

		$productQuantity = (int)(Product::getQuantity($this->product_id, $this->product_attribute_id));
		$this->product_quantity_in_stock = ($productQuantity - (int)($product['cart_quantity']) < 0) ?
			$productQuantity : (int)($product['cart_quantity']);

		$this->setVirtualProductInformation($product);
		$this->checkProductStock($product, $id_order_state);

		if ($use_taxes)
			$this->setProductTax($order, $product);
		$this->setShippingCost($order, $product);
		$this->setDetailProductPrice($order, $cart, $product);

		// Set order invoice id
		$this->id_order_invoice = (int)$id_order_invoice;
		
		// Set shop id
		$this->id_shop = (int)$product['id_shop'];
		
		// Add new entry to the table
		$this->save();

		if ($use_taxes)
			$this->saveTaxCalculator($order);
		unset($this->tax_calculator);
	}
}

Enjoy :)

 

merci beaucoup sujet résolu

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More