Jump to content
asef.

Générer un pdf à partir de la page commande (back office)

Recommended Posts

Posted (edited)

Bonjour à tous,

J'ai besoin de générer un nouveau fichier pdf certifiant l'authenticité de mes produits dans la commande de mes clients en back office. L'objectif étant de cliquer sur un bouton qui me télécharger le fichier ".pdf" avec les informations du produit sélectionné (la fiche caractéristique).

Aujourd’hui, niveau fonctionnel, j'en suis à 80% de mon objectif. Voici un récapitulatif des modifications apportées:

- Ajout du bouton "print" à la ligne du produit dans la page commande d'un client (src/override/controllers/admin/templates/orders/_product_line.tpl).

<a href="{$link->getAdminLink('AdminPdf')|escape:'html':'UTF-8'}&amp;submitAction=generateMyPDF&amp;id_order={$order->id}" class="print_my_pdf_product_line">
  <i class="icon-print"></i>
  {l s='Certificat' d='Admin.Actions'}
</a>

- Ajout de ma fonction qui génère mon pdf (src/controllers/admin/AdminPdfController.php).

public function generateMyPDFByIdOrder($id_order)
{
  $order = new Order((int)$id_order);
  if (!Validate::isLoadedObject($order)) {
    die($this->trans('The order cannot be found within your database.', array(), 'Admin.Orderscustomers.Notification'));
  }

  $order_invoice_list = $order->getInvoicesCollection();
  require_once _PS_MODULE_DIR_ . 'cm_myPdf/HTMLTemplateMyPdf.php';

  $pdf = new PDF($order_invoice_list, 'CustomPdf', $this->context->smarty);
  $pdf->render();
}

- Ajout de ma fonction qui va construire et remplir mon pdf (src/modules/cm_myPdf/HTMLTemplateCertificatPdf.php).

class HTMLTemplateCustomPdf extends HTMLTemplate
{
  public $custom_model ;

  public function __construct($custom_object, $smarty)
  {
    $this -> custom_model = $custom_object;
    $this -> smarty = $smarty;

    // header informations
    $id_lang = Context::getContext() -> language -> id;
    $this -> title = HTMLTemplateCustomPdf::l('Custom Title');

    // footer informations
    $this -> shop = new Shop(Context::getContext() -> shop -> id);
  }

  public function getContent()
  {
    $this -> smarty -> assign(array(
      'custom_model' => $this -> custom_model,
    ));

    return $this -> smarty -> fetch(_PS_MODULE_DIR_.'cm_customPdf/custom_template_content.tpl');
  }

  public function getFilename()
  {
    return 'custom_pdf.pdf';
  }

- Ajout du template pdf (src/modules/cm_myPdf/custom_template_content.tpl). Et c'est la où je bloque, je n'arrive pas à récupérer les infos de mon produit..

<div style="width: 100%; height: 50%; vertical-align: middle;">
  <table style="width: 100%; margin: 0 auto; text-align: left;">
    <tbody>

      <tr>
        <td style="text-align: center; height: 20px;" colspan="2"></td>
      </tr>

      <tr>
        <td style="width: 5%; text-align: center;" colspan="2"></td>
        <td style="width: 90%; font-size: 14pt; font-weight: 100; font-family: Cormorant Garamond,serif; font-style: italic; text-align: center;" colspan="2">

          {$product_name}

        </td>
        <td style="width: 5%; text-align: center;" colspan="2"></td>
      </tr>

      <tr>
        <td style="text-align: center; height: 20px;" colspan="2"></td>
      </tr>

    </tbody>
  </table>
</div>

 

Je suis nouveau sur Prestashop et malheureusement je ne m'y connais pas trop en php, Quelqu'un aurait une idée svp ?

 

Merci d'avance,

Edited by Asef. (see edit history)

Share this post


Link to post
Share on other sites
Posted (edited)

You must assing all variables used in your template.

$this -> smarty -> assign(array(
	'custom_model' => $this -> custom_model,
	'product_name' => 'My product',
));

 

Edited by tuk66 (see edit history)

Share this post


Link to post
Share on other sites

Hello tuk66,

How to catch the product name of line to replace 'My product' on your code, please ? 

 

Share this post


Link to post
Share on other sites

See $order_details in HTMLTemplateInvoice::getContent().

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

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