/**
  * Edition de l'entete des journaux
  *
  * @return void
  */
 function editEntete()
 {
     $this->page++;
     $this->pdf->AddPage();
     $this->pdf->setFont($this->font, '', 10);
     $nom_journal = "";
     switch ($this->type_pdf) {
         case "paiement":
             $nom_journal = "Journal des paiements";
             break;
         case "debiteur":
             $nom_journal = "Journal de facturation";
             break;
         case "rappel":
             $nom_journal = "Journal rappels/contentieux";
             break;
         case "checklist":
             $definitive = $this->definitive ? "définitives" : "provisoires";
             $nom_journal = "Liste factures {$definitive} arrétées au " . CMbDT::transform("", CMbDT::date(), '%d/%m/%Y');
             break;
     }
     $this->editCell(10, 10, 70, CGroups::loadCurrent()->text);
     $this->pdf->Cell(160, "", $nom_journal, null, null, "C");
     $this->pdf->Cell(67, "", "Page: " . $this->page);
     $this->editCell(10, 15, 70, "Date : " . CMbDT::transform("", CMbDT::dateTime(), '%d/%m/%Y - %H:%M'));
     $this->editCell(240, 15, 70, "Numéro journal: " . $this->journal_id);
     //Les lignes
     $this->pdf->Line(5, 20, 293, 20);
     $this->pdf->Line(5, 30, 293, 30);
     $this->pdf->Line(5, 5, 5, 205);
     $this->pdf->Line(5, 5, 293, 5);
     $this->pdf->Line(293, 5, 293, 205);
     $this->pdf->Line(5, 205, 293, 205);
     $this->pdf->setFont($this->font, '', 9);
 }
Пример #2
0
$force_print = CValue::get('force_print');
$reception = new CProductReception();
if ($reception_id) {
    $reception->load($reception_id);
    $reception->loadRefsFwd();
    $reception->loadRefsBack();
}
$pdf = new CMbPdf();
$pdf->setFont("vera", '', "10");
// Définition des marges de la pages
//$pdf->SetMargins(15, 15);
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetAutoPageBreak(0);
// Creation d'une nouvelle page
$pdf->AddPage();
if ($reception->_id) {
    $lots = $reception->_ref_reception_items;
} else {
    $lot = new CProductOrderItemReception();
    $lot->load($lot_id);
    $lots = array($lot);
}
$data = array();
$j = 0;
foreach ($lots as &$item) {
    $item->loadRefsBack();
    $item->loadRefsFwd();
    $item->_ref_order_item->loadReference();
    $reference = $item->_ref_order_item->_ref_reference;
    $reference->loadRefsFwd();
Пример #3
0
 /**
  * Edition du haut de la facture
  *
  * @param int  $cle_facture     clé de la facture
  * @param int  $montant_facture montant de la facture
  * @param bool $relance         si c'est une relance
  *
  * @return void
  */
 function editHautFacture($cle_facture, $montant_facture, $relance = false)
 {
     $this->loadAllElements();
     //Création de la page de la facture
     $this->pdf->AddPage();
     $colonne1 = 10;
     $colonne2 = 120;
     $this->pdf->setFont($this->fontb, '', 12);
     $this->pdf->WriteHTML("<h4>Facture du patient</h4>");
     $this->pdf->setFont($this->font, '', 6);
     $this->pdf->Text($colonne1, 17, "Cette page est pour vos archives");
     $this->pdf->Text($colonne1, 21, "Veuillez envoyer le justificatif de remboursement");
     $this->pdf->Text($colonne1, 24, "annexé à votre caisse maladie ou à l'assurance");
     $this->pdf->setFont($this->font, '', 8);
     $auteur = array("50" => "Auteur facture", $this->auteur["nom"], $this->auteur["adresse1"], $this->auteur["adresse2"], $this->auteur["cp"] . " " . $this->auteur["ville"], "80" => "Four. de prestations", $this->fourn_presta["nom_dr"], $this->fourn_presta["fct"], $this->fourn_presta["adresse1"], $this->fourn_presta["adresse2"], $this->fourn_presta["0"]->cp . " " . $this->fourn_presta["0"]->ville);
     $tab[$colonne1] = $auteur;
     $patient_adrr = $this->traitements($this->patient->adresse);
     //Destinataire de la facture
     $patient = array("50" => "Destinataire", $this->destinataire["nom"], $this->destinataire["adresse1"], $this->destinataire["adresse2"], $this->destinataire["cp"], "80" => "Patient", "n° AVS: " . $this->patient->avs, $this->patient->_view, $patient_adrr["group1"], $patient_adrr["group2"], $this->patient->cp . " " . $this->patient->ville);
     $tab[$colonne2] = $patient;
     $this->pdf->SetTextColor(80, 80, 80);
     if ($relance) {
         $this->pdf->setFont($this->font, '', 25);
         $this->pdf->Text(100, 20, "RELANCE");
     }
     /*
     elseif ($this->facture->_reglements_total_patient) {
       $this->pdf->setFont($this->font, '', 25);
       $this->pdf->Text(100,20, "DUPLICATA");
     }
     if ($this->facture->type_facture == "accident") {
       $this->pdf->setFont($this->font, '', 15);
       $this->pdf->Text(80,40, "Accident");
     }
     if ($this->facture->cession_creance) {
       $this->pdf->setFont($this->font, '', 15);
       $this->pdf->Text(80,30, "Cession de créance");
     }
     */
     $this->pdf->SetTextColor(0, 0, 0);
     $this->pdf->setFont($this->font, '', 8);
     // Ecriture de C, D, E, F
     $x = $y = 0;
     foreach ($tab as $k => $v) {
         foreach ($v as $key => $value) {
             if ($value) {
                 if ($key == "50" || $key == "80") {
                     $y = $key;
                     $x = 0;
                 }
                 $this->editCell($k, $y + $x, 30, $value);
                 $x = $key == "50" || $key == "80" ? $x + 5 : $x + 3;
             }
         }
     }
     // G : Données de la facture
     $this->pdf->SetDrawColor(0);
     $this->pdf->Line($colonne1, 122, $colonne1 + 40, 122);
     $this->editCell($colonne1, 120, 25, "Données de la facture", "L");
     $this->editCell($colonne1, $this->pdf->GetY() + 5, 22, "Date facture:", "R");
     $this->pdf->Cell(25, "", CMbDT::format($this->facture->cloture, "%d %B %Y"), null, null, "L");
     if ($relance) {
         $this->editCell($colonne1, $this->pdf->GetY() + 3, 22, "Date relance:", "R");
         $this->pdf->Cell(25, "", CMbDT::format($this->relance->date, "%d %B %Y"), null, null, "L");
     }
     $this->editCell($colonne1, $this->pdf->GetY() + 3, 22, "N° facture:", "R");
     $num_fact = $this->facture->_id;
     if (CAppUI::conf("dPfacturation Other use_field_definitive") && !$this->facture->definitive) {
         $num_fact = "PROVISOIRE";
     }
     $this->pdf->Cell(25, "", $num_fact, null, null, "L");
     $use_date_consult = CAppUI::conf("dPfacturation CEditPdf use_date_consult_traitement", CGroups::loadCurrent());
     if ($this->facture->_class == "CFactureCabinet" && count($this->facture->_ref_consults) == 1 && $use_date_consult) {
         $this->editCell($colonne1, $this->pdf->GetY() + 3, 22, "Consultation du:", "R");
         $this->pdf->Cell(25, "", CMbDT::format($this->facture->_ref_first_consult->_date, "%d %B %Y"), null, null, "L");
     } else {
         $this->editCell($colonne1, $this->pdf->GetY() + 3, 22, "Traitement du:", "R");
         $this->pdf->Cell(25, "", CMbDT::format($this->facture->_ref_first_consult->_date, "%d %B %Y"), null, null, "L");
         $this->editCell($colonne1, $this->pdf->GetY() + 3, 22, "au:", "R");
         $this->pdf->Cell(25, "", CMbDT::format($this->facture->cloture, "%d %B %Y"), null, null, "L");
     }
     $montant_facture = sprintf('%0.2f', $montant_facture);
     if ($montant_facture < 0) {
         $montant_facture = sprintf('%0.2f', 0);
     }
     // H : Tarif
     $title_montant = "";
     if ($this->nb_factures > 1) {
         $this->num_fact++;
         $title_montant = "n° " . $this->num_fact;
     }
     $montant_total = 0;
     $tarif = array("Tarif" => "CHF");
     $acompte = $this->type_pdf == "BVR_TS" ? $this->facture->_montant_avec_remise - $montant_facture : "0.00";
     foreach ($this->pre_tab as $cles => $valeur) {
         $tarif[$cles] = $valeur;
         $montant_total += $valeur;
     }
     if ($relance) {
         $tarif["Relance:"] = sprintf('%0.2f', $this->relance->_montant);
     }
     $tarif["Remise:"] = sprintf('%0.2f', -$this->facture->remise);
     $tarif["Montant total:"] = sprintf('%0.2f', $montant_total);
     $tarif["Acompte:"] = sprintf('%0.2f', $acompte);
     $tarif["Montant dû {$title_montant}:"] = $montant_facture;
     $this->acompte += $montant_facture;
     $this->pdf->Line($colonne2, 122, $colonne2 + 50, 122);
     $x = 0;
     foreach ($tarif as $key => $value) {
         $this->editCell($colonne2, 120 + $x, 25, $key, "R");
         $this->pdf->Cell(22, "", $value, null, null, "R");
         if ($key == "Tarif" || $key == "Remise:") {
             $x += 5;
             if ($key == "Remise:") {
                 $this->pdf->Line($colonne2, 117 + $x, $colonne2 + 50, 117 + $x);
                 $this->pdf->setFont($this->fontb, '', 8);
             }
         } else {
             $x += 3;
         }
     }
 }
Пример #4
0
 function printEtiquettes($printer_id = null, $stream = 1)
 {
     // Affectation de la police par défault si aucune n'est choisie
     if ($this->font == "") {
         $this->font = "dejavusansmono";
     }
     // Calcul des dimensions de l'étiquette
     $largeur_etiq = ($this->largeur_page - 2 * $this->marge_horiz) / $this->nb_colonnes;
     $hauteur_etiq = ($this->hauteur_page - 2 * $this->marge_vert) / $this->nb_lignes;
     // Création du PDF
     $pdf = new CMbPdf('P', 'cm', array($this->largeur_page, $this->hauteur_page));
     $pdf->setFont($this->font, '', $this->hauteur_ligne);
     $pdf->setPrintHeader(false);
     $pdf->setPrintFooter(false);
     $pdf->SetMargins($this->marge_horiz, $this->marge_vert, $this->marge_horiz);
     $pdf->SetAutoPageBreak(0, $this->marge_vert);
     $pdf->AddPage();
     $distinct_texts = 1;
     $textes = array();
     $pays = CAppUI::conf("ref_pays");
     // La fonction nl2br ne fait qu'ajouter la balise <br />, elle ne supprime pas le \n.
     // Il faut donc le faire manuellement.
     $textes[1] = preg_replace("/[\t\r\n\f]/", '', utf8_encode(nl2br($this->texte)));
     if ($this->texte_2) {
         $distinct_texts++;
         $textes[] = preg_replace("/[\t\r\n\f]/", '', utf8_encode(nl2br($this->texte_2)));
     }
     if ($this->texte_3) {
         $distinct_texts++;
         $textes[] = preg_replace("/[\t\r\n\f]/", '', utf8_encode(nl2br($this->texte_3)));
     }
     if ($this->texte_4) {
         $distinct_texts++;
         $textes[] = preg_replace("/[\t\r\n\f]/", '', utf8_encode(nl2br($this->texte_4)));
     }
     $nb_etiqs = $this->nb_lignes * $this->nb_colonnes;
     $increment = floor($nb_etiqs / $distinct_texts);
     $current_text = 1;
     // Création de la grille d'étiquettes et écriture du contenu.
     for ($i = 0; $i < $nb_etiqs; $i++) {
         if ($i != 0 && $i % $increment == 0 && isset($textes[$current_text + 1])) {
             $current_text++;
         }
         if (round($pdf->GetX()) >= round($this->largeur_page - 2 * $this->marge_horiz)) {
             $pdf->SetX(0);
             $pdf->SetLeftMargin($this->marge_horiz);
             $pdf->SetY($pdf->GetY() + $hauteur_etiq);
         }
         if ($this->show_border) {
             $pdf->Rect($pdf->GetX(), $pdf->GetY(), $largeur_etiq, $hauteur_etiq, 'D');
         }
         $x = $pdf->GetX();
         $y = $pdf->GetY();
         $pdf->SetLeftMargin($x);
         // On affecte la marge droite de manière à ce que la méthode Write fasse un retour chariot
         // lorsque le contenu écrit va dépasser la largeur de l'étiquette
         $pdf->SetRightMargin($this->largeur_page - $x - $largeur_etiq);
         $fragments = explode("@", $textes[$current_text]);
         $was_barcode = 0;
         CMbArray::removeValue("", $fragments);
         // Evaluation de la hauteur du contenu de la cellule
         // si un alignement spécifique est demandé.
         if ($this->text_align != "top") {
             $pdf_ex = new CMbPdf('p', 'cm', array($largeur_etiq, $hauteur_etiq));
             $pdf_ex->setFont($this->font, '', $this->hauteur_ligne);
             $pdf_ex->SetMargins(0, 0, 0);
             $pdf_ex->setPrintHeader(false);
             $pdf_ex->setPrintFooter(false);
             $pdf_ex->SetAutoPageBreak(false);
             $pdf_ex->AddPage();
             foreach ($fragments as $fragment) {
                 if (preg_match("/BARCODE_(.*)/", $fragment, $matches) == 1) {
                     switch ($pays) {
                         case "2":
                             $save_x = $pdf_ex->getX();
                             $pdf_ex->setY($pdf_ex->getY() + 0.4);
                             $pdf_ex->setX($save_x);
                             $barcode = $matches[1];
                             $pdf_ex->setFont("C39HrP24DhTt", '', 30);
                             $pdf_ex->WriteHTML($barcode, false);
                             $pdf_ex->setFont($this->font, '', $this->hauteur_ligne);
                             break;
                         default:
                             $barcode_x = $pdf_ex->getX() + 0.15;
                             $barcode_y = $pdf_ex->getY();
                             $barcode = $matches[1];
                             $barcode_width = strlen($barcode) * 0.4 + 0.4;
                             $pdf_ex->writeBarcode($barcode_x, $barcode_y, $barcode_width, 0.8, "C128B", 1, null, null, $barcode, 25);
                             $pdf_ex->setX($barcode_x + $barcode_width);
                     }
                     $was_barcode = 1;
                 } else {
                     if ($was_barcode) {
                         $sub_fragments = explode("<br />", $fragment, 2);
                         $pdf_ex->WriteHTML($sub_fragments[0], false);
                         if (isset($sub_fragments[1])) {
                             $actual_y = $pdf_ex->getY();
                             $pdf_ex->setY($actual_y + 0.8);
                             $pdf_ex->WriteHTML($sub_fragments[1], false);
                         }
                     } else {
                         $pdf_ex->WriteHTML($fragment, false);
                     }
                     $was_barcode = 0;
                 }
             }
             $pdf_y = $pdf->getY();
             $pdf_ex_y = $pdf_ex->getY();
             switch ($this->text_align) {
                 case "middle":
                     $pdf->setY($pdf_y - 0.2 + ($hauteur_etiq - $pdf_ex_y) / 2);
                     break;
                 case "bottom":
                     $pdf->setY($pdf_y - 0.4 + $hauteur_etiq - $pdf_ex_y);
             }
         }
         foreach ($fragments as $fragment) {
             if (preg_match("/BARCODE_(.*)/", $fragment, $matches) == 1) {
                 switch ($pays) {
                     case "2":
                         // La position x est à remettre car perdue lors de la méthode setY
                         $save_x = $pdf->getX();
                         $pdf->setY($pdf->getY() + 0.4);
                         $pdf->setX($save_x);
                         $barcode = $matches[1];
                         $pdf->setFont("C39HrP24DhTt", '', 30);
                         $pdf->WriteHTML("*{$barcode}*", false);
                         $pdf->setFont($this->font, '', $this->hauteur_ligne);
                         break;
                     default:
                         $barcode_x = $pdf->getX() + 0.15;
                         $barcode_y = $pdf->getY();
                         $barcode = $matches[1];
                         $barcode_width = strlen($barcode) * 0.4 + 0.4;
                         $pdf->writeBarcode($barcode_x, $barcode_y, $barcode_width, 0.8, "C128B", 1, null, null, $barcode);
                         $pdf->setX($barcode_x + $barcode_width);
                 }
                 $was_barcode = 1;
             } else {
                 if ($was_barcode) {
                     $sub_fragments = explode("<br />", $fragment, 2);
                     $pdf->WriteHTML($sub_fragments[0], false);
                     if (isset($sub_fragments[1])) {
                         $actual_y = $pdf->getY();
                         $pdf->setY($actual_y + 0.8);
                         $pdf->WriteHTML($sub_fragments[1], false);
                     }
                 } else {
                     $pdf->WriteHTML($fragment, false);
                 }
                 $was_barcode = 0;
             }
         }
         $x = $x + $largeur_etiq;
         $pdf->SetY($y);
         $pdf->SetX($x);
     }
     if ($printer_id) {
         $file = new CFile();
         $file->_file_path = tempnam("/tmp", "etiq");
         file_put_contents($file->_file_path, $pdf->Output($this->nom . '.pdf', "S"));
         $printer = new CPrinter();
         $printer->load($printer_id);
         $printer->loadRefSource()->sendDocument($file);
         unlink($file->_file_path);
     } else {
         if ($stream) {
             $pdf->Output($this->nom . '.pdf', "I");
         } else {
             return $pdf->OutPut($this->nom . '.pdf', "S");
         }
     }
 }