Aménagement template facture

Bonjour,
J’aimerais faire figurer en en-tête de mes factures, en plus de ma référence commande, la référence commande client et le BL auxquels la facture se rapporte.
Un client me demande même de faire figurer référence + date commande …
Pour aller chercher certaines variables « simples », j’y arrive, mais là, je peine vraiment !
Y aurait-il une bonne âme pour m’aider ??
je vous remercie,
Mabosshard

Bonjour
Bon … si personne ne m’aide, je me réponds tout seul …

Un bout de code pour ceux que cela peut intéresser d’afficher en en-tête des facture le numéro de commande fournisseur, le numéro de commande client et la date de livraison.
Code à mettre dans le template facture (base crabe)

$sql = 'SELECT  c.date_livraison, c.ref, c.ref_client, c.rowid as id';
$sql .= ' FROM '.MAIN_DB_PREFIX.'commande as c, '.MAIN_DB_PREFIX.'co_fa as co_fa WHERE co_fa.fk_commande = c.rowid AND co_fa.fk_facture = '.$object->id;
$resql = $this->db->query($sql);
if ($resql)
{
$num = $this->db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$objp = $this->db->fetch_object($resql);
$posy+=4;
$pdf->SetXY(100,$posy);
$pdf->SetTextColor(0,0,60);
$pdf->SetFont('Arial','',9);
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("RefOrder")." : " . $outputlangs->convToOutputCharset($objp->ref), '', 'R');
$posy+=4;
$pdf->SetXY(100,$posy);
$pdf->SetTextColor(0,0,60);
$pdf->SetFont('Arial','',9);
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("RefCustomerOrder")." : " . $outputlangs->convToOutputCharset($objp->ref_client)." livrée le ". dol_print_date($objp->date_livraison,"day",false,$outpulangs), '', 'R');
$i++;
}
}									
else
{
dol_syslog($this->db,$this->error, LOG_ERR);
}

ça marche chez moi, mon serveur n’a pas pris feu …

Mabosshard

Par contre, tu peux preciser ou tu colle le code car ca marche pas chez moi (avec la 2.7 beta). Mais je pense que je colle au mauvais endroit dans le fichier crabe…

Merci !

Bonjour,
Pour le moment, j’ai mis ça sous la référence de la facture (en haut à droite de la page).
Tu peux coller le code sous la ligne :

$pdf->MultiCell(100, 4, $outputlangs->transnoentities("Ref")." : " . $outputlangs->convToOutputCharset($object->ref), '', 'R');

Pour faire bien, il faudrait conditionner l’affichage à l’existence d’une réf client et d’une date de livraison …

Mabosshard

Super ca marche avec la version 2.7 beta.

Ca serez super gentil si tu pouvez regarder pour rajouter ca pour les BL…

Merci encore.

Bonjour,
Remplace le pâté précédent par :

					$sql = 'SELECT  c.date_livraison, c.ref as cref, c.ref_client, c.rowid as id, e.ref as eref, e.rowid as eid';
					$sql .= ' FROM '.MAIN_DB_PREFIX.'commande as c, '.MAIN_DB_PREFIX.'expedition as e, '.MAIN_DB_PREFIX.'co_fa as co_fa, '.MAIN_DB_PREFIX.'co_exp as co_exp WHERE co_exp.fk_expedition = e.rowid AND co_exp.fk_commande = c.rowid AND  co_fa.fk_commande = c.rowid AND co_fa.fk_facture = '.$object->id;

					$resql = $this->db->query($sql);
					if ($resql)
					{
						$num = $this->db->num_rows($resql);
						$i = 0;
						while ($i < $num)
						{
							$objp = $this->db->fetch_object($resql);
							$posy+=4;
							$pdf->SetXY(100,$posy);
							$pdf->SetTextColor(0,0,60);
							$pdf->SetFont('Arial','',9);
							$pdf->MultiCell(100, 4, $outputlangs->transnoentities("RefOrder")." : " . $outputlangs->convToOutputCharset($objp->cref)."(". $outputlangs->convToOutputCharset($objp->ref_client).")", '', 'R');
								//$objp = $this->db->fetch_object($resql);
							$posy+=4;
							$pdf->SetXY(100,$posy);
							$pdf->SetTextColor(0,0,60);
							$pdf->SetFont('Arial','',9);
							$pdf->MultiCell(100, 4, $outputlangs->transnoentities("Sending")." : " . $outputlangs->convToOutputCharset($objp->eref)." du ". dol_print_date($objp->date_livraison,"day",false,$outpulangs), '', 'R');
							$i++;
						}
					}																																				  
					else
					{
						dol_syslog($this->db,$this->error, LOG_ERR);
					}

Cela affichera la réf fournisseur, la réf client, le numéro d’expédition et la date d’expédition.

Là … j’arrive à la limite de mes capacités ! :laugh:

Mabosshard

C’est sympa comme tout mais je voulais un « paté » (comme tu dis)a coller dans le modele pdf du bon de livraison (sirocco) afin d’afficher les references de la commandes…

Merci pour tant d’effort et ta disponibilité.

Je n’en suis pas encore là …!
J’ai personnalisé les commandes, là, je suis dans les factures …

Pour le BL, je verrai ça plus tard, mais je ne gère pas encore les BL dans Dolibarr. Mes produits sont rentrés à l’unité (volume et poids unitaires), mais je livre des palettes … et à gérer, le mieux que j’ai trouvé pour le moment … c’est un mélange Word/Excel.
Ce qui me plairait, c’est que l’on puisse définir plusieurs type de conditionnement pour un produit :
1 produit : volume = V, poids = P
50 produits : volume = 1 carton, poids = PP
1500 produits : volume = & palette, poids = PPP

… je ne sais pas si c’est dans les tuyaux … mais là, je gèrerais les BL … !

Mabosshard

Je peux t’aider peut etre pour ca:

Pour ton probleme, tu peux peut etre utilisé la fonction « produit associé ».
Exemple:
t’as une reference pour 1 nounours. Tu créé un produit « carton de nounours » avec comme produit associés 50 nounours.
Puis tu créé un produit « Palette de nounours » avec comme produit associés 50 cartons de nounours.

Ainsi quand tu commande une palette de nounours, ceci va t’enlever du stock 250 nounours…

et pour chaque produit tu peux definir le volume.

Ca te va ainsi ?

Voui voui voui … je vais tenter ça …
Par contre, est-ce que ça me multiplie le nombre de références ?
Je suis déjà perdu avec 50 références !
Est-ce que si je commande 5 palettes et que je livre 5 cartons et 3 unités, les stocks sont toujours bons ?
J’avais essayé d’utiliser les produits associés pour gérer les composants de produits, mais ça n’allait pas. Je n’avais pas compris l’utilité des produits associés, mais peut-être que là …
Si ça marche, promis, je m’occupe des BL !
Mabosshard

Oui ca marche, tes stocks seront bons, le tout c’est de ne pas se melanger les pinceaux entre tes différents articles…

En fait, le produit associé sert à l’origine a ca :
je commande un article « PC sur mesure » qui est associé aux articles « carte mère », « carte mémoire », « carte graphique »…

comme ca, la commande du pc va puiser dans le stock des différents composants.

Bonjour,
J’ai jeté un oeil mais je crois qu’il y a un problème … la table de correspondance entre commande et livraison (llx_co_liv) n’est pas remplie.
Du coup, ça complique beaucoup !
Je me demande si c’est voulu ou si c’est un bug … en tout cas, mes quelques notions de php/mysql ne permettent pas de faire ça pour le moment !
Mabosshard

Oki, dommage pour les livraisons mais merci quand meme d’avoir regardé (eldy ou regis auront peut etre la solution…). En tout cas, n’hesite pas a me contacter si t’as des soucis avec tes produits associés.