Enhancement on module Direct Debit SEPA.
This commit is contained in:
parent
2579cb35dd
commit
a52ad545eb
@ -147,7 +147,7 @@ else if ($action == 'specimen') // For orders
|
|||||||
// Activate a model
|
// Activate a model
|
||||||
else if ($action == 'setmodel')
|
else if ($action == 'setmodel')
|
||||||
{
|
{
|
||||||
print "sssd".$value;
|
//print "sssd".$value;
|
||||||
$ret = addDocumentModel($value, $type, $label, $scandir);
|
$ret = addDocumentModel($value, $type, $label, $scandir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -28,7 +28,8 @@
|
|||||||
require '../main.inc.php';
|
require '../main.inc.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/bank.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/bank.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php';
|
||||||
|
|
||||||
$langs->load("admin");
|
$langs->load("admin");
|
||||||
$langs->load("companies");
|
$langs->load("companies");
|
||||||
@ -40,6 +41,9 @@ if (!$user->admin)
|
|||||||
accessforbidden();
|
accessforbidden();
|
||||||
|
|
||||||
$action = GETPOST('action','alpha');
|
$action = GETPOST('action','alpha');
|
||||||
|
$value = GETPOST('value','alpha');
|
||||||
|
$label = GETPOST('label','alpha');
|
||||||
|
$scandir = GETPOST('scandir','alpha');
|
||||||
$type = 'bankaccount';
|
$type = 'bankaccount';
|
||||||
|
|
||||||
|
|
||||||
@ -66,15 +70,22 @@ if ($action == 'specimen')
|
|||||||
{
|
{
|
||||||
$modele=GETPOST('module','alpha');
|
$modele=GETPOST('module','alpha');
|
||||||
|
|
||||||
$commande = new Commande($db);
|
if ($modele == 'sepamandate')
|
||||||
$commande->initAsSpecimen();
|
{
|
||||||
|
$object = new CompanyBankAccount($db);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$object = new Account($db);
|
||||||
|
}
|
||||||
|
$object->initAsSpecimen();
|
||||||
|
|
||||||
// Search template files
|
// Search template files
|
||||||
$file=''; $classname=''; $filefound=0;
|
$file=''; $classname=''; $filefound=0;
|
||||||
$dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']);
|
$dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']);
|
||||||
foreach($dirmodels as $reldir)
|
foreach($dirmodels as $reldir)
|
||||||
{
|
{
|
||||||
$file=dol_buildpath($reldir."core/modules/paymentorders/doc/pdf_".$modele.".modules.php",0);
|
$file=dol_buildpath($reldir."core/modules/bank/doc/pdf_".$modele.".modules.php",0);
|
||||||
if (file_exists($file))
|
if (file_exists($file))
|
||||||
{
|
{
|
||||||
$filefound=1;
|
$filefound=1;
|
||||||
@ -89,9 +100,9 @@ if ($action == 'specimen')
|
|||||||
|
|
||||||
$module = new $classname($db);
|
$module = new $classname($db);
|
||||||
|
|
||||||
if ($module->write_file($commande,$langs) > 0)
|
if ($module->write_file($object,$langs) > 0)
|
||||||
{
|
{
|
||||||
header("Location: ".DOL_URL_ROOT."/document.php?modulepart=paymentorders&file=SPECIMEN.pdf");
|
header("Location: ".DOL_URL_ROOT."/document.php?modulepart=bank&file=SPECIMEN.pdf");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -107,14 +118,28 @@ if ($action == 'specimen')
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Activate a model
|
||||||
|
if ($action == 'set')
|
||||||
|
{
|
||||||
|
$ret = addDocumentModel($value, $type, $label, $scandir);
|
||||||
|
}
|
||||||
|
|
||||||
|
else if ($action == 'del')
|
||||||
|
{
|
||||||
|
$ret = delDocumentModel($value, $type);
|
||||||
|
if ($ret > 0)
|
||||||
|
{
|
||||||
|
if ($conf->global->BANKADDON_PDF == "$value") dolibarr_del_const($db, 'BANKADDON_PDF',$conf->entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
// Set default model
|
// Set default model
|
||||||
else if ($action == 'setdoc')
|
else if ($action == 'setdoc')
|
||||||
{
|
{
|
||||||
if (dolibarr_set_const($db, "PAYMENTORDER_ADDON_PDF",$value,'chaine',0,'',$conf->entity))
|
if (dolibarr_set_const($db, "BANKADDON_PDF",$value,'chaine',0,'',$conf->entity))
|
||||||
{
|
{
|
||||||
// The constant that was read before the new set
|
// The constant that was read before the new set
|
||||||
// We therefore requires a variable to have a coherent view
|
// We therefore requires a variable to have a coherent view
|
||||||
$conf->global->PAYMENTORDER_ADDON_PDF = $value;
|
$conf->global->BANKADDON_PDF = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
// On active le modele
|
// On active le modele
|
||||||
@ -213,6 +238,8 @@ print '<br><br>';
|
|||||||
/*
|
/*
|
||||||
* Document templates generators
|
* Document templates generators
|
||||||
*/
|
*/
|
||||||
|
//if (! empty($conf->global->MAIN_FEATURES_LEVEL))
|
||||||
|
//{
|
||||||
print load_fiche_titre($langs->trans("BankAccountModelModule"), '', '');
|
print load_fiche_titre($langs->trans("BankAccountModelModule"), '', '');
|
||||||
|
|
||||||
// Load array def with activated templates
|
// Load array def with activated templates
|
||||||
@ -303,7 +330,7 @@ foreach ($dirmodels as $reldir)
|
|||||||
|
|
||||||
// Default
|
// Default
|
||||||
print '<td align="center">';
|
print '<td align="center">';
|
||||||
if ($conf->global->PAYMENTORDER_ADDON_PDF == $name) {
|
if ($conf->global->BANKADDON_PDF == $name) {
|
||||||
print img_picto($langs->trans("Default"), 'on');
|
print img_picto($langs->trans("Default"), 'on');
|
||||||
} else {
|
} else {
|
||||||
print '<a href="' . $_SERVER["PHP_SELF"] . '?action=setdoc&value=' . $name . '&scandir=' . $module->scandir . '&label=' . urlencode($module->name) . '" alt="' . $langs->trans("Default") . '">' . img_picto($langs->trans("Disabled"), 'off') . '</a>';
|
print '<a href="' . $_SERVER["PHP_SELF"] . '?action=setdoc&value=' . $name . '&scandir=' . $module->scandir . '&label=' . urlencode($module->name) . '" alt="' . $langs->trans("Default") . '">' . img_picto($langs->trans("Disabled"), 'off') . '</a>';
|
||||||
@ -318,12 +345,12 @@ foreach ($dirmodels as $reldir)
|
|||||||
}
|
}
|
||||||
$htmltooltip .= '<br><br><u>' . $langs->trans("FeaturesSupported") . ':</u>';
|
$htmltooltip .= '<br><br><u>' . $langs->trans("FeaturesSupported") . ':</u>';
|
||||||
$htmltooltip .= '<br>' . $langs->trans("Logo") . ': ' . yn($module->option_logo, 1, 1);
|
$htmltooltip .= '<br>' . $langs->trans("Logo") . ': ' . yn($module->option_logo, 1, 1);
|
||||||
$htmltooltip .= '<br>' . $langs->trans("PaymentMode") . ': ' . yn($module->option_modereg, 1, 1);
|
//$htmltooltip .= '<br>' . $langs->trans("PaymentMode") . ': ' . yn($module->option_modereg, 1, 1);
|
||||||
$htmltooltip .= '<br>' . $langs->trans("PaymentConditions") . ': ' . yn($module->option_condreg, 1, 1);
|
//$htmltooltip .= '<br>' . $langs->trans("PaymentConditions") . ': ' . yn($module->option_condreg, 1, 1);
|
||||||
$htmltooltip .= '<br>' . $langs->trans("MultiLanguage") . ': ' . yn($module->option_multilang, 1, 1);
|
$htmltooltip .= '<br>' . $langs->trans("MultiLanguage") . ': ' . yn($module->option_multilang, 1, 1);
|
||||||
// $htmltooltip.='<br>'.$langs->trans("Discounts").': '.yn($module->option_escompte,1,1);
|
// $htmltooltip.='<br>'.$langs->trans("Discounts").': '.yn($module->option_escompte,1,1);
|
||||||
// $htmltooltip.='<br>'.$langs->trans("CreditNote").': '.yn($module->option_credit_note,1,1);
|
// $htmltooltip.='<br>'.$langs->trans("CreditNote").': '.yn($module->option_credit_note,1,1);
|
||||||
$htmltooltip .= '<br>' . $langs->trans("WatermarkOnDraftOrders") . ': ' . yn($module->option_draft_watermark, 1, 1);
|
//$htmltooltip .= '<br>' . $langs->trans("WatermarkOnDraftOrders") . ': ' . yn($module->option_draft_watermark, 1, 1);
|
||||||
|
|
||||||
print '<td align="center">';
|
print '<td align="center">';
|
||||||
print $form->textwithpicto('', $htmltooltip, 1, 0);
|
print $form->textwithpicto('', $htmltooltip, 1, 0);
|
||||||
@ -347,8 +374,7 @@ foreach ($dirmodels as $reldir)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
|
|||||||
@ -1450,8 +1450,9 @@ class Account extends CommonObject
|
|||||||
*/
|
*/
|
||||||
function initAsSpecimen()
|
function initAsSpecimen()
|
||||||
{
|
{
|
||||||
|
$this->specimen = 1;
|
||||||
$this->ref = 'MBA';
|
$this->ref = 'MBA';
|
||||||
$this->label = 'My Bank account';
|
$this->label = 'My Big Company Bank account';
|
||||||
$this->bank = 'MyBank';
|
$this->bank = 'MyBank';
|
||||||
$this->courant = Account::TYPE_CURRENT;
|
$this->courant = Account::TYPE_CURRENT;
|
||||||
$this->clos = Account::STATUS_OPEN;
|
$this->clos = Account::STATUS_OPEN;
|
||||||
@ -1461,7 +1462,7 @@ class Account extends CommonObject
|
|||||||
$this->cle_rib = 50;
|
$this->cle_rib = 50;
|
||||||
$this->bic = 'AA12';
|
$this->bic = 'AA12';
|
||||||
$this->iban = 'FR999999999';
|
$this->iban = 'FR999999999';
|
||||||
$this->domiciliation = 'The bank addresse';
|
$this->domiciliation = 'My bank address';
|
||||||
$this->proprio = 'Owner';
|
$this->proprio = 'Owner';
|
||||||
$this->owner_address = 'Owner address';
|
$this->owner_address = 'Owner address';
|
||||||
$this->country_id = 1;
|
$this->country_id = 1;
|
||||||
|
|||||||
@ -1525,7 +1525,8 @@ class BonPrelevement extends CommonObject
|
|||||||
*/
|
*/
|
||||||
static function buildRumNumber($row_code_client, $row_datec, $row_drum)
|
static function buildRumNumber($row_code_client, $row_datec, $row_drum)
|
||||||
{
|
{
|
||||||
$pre = ($row_datec > 1359673200) ? 'RUM-' : '++R';
|
global $langs;
|
||||||
|
$pre = ($row_datec > 1359673200) ? $langs->trans('RUM').'-' : '++R';
|
||||||
return $pre.$row_code_client.'-'.$row_drum.'-'.date('U', $row_datec);
|
return $pre.$row_code_client.'-'.$row_drum.'-'.date('U', $row_datec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
472
htdocs/core/modules/bank/doc/pdf_ban.modules.php
Normal file
472
htdocs/core/modules/bank/doc/pdf_ban.modules.php
Normal file
@ -0,0 +1,472 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
* or see http://www.gnu.org/
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file htdocs/core/modules/bank/doc/pdf_ban.modules.php
|
||||||
|
* \ingroup bank
|
||||||
|
* \brief File of class to generate document with template ban
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/modules/bank/modules_bank.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Classe permettant de generer les projets au modele Ban
|
||||||
|
*/
|
||||||
|
|
||||||
|
class pdf_ban extends ModeleBankAccountDoc
|
||||||
|
{
|
||||||
|
var $emetteur; // Objet societe qui emet
|
||||||
|
var $version = 'development';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param DoliDB $db Database handler
|
||||||
|
*/
|
||||||
|
function __construct($db)
|
||||||
|
{
|
||||||
|
global $conf,$langs,$mysoc;
|
||||||
|
|
||||||
|
$langs->load("main");
|
||||||
|
$langs->load("bank");
|
||||||
|
$langs->load("withdrawals");
|
||||||
|
$langs->load("companies");
|
||||||
|
|
||||||
|
$this->db = $db;
|
||||||
|
$this->name = "ban";
|
||||||
|
$this->description = $langs->trans("DocumentModelBan").' (Volunteer wanted to finish)';
|
||||||
|
|
||||||
|
// Dimension page pour format A4
|
||||||
|
$this->type = 'pdf';
|
||||||
|
$formatarray=pdf_getFormat();
|
||||||
|
$this->page_largeur = $formatarray['width'];
|
||||||
|
$this->page_hauteur = $formatarray['height'];
|
||||||
|
$this->format = array($this->page_largeur,$this->page_hauteur);
|
||||||
|
$this->marge_gauche=isset($conf->global->MAIN_PDF_MARGIN_LEFT)?$conf->global->MAIN_PDF_MARGIN_LEFT:10;
|
||||||
|
$this->marge_droite=isset($conf->global->MAIN_PDF_MARGIN_RIGHT)?$conf->global->MAIN_PDF_MARGIN_RIGHT:10;
|
||||||
|
$this->marge_haute =isset($conf->global->MAIN_PDF_MARGIN_TOP)?$conf->global->MAIN_PDF_MARGIN_TOP:10;
|
||||||
|
$this->marge_basse =isset($conf->global->MAIN_PDF_MARGIN_BOTTOM)?$conf->global->MAIN_PDF_MARGIN_BOTTOM:10;
|
||||||
|
|
||||||
|
$this->option_logo = 1; // Affiche logo FAC_PDF_LOGO
|
||||||
|
$this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION
|
||||||
|
$this->option_codeproduitservice = 1; // Affiche code produit-service
|
||||||
|
|
||||||
|
// Recupere emmetteur
|
||||||
|
$this->emetteur=$mysoc;
|
||||||
|
if (! $this->emetteur->country_code) $this->emetteur->country_code=substr($langs->defaultlang,-2); // By default if not defined
|
||||||
|
|
||||||
|
// Defini position des colonnes
|
||||||
|
$this->posxref=$this->marge_gauche+1;
|
||||||
|
$this->posxlabel=$this->marge_gauche+25;
|
||||||
|
$this->posxworkload=$this->marge_gauche+100;
|
||||||
|
$this->posxprogress=$this->marge_gauche+130;
|
||||||
|
$this->posxdatestart=$this->marge_gauche+150;
|
||||||
|
$this->posxdateend=$this->marge_gauche+170;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction generant le projet sur le disque
|
||||||
|
*
|
||||||
|
* @param Project $object Object project a generer
|
||||||
|
* @param Translate $outputlangs Lang output object
|
||||||
|
* @return int 1 if OK, <=0 if KO
|
||||||
|
*/
|
||||||
|
function write_file($object,$outputlangs)
|
||||||
|
{
|
||||||
|
global $conf, $hookmanager, $langs, $user;
|
||||||
|
|
||||||
|
if (! is_object($outputlangs)) $outputlangs=$langs;
|
||||||
|
// For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO
|
||||||
|
if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1';
|
||||||
|
|
||||||
|
$outputlangs->load("main");
|
||||||
|
$outputlangs->load("dict");
|
||||||
|
$outputlangs->load("companies");
|
||||||
|
$outputlangs->load("projects");
|
||||||
|
|
||||||
|
if ($conf->bank->dir_output)
|
||||||
|
{
|
||||||
|
//$nblignes = count($object->lines); // This is set later with array of tasks
|
||||||
|
|
||||||
|
// Definition of $dir and $file
|
||||||
|
if ($object->specimen)
|
||||||
|
{
|
||||||
|
$dir = $conf->bank->dir_output;
|
||||||
|
$file = $dir . "/SPECIMEN.pdf";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$objectref = dol_sanitizeFileName($object->ref);
|
||||||
|
$dir = $conf->bank->dir_output . "/" . $objectref;
|
||||||
|
$file = $dir . "/" . $objectref . ".pdf";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! file_exists($dir))
|
||||||
|
{
|
||||||
|
if (dol_mkdir($dir) < 0)
|
||||||
|
{
|
||||||
|
$this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (file_exists($dir))
|
||||||
|
{
|
||||||
|
// Add pdfgeneration hook
|
||||||
|
if (! is_object($hookmanager))
|
||||||
|
{
|
||||||
|
include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
|
||||||
|
$hookmanager=new HookManager($this->db);
|
||||||
|
}
|
||||||
|
$hookmanager->initHooks(array('pdfgeneration'));
|
||||||
|
$parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs);
|
||||||
|
global $action;
|
||||||
|
$reshook=$hookmanager->executeHooks('beforePDFCreation',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
|
||||||
|
|
||||||
|
$pdf=pdf_getInstance($this->format);
|
||||||
|
$default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance
|
||||||
|
$heightforinfotot = 50; // Height reserved to output the info and total part
|
||||||
|
$heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page
|
||||||
|
$heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin)
|
||||||
|
$pdf->SetAutoPageBreak(1,0);
|
||||||
|
|
||||||
|
if (class_exists('TCPDF'))
|
||||||
|
{
|
||||||
|
$pdf->setPrintHeader(false);
|
||||||
|
$pdf->setPrintFooter(false);
|
||||||
|
}
|
||||||
|
$pdf->SetFont(pdf_getPDFFont($outputlangs));
|
||||||
|
|
||||||
|
$pdf->Open();
|
||||||
|
$pagenb=0;
|
||||||
|
$pdf->SetDrawColor(128,128,128);
|
||||||
|
|
||||||
|
$pdf->SetTitle($outputlangs->convToOutputCharset($object->ref));
|
||||||
|
$pdf->SetSubject($outputlangs->transnoentities("BAN"));
|
||||||
|
$pdf->SetCreator("Dolibarr ".DOL_VERSION);
|
||||||
|
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
|
||||||
|
$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("BAN"));
|
||||||
|
if (! empty($conf->global->MAIN_DISABLE_PDF_COMPRESSION)) $pdf->SetCompression(false);
|
||||||
|
|
||||||
|
$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right
|
||||||
|
|
||||||
|
// New page
|
||||||
|
$pdf->AddPage();
|
||||||
|
$pagenb++;
|
||||||
|
$this->_pagehead($pdf, $object, 1, $outputlangs);
|
||||||
|
$pdf->SetFont('','', $default_font_size - 1);
|
||||||
|
$pdf->MultiCell(0, 3, ''); // Set interline to 3
|
||||||
|
$pdf->SetTextColor(0,0,0);
|
||||||
|
|
||||||
|
$tab_top = 50;
|
||||||
|
$tab_height = 200;
|
||||||
|
$tab_top_newpage = 40;
|
||||||
|
$tab_height_newpage = 210;
|
||||||
|
|
||||||
|
// Affiche notes
|
||||||
|
if (! empty($object->note_public))
|
||||||
|
{
|
||||||
|
$pdf->SetFont('','', $default_font_size - 1);
|
||||||
|
$pdf->writeHTMLCell(190, 3, $this->posxref-1, $tab_top-2, dol_htmlentitiesbr($object->note_public), 0, 1);
|
||||||
|
$nexY = $pdf->GetY();
|
||||||
|
$height_note=$nexY-($tab_top-2);
|
||||||
|
|
||||||
|
// Rect prend une longueur en 3eme param
|
||||||
|
$pdf->SetDrawColor(192,192,192);
|
||||||
|
$pdf->Rect($this->marge_gauche, $tab_top-3, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $height_note+1);
|
||||||
|
|
||||||
|
$tab_height = $tab_height - $height_note;
|
||||||
|
$tab_top = $nexY+6;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$height_note=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$iniY = $tab_top + 7;
|
||||||
|
$curY = $tab_top + 7;
|
||||||
|
$nexY = $tab_top + 7;
|
||||||
|
|
||||||
|
$pdf->SetXY($this->marge_gauche, $curY);
|
||||||
|
$pdf->MultiCell(200, 3, $outputlangs->trans("BAN").' : '.$object->account_number, 0, 'L');
|
||||||
|
|
||||||
|
// Boucle sur les lignes
|
||||||
|
/*
|
||||||
|
for ($i = 0 ; $i < $nblignes ; $i++)
|
||||||
|
{
|
||||||
|
$curY = $nexY;
|
||||||
|
|
||||||
|
// Description of ligne
|
||||||
|
$ref=$object->lines[$i]->ref;
|
||||||
|
$libelleline=$object->lines[$i]->label;
|
||||||
|
$progress=$object->lines[$i]->progress.'%';
|
||||||
|
$datestart=dol_print_date($object->lines[$i]->date_start,'day');
|
||||||
|
$dateend=dol_print_date($object->lines[$i]->date_end,'day');
|
||||||
|
$planned_workload=convertSecondToTime($object->lines[$i]->planned_workload,'allhourmin');
|
||||||
|
|
||||||
|
$pdf->SetFont('','', $default_font_size - 1); // Dans boucle pour gerer multi-page
|
||||||
|
|
||||||
|
$pdf->SetXY($this->posxref, $curY);
|
||||||
|
$pdf->MultiCell($this->posxlabel-$this->posxref, 3, $outputlangs->convToOutputCharset($ref), 0, 'L');
|
||||||
|
$pdf->SetXY($this->posxlabel, $curY);
|
||||||
|
$pdf->MultiCell($this->posxworkload-$this->posxlabel, 3, $outputlangs->convToOutputCharset($libelleline), 0, 'L');
|
||||||
|
$pdf->SetXY($this->posxworkload, $curY);
|
||||||
|
$pdf->MultiCell($this->posxprogress-$this->posxworkload, 3, $planned_workload, 0, 'R');
|
||||||
|
$pdf->SetXY($this->posxprogress, $curY);
|
||||||
|
$pdf->MultiCell($this->posxdatestart-$this->posxprogress, 3, $progress, 0, 'R');
|
||||||
|
|
||||||
|
$pdf->SetXY($this->posxdatestart, $curY);
|
||||||
|
$pdf->MultiCell($this->posxdateend-$this->posxdatestart, 3, $datestart, 0, 'C');
|
||||||
|
$pdf->SetXY($this->posxdateend, $curY);
|
||||||
|
$pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->posxdateend, 3, $dateend, 0, 'C');
|
||||||
|
|
||||||
|
$pageposafter=$pdf->getPage();
|
||||||
|
|
||||||
|
$pdf->SetFont('','', $default_font_size - 1); // On repositionne la police par defaut
|
||||||
|
$nexY = $pdf->GetY();
|
||||||
|
|
||||||
|
// Add line
|
||||||
|
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
|
||||||
|
{
|
||||||
|
$pdf->setPage($pageposafter);
|
||||||
|
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));
|
||||||
|
//$pdf->SetDrawColor(190,190,200);
|
||||||
|
$pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1);
|
||||||
|
$pdf->SetLineStyle(array('dash'=>0));
|
||||||
|
}
|
||||||
|
|
||||||
|
$nexY+=2; // Passe espace entre les lignes
|
||||||
|
|
||||||
|
// Detect if some page were added automatically and output _tableau for past pages
|
||||||
|
while ($pagenb < $pageposafter)
|
||||||
|
{
|
||||||
|
$pdf->setPage($pagenb);
|
||||||
|
if ($pagenb == 1)
|
||||||
|
{
|
||||||
|
$this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1);
|
||||||
|
}
|
||||||
|
$this->_pagefoot($pdf,$object,$outputlangs,1);
|
||||||
|
$pagenb++;
|
||||||
|
$pdf->setPage($pagenb);
|
||||||
|
$pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it.
|
||||||
|
}
|
||||||
|
if (isset($object->lines[$i+1]->pagebreak) && $object->lines[$i+1]->pagebreak)
|
||||||
|
{
|
||||||
|
if ($pagenb == 1)
|
||||||
|
{
|
||||||
|
$this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1);
|
||||||
|
}
|
||||||
|
$this->_pagefoot($pdf,$object,$outputlangs,1);
|
||||||
|
// New page
|
||||||
|
$pdf->AddPage();
|
||||||
|
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
|
||||||
|
$pagenb++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Show square
|
||||||
|
if ($pagenb == 1)
|
||||||
|
{
|
||||||
|
$this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0);
|
||||||
|
$bottomlasttab=$this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0);
|
||||||
|
$bottomlasttab=$this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pied de page
|
||||||
|
*/
|
||||||
|
$this->_pagefoot($pdf,$object,$outputlangs);
|
||||||
|
if (method_exists($pdf,'AliasNbPages')) $pdf->AliasNbPages();
|
||||||
|
|
||||||
|
$pdf->Close();
|
||||||
|
|
||||||
|
$pdf->Output($file,'F');
|
||||||
|
|
||||||
|
// Add pdfgeneration hook
|
||||||
|
if (! is_object($hookmanager))
|
||||||
|
{
|
||||||
|
include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
|
||||||
|
$hookmanager=new HookManager($this->db);
|
||||||
|
}
|
||||||
|
$hookmanager->initHooks(array('pdfgeneration'));
|
||||||
|
$parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs);
|
||||||
|
global $action;
|
||||||
|
$reshook=$hookmanager->executeHooks('afterPDFCreation',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
|
||||||
|
|
||||||
|
if (! empty($conf->global->MAIN_UMASK))
|
||||||
|
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||||
|
|
||||||
|
return 1; // Pas d'erreur
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->error=$langs->transnoentities("ErrorConstantNotDefined","LIVRAISON_OUTPUTDIR");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show table for lines
|
||||||
|
*
|
||||||
|
* @param PDF $pdf Object PDF
|
||||||
|
* @param string $tab_top Top position of table
|
||||||
|
* @param string $tab_height Height of table (rectangle)
|
||||||
|
* @param int $nexY Y
|
||||||
|
* @param Translate $outputlangs Langs object
|
||||||
|
* @param int $hidetop Hide top bar of array
|
||||||
|
* @param int $hidebottom Hide bottom bar of array
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop=0, $hidebottom=0)
|
||||||
|
{
|
||||||
|
global $conf,$mysoc;
|
||||||
|
|
||||||
|
$default_font_size = pdf_getPDFFontSize($outputlangs);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show top header of page.
|
||||||
|
*
|
||||||
|
* @param PDF $pdf Object PDF
|
||||||
|
* @param Project $object Object to show
|
||||||
|
* @param int $showaddress 0=no, 1=yes
|
||||||
|
* @param Translate $outputlangs Object lang for output
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function _pagehead(&$pdf, $object, $showaddress, $outputlangs)
|
||||||
|
{
|
||||||
|
global $langs,$conf,$mysoc;
|
||||||
|
|
||||||
|
$default_font_size = pdf_getPDFFontSize($outputlangs);
|
||||||
|
|
||||||
|
pdf_pagehead($pdf,$outputlangs,$this->page_hauteur);
|
||||||
|
|
||||||
|
$pdf->SetTextColor(0,0,60);
|
||||||
|
$pdf->SetFont('','B', $default_font_size + 3);
|
||||||
|
|
||||||
|
$posx=$this->page_largeur-$this->marge_droite-100;
|
||||||
|
$posy=$this->marge_haute;
|
||||||
|
|
||||||
|
$pdf->SetXY($this->marge_gauche,$posy);
|
||||||
|
|
||||||
|
// Logo
|
||||||
|
$logo=$conf->mycompany->dir_output.'/logos/'.$mysoc->logo;
|
||||||
|
if ($mysoc->logo)
|
||||||
|
{
|
||||||
|
if (is_readable($logo))
|
||||||
|
{
|
||||||
|
$height=pdf_getHeightForLogo($logo);
|
||||||
|
$pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$pdf->SetTextColor(200,0,0);
|
||||||
|
$pdf->SetFont('','B', $default_font_size - 2);
|
||||||
|
$pdf->MultiCell(100, 3, $langs->transnoentities("ErrorLogoFileNotFound",$logo), 0, 'L');
|
||||||
|
$pdf->MultiCell(100, 3, $langs->transnoentities("ErrorGoToModuleSetup"), 0, 'L');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else $pdf->MultiCell(100, 4, $outputlangs->transnoentities($this->emetteur->name), 0, 'L');
|
||||||
|
|
||||||
|
$pdf->SetFont('','B', $default_font_size + 3);
|
||||||
|
$pdf->SetXY($posx,$posy);
|
||||||
|
$pdf->SetTextColor(0,0,60);
|
||||||
|
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("BAN")." ".$outputlangs->convToOutputCharset($object->ref), '', 'R');
|
||||||
|
$pdf->SetFont('','', $default_font_size + 2);
|
||||||
|
|
||||||
|
$posy+=6;
|
||||||
|
$pdf->SetXY($posx,$posy);
|
||||||
|
$pdf->SetTextColor(0,0,60);
|
||||||
|
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("Date")." : " . dol_print_date(dol_now(),'day',false,$outputlangs,true), '', 'R');
|
||||||
|
/*$posy+=6;
|
||||||
|
$pdf->SetXY($posx,$posy);
|
||||||
|
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateEnd")." : " . dol_print_date($object->date_end,'day',false,$outputlangs,true), '', 'R');
|
||||||
|
*/
|
||||||
|
|
||||||
|
$pdf->SetTextColor(0,0,60);
|
||||||
|
|
||||||
|
// Add list of linked objects
|
||||||
|
/* Removed: A project can have more than thousands linked objects (orders, invoices, proposals, etc....
|
||||||
|
$object->fetchObjectLinked();
|
||||||
|
|
||||||
|
foreach($object->linkedObjects as $objecttype => $objects)
|
||||||
|
{
|
||||||
|
var_dump($objects);exit;
|
||||||
|
if ($objecttype == 'commande')
|
||||||
|
{
|
||||||
|
$outputlangs->load('orders');
|
||||||
|
$num=count($objects);
|
||||||
|
for ($i=0;$i<$num;$i++)
|
||||||
|
{
|
||||||
|
$posy+=4;
|
||||||
|
$pdf->SetXY($posx,$posy);
|
||||||
|
$pdf->SetFont('','', $default_font_size - 1);
|
||||||
|
$text=$objects[$i]->ref;
|
||||||
|
if ($objects[$i]->ref_client) $text.=' ('.$objects[$i]->ref_client.')';
|
||||||
|
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("RefOrder")." : ".$outputlangs->transnoentities($text), '', 'R');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show footer of page. Need this->emetteur object
|
||||||
|
*
|
||||||
|
* @param PDF $pdf PDF
|
||||||
|
* @param Project $object Object to show
|
||||||
|
* @param Translate $outputlangs Object lang for output
|
||||||
|
* @param int $hidefreetext 1=Hide free text
|
||||||
|
* @return integer
|
||||||
|
*/
|
||||||
|
function _pagefoot(&$pdf,$object,$outputlangs,$hidefreetext=0)
|
||||||
|
{
|
||||||
|
global $conf;
|
||||||
|
$showdetails=$conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS;
|
||||||
|
//return pdf_pagefoot($pdf,$outputlangs,'BANK_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object,$showdetails,$hidefreetext);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@ -23,7 +23,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/modules/bank/modules_bank.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/modules/bank/modules_bank.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
||||||
@ -36,7 +36,8 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
|||||||
class pdf_sepamandate extends ModeleBankAccountDoc
|
class pdf_sepamandate extends ModeleBankAccountDoc
|
||||||
{
|
{
|
||||||
var $emetteur; // Objet societe qui emet
|
var $emetteur; // Objet societe qui emet
|
||||||
|
var $version = 'dolibarr';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
@ -48,6 +49,7 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
|||||||
|
|
||||||
$langs->load("main");
|
$langs->load("main");
|
||||||
$langs->load("bank");
|
$langs->load("bank");
|
||||||
|
$langs->load("withdrawals");
|
||||||
$langs->load("companies");
|
$langs->load("companies");
|
||||||
|
|
||||||
$this->db = $db;
|
$this->db = $db;
|
||||||
@ -107,11 +109,19 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
|||||||
{
|
{
|
||||||
//$nblignes = count($object->lines); // This is set later with array of tasks
|
//$nblignes = count($object->lines); // This is set later with array of tasks
|
||||||
|
|
||||||
$objectref = dol_sanitizeFileName($object->ref);
|
// Definition of $dir and $file
|
||||||
$dir = $conf->bank->dir_output;
|
if ($object->specimen)
|
||||||
if (! preg_match('/specimen/i',$objectref)) $dir.= "/" . $objectref;
|
{
|
||||||
$file = $dir . "/" . $objectref . ".pdf";
|
$dir = $conf->bank->dir_output;
|
||||||
|
$file = $dir . "/SPECIMEN.pdf";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$objectref = dol_sanitizeFileName($object->ref);
|
||||||
|
$dir = $conf->bank->dir_output . "/" . $objectref;
|
||||||
|
$file = $dir . "/" . $objectref . ".pdf";
|
||||||
|
}
|
||||||
|
|
||||||
if (! file_exists($dir))
|
if (! file_exists($dir))
|
||||||
{
|
{
|
||||||
if (dol_mkdir($dir) < 0)
|
if (dol_mkdir($dir) < 0)
|
||||||
@ -148,27 +158,15 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
|||||||
}
|
}
|
||||||
$pdf->SetFont(pdf_getPDFFont($outputlangs));
|
$pdf->SetFont(pdf_getPDFFont($outputlangs));
|
||||||
|
|
||||||
// Complete object by loading several other informations
|
|
||||||
$task = new Task($this->db);
|
|
||||||
$tasksarray = $task->getTasksArray(0,0,$object->id);
|
|
||||||
|
|
||||||
if (! $object->id > 0) // Special case when used with object = specimen, we may return all lines
|
|
||||||
{
|
|
||||||
$tasksarray=array_slice($tasksarray, 0, min(5, count($tasksarray)));
|
|
||||||
}
|
|
||||||
|
|
||||||
$object->lines=$tasksarray;
|
|
||||||
$nblignes=count($object->lines);
|
|
||||||
|
|
||||||
$pdf->Open();
|
$pdf->Open();
|
||||||
$pagenb=0;
|
$pagenb=0;
|
||||||
$pdf->SetDrawColor(128,128,128);
|
$pdf->SetDrawColor(128,128,128);
|
||||||
|
|
||||||
$pdf->SetTitle($outputlangs->convToOutputCharset($object->ref));
|
$pdf->SetTitle($outputlangs->convToOutputCharset($object->ref));
|
||||||
$pdf->SetSubject($outputlangs->transnoentities("Project"));
|
$pdf->SetSubject($outputlangs->transnoentities("SepaMandate"));
|
||||||
$pdf->SetCreator("Dolibarr ".DOL_VERSION);
|
$pdf->SetCreator("Dolibarr ".DOL_VERSION);
|
||||||
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
|
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
|
||||||
$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("Project"));
|
$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("SepaMandate"));
|
||||||
if (! empty($conf->global->MAIN_DISABLE_PDF_COMPRESSION)) $pdf->SetCompression(false);
|
if (! empty($conf->global->MAIN_DISABLE_PDF_COMPRESSION)) $pdf->SetCompression(false);
|
||||||
|
|
||||||
$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right
|
$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right
|
||||||
@ -210,7 +208,12 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
|||||||
$curY = $tab_top + 7;
|
$curY = $tab_top + 7;
|
||||||
$nexY = $tab_top + 7;
|
$nexY = $tab_top + 7;
|
||||||
|
|
||||||
|
//var_dump($object);exit;
|
||||||
|
$pdf->SetXY($this->marge_gauche, $curY);
|
||||||
|
$pdf->MultiCell(200, 3, $outputlangs->trans("RUMLong").' ('.$outputlangs->trans("RUM").')'.' : '.$object->rum, 0, 'L');
|
||||||
|
|
||||||
// Boucle sur les lignes
|
// Boucle sur les lignes
|
||||||
|
/*
|
||||||
for ($i = 0 ; $i < $nblignes ; $i++)
|
for ($i = 0 ; $i < $nblignes ; $i++)
|
||||||
{
|
{
|
||||||
$curY = $nexY;
|
$curY = $nexY;
|
||||||
@ -290,7 +293,8 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
|||||||
$pagenb++;
|
$pagenb++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
// Show square
|
// Show square
|
||||||
if ($pagenb == 1)
|
if ($pagenb == 1)
|
||||||
{
|
{
|
||||||
@ -359,34 +363,6 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
|||||||
|
|
||||||
$default_font_size = pdf_getPDFFontSize($outputlangs);
|
$default_font_size = pdf_getPDFFontSize($outputlangs);
|
||||||
|
|
||||||
$pdf->SetDrawColor(128,128,128);
|
|
||||||
|
|
||||||
// Rect prend une longueur en 3eme param
|
|
||||||
$pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $tab_height);
|
|
||||||
// line prend une position y en 3eme param
|
|
||||||
$pdf->line($this->marge_gauche, $tab_top+6, $this->page_largeur-$this->marge_droite, $tab_top+6);
|
|
||||||
|
|
||||||
$pdf->SetTextColor(0,0,0);
|
|
||||||
$pdf->SetFont('','', $default_font_size);
|
|
||||||
|
|
||||||
$pdf->SetXY($this->posxref, $tab_top+1);
|
|
||||||
$pdf->MultiCell($this->posxlabel-$this->posxref,3, $outputlangs->transnoentities("Tasks"),'','L');
|
|
||||||
|
|
||||||
$pdf->SetXY($this->posxlabel, $tab_top+1);
|
|
||||||
$pdf->MultiCell($this->posxworkload-$this->posxlabel, 3, $outputlangs->transnoentities("Description"), 0, 'L');
|
|
||||||
|
|
||||||
$pdf->SetXY($this->posxworkload, $tab_top+1);
|
|
||||||
$pdf->MultiCell($this->posxprogress-$this->posxworkload, 3, $outputlangs->transnoentities("PlannedWorkloadShort"), 0, 'R');
|
|
||||||
|
|
||||||
$pdf->SetXY($this->posxprogress, $tab_top+1);
|
|
||||||
$pdf->MultiCell($this->posxdatestart-$this->posxprogress, 3, '%', 0, 'R');
|
|
||||||
|
|
||||||
$pdf->SetXY($this->posxdatestart, $tab_top+1);
|
|
||||||
$pdf->MultiCell($this->posxdateend-$this->posxdatestart, 3, '', 0, 'C');
|
|
||||||
|
|
||||||
$pdf->SetXY($this->posxdateend, $tab_top+1);
|
|
||||||
$pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxdatestart, 3, '', 0, 'C');
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -436,16 +412,17 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
|||||||
$pdf->SetFont('','B', $default_font_size + 3);
|
$pdf->SetFont('','B', $default_font_size + 3);
|
||||||
$pdf->SetXY($posx,$posy);
|
$pdf->SetXY($posx,$posy);
|
||||||
$pdf->SetTextColor(0,0,60);
|
$pdf->SetTextColor(0,0,60);
|
||||||
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("Project")." ".$outputlangs->convToOutputCharset($object->ref), '', 'R');
|
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("SepaMandate"), '', 'R');
|
||||||
$pdf->SetFont('','', $default_font_size + 2);
|
$pdf->SetFont('','', $default_font_size + 2);
|
||||||
|
|
||||||
$posy+=6;
|
$posy+=6;
|
||||||
$pdf->SetXY($posx,$posy);
|
$pdf->SetXY($posx,$posy);
|
||||||
$pdf->SetTextColor(0,0,60);
|
$pdf->SetTextColor(0,0,60);
|
||||||
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateStart")." : " . dol_print_date($object->date_start,'day',false,$outputlangs,true), '', 'R');
|
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("Date")." : " . dol_print_date(dol_now(),'day',false,$outputlangs,true), '', 'R');
|
||||||
$posy+=6;
|
/*$posy+=6;
|
||||||
$pdf->SetXY($posx,$posy);
|
$pdf->SetXY($posx,$posy);
|
||||||
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateEnd")." : " . dol_print_date($object->date_end,'day',false,$outputlangs,true), '', 'R');
|
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateEnd")." : " . dol_print_date($object->date_end,'day',false,$outputlangs,true), '', 'R');
|
||||||
|
*/
|
||||||
|
|
||||||
$pdf->SetTextColor(0,0,60);
|
$pdf->SetTextColor(0,0,60);
|
||||||
|
|
||||||
|
|||||||
@ -70,7 +70,7 @@ class modBanque extends DolibarrModules
|
|||||||
|
|
||||||
// Dependancies
|
// Dependancies
|
||||||
$this->depends = array();
|
$this->depends = array();
|
||||||
$this->requiredby = array("modComptabilite","modAccounting");
|
$this->requiredby = array("modComptabilite","modAccounting","modPrelevement");
|
||||||
$this->conflictwith = array();
|
$this->conflictwith = array();
|
||||||
$this->langfiles = array("banks","compta","bills","companies");
|
$this->langfiles = array("banks","compta","bills","companies");
|
||||||
|
|
||||||
|
|||||||
@ -1355,7 +1355,7 @@ GenbarcodeLocation=Bar code generation command line tool (used by internal engin
|
|||||||
BarcodeInternalEngine=Internal engine
|
BarcodeInternalEngine=Internal engine
|
||||||
BarCodeNumberManager=Manager to auto define barcode numbers
|
BarCodeNumberManager=Manager to auto define barcode numbers
|
||||||
##### Prelevements #####
|
##### Prelevements #####
|
||||||
WithdrawalsSetup=Withdrawal module setup
|
WithdrawalsSetup=Setup of module Direct debit payment orders
|
||||||
##### ExternalRSS #####
|
##### ExternalRSS #####
|
||||||
ExternalRSSSetup=External RSS imports setup
|
ExternalRSSSetup=External RSS imports setup
|
||||||
NewRSS=New RSS Feed
|
NewRSS=New RSS Feed
|
||||||
|
|||||||
@ -32,8 +32,8 @@ IbanNotValid=IBAN is Not Valid
|
|||||||
BIC=BIC/SWIFT number
|
BIC=BIC/SWIFT number
|
||||||
SwiftValid=BIC/SWIFT is Valid
|
SwiftValid=BIC/SWIFT is Valid
|
||||||
SwiftNotValid=BIC/SWIFT is Not Valid
|
SwiftNotValid=BIC/SWIFT is Not Valid
|
||||||
StandingOrders=Standing orders
|
StandingOrders=Direct Debit orders
|
||||||
StandingOrder=Standing order
|
StandingOrder=Direct debit order
|
||||||
AccountStatement=Account statement
|
AccountStatement=Account statement
|
||||||
AccountStatementShort=Statement
|
AccountStatementShort=Statement
|
||||||
AccountStatements=Account statements
|
AccountStatements=Account statements
|
||||||
|
|||||||
@ -209,8 +209,8 @@ EscompteOffered=Discount offered (payment before term)
|
|||||||
EscompteOfferedShort=Discount
|
EscompteOfferedShort=Discount
|
||||||
SendBillRef=Submission of invoice %s
|
SendBillRef=Submission of invoice %s
|
||||||
SendReminderBillRef=Submission of invoice %s (reminder)
|
SendReminderBillRef=Submission of invoice %s (reminder)
|
||||||
StandingOrders=Standing orders
|
StandingOrders=Direct debit orders
|
||||||
StandingOrder=Standing order
|
StandingOrder=Direct debit order
|
||||||
NoDraftBills=No draft invoices
|
NoDraftBills=No draft invoices
|
||||||
NoOtherDraftBills=No other draft invoices
|
NoOtherDraftBills=No other draft invoices
|
||||||
NoDraftInvoices=No draft invoices
|
NoDraftInvoices=No draft invoices
|
||||||
@ -351,8 +351,8 @@ VarAmount=Variable amount (%% tot.)
|
|||||||
# PaymentType
|
# PaymentType
|
||||||
PaymentTypeVIR=Bank transfer
|
PaymentTypeVIR=Bank transfer
|
||||||
PaymentTypeShortVIR=Bank transfer
|
PaymentTypeShortVIR=Bank transfer
|
||||||
PaymentTypePRE=Bank's order
|
PaymentTypePRE=Direct debit payment order
|
||||||
PaymentTypeShortPRE=Bank's order
|
PaymentTypeShortPRE=Debit payment order
|
||||||
PaymentTypeLIQ=Cash
|
PaymentTypeLIQ=Cash
|
||||||
PaymentTypeShortLIQ=Cash
|
PaymentTypeShortLIQ=Cash
|
||||||
PaymentTypeCB=Credit card
|
PaymentTypeCB=Credit card
|
||||||
|
|||||||
@ -175,6 +175,7 @@ ErrorStockIsNotEnoughToAddProductOnInvoice=Stock is not enougth for product %s t
|
|||||||
ErrorStockIsNotEnoughToAddProductOnShipment=Stock is not enougth for product %s to add it into a new shipment.
|
ErrorStockIsNotEnoughToAddProductOnShipment=Stock is not enougth for product %s to add it into a new shipment.
|
||||||
ErrorStockIsNotEnoughToAddProductOnProposal=Stock is not enougth for product %s to add it into a new proposal.
|
ErrorStockIsNotEnoughToAddProductOnProposal=Stock is not enougth for product %s to add it into a new proposal.
|
||||||
ErrorFailedToLoadLoginFileForMode=Failed to get the login file for mode '%s'.
|
ErrorFailedToLoadLoginFileForMode=Failed to get the login file for mode '%s'.
|
||||||
|
ErrorModuleNotFound=File of module was not found.
|
||||||
|
|
||||||
# Warnings
|
# Warnings
|
||||||
WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user.
|
WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user.
|
||||||
|
|||||||
@ -3,26 +3,26 @@ CustomersStandingOrdersArea=Direct debit payment orders area
|
|||||||
SuppliersStandingOrdersArea=Direct credit payment orders area
|
SuppliersStandingOrdersArea=Direct credit payment orders area
|
||||||
StandingOrders=Direct debit payment orders
|
StandingOrders=Direct debit payment orders
|
||||||
StandingOrder=Direct debit payment order
|
StandingOrder=Direct debit payment order
|
||||||
NewStandingOrder=New direct debit payment order
|
NewStandingOrder=New direct debit order
|
||||||
StandingOrderToProcess=To process
|
StandingOrderToProcess=To process
|
||||||
WithdrawalsReceipts=Withdrawal receipts
|
WithdrawalsReceipts=Direct debit orders
|
||||||
WithdrawalReceipt=Withdrawal receipt
|
WithdrawalReceipt=Direct debit order
|
||||||
LastWithdrawalReceipts=Latest %s withdrawal receipts
|
LastWithdrawalReceipts=Latest %s direct debit files
|
||||||
WithdrawalsLines=Withdrawal lines
|
WithdrawalsLines=Direct debit order lines
|
||||||
RequestStandingOrderToTreat=Request for direct debit payment order to process
|
RequestStandingOrderToTreat=Request for direct debit payment order to process
|
||||||
RequestStandingOrderTreated=Request for direct debit payment order processed
|
RequestStandingOrderTreated=Request for direct debit payment order processed
|
||||||
NotPossibleForThisStatusOfWithdrawReceiptORLine=Not yet possible. Withdraw status must be set to 'credited' before declaring reject on specific lines.
|
NotPossibleForThisStatusOfWithdrawReceiptORLine=Not yet possible. Withdraw status must be set to 'credited' before declaring reject on specific lines.
|
||||||
NbOfInvoiceToWithdraw=Nb. of invoice with withdraw request
|
NbOfInvoiceToWithdraw=Nb. of invoice with direct debit order
|
||||||
NbOfInvoiceToWithdrawWithInfo=Nb. of invoice with withdraw request for customers having defined bank account information
|
NbOfInvoiceToWithdrawWithInfo=Nb. of customer invoice with direct debit payment orders having defined bank account information
|
||||||
InvoiceWaitingWithdraw=Invoice waiting for withdraw
|
InvoiceWaitingWithdraw=Invoice waiting for direct debit
|
||||||
AmountToWithdraw=Amount to withdraw
|
AmountToWithdraw=Amount to withdraw
|
||||||
WithdrawsRefused=Withdraws refused
|
WithdrawsRefused=Direct debit refused
|
||||||
NoInvoiceToWithdraw=No customer invoice in payment mode "withdraw" is waiting. Go on 'Withdraw' tab on invoice card to make a request.
|
NoInvoiceToWithdraw=No customer invoice in payment mode "withdraw" is waiting. Go on 'Withdraw' tab on invoice card to make a request.
|
||||||
ResponsibleUser=Responsible user
|
ResponsibleUser=Responsible user
|
||||||
WithdrawalsSetup=Withdrawal setup
|
WithdrawalsSetup=Direct debit payment setup
|
||||||
WithdrawStatistics=Withdraw's statistics
|
WithdrawStatistics=Direct debit payment statistics
|
||||||
WithdrawRejectStatistics=Withdraw reject's statistics
|
WithdrawRejectStatistics=Direct debit payment reject statistics
|
||||||
LastWithdrawalReceipt=Latest %s withdrawal receipts
|
LastWithdrawalReceipt=Latest %s direct debit receipts
|
||||||
MakeWithdrawRequest=Make a withdraw request
|
MakeWithdrawRequest=Make a withdraw request
|
||||||
ThirdPartyBankCode=Third party bank code
|
ThirdPartyBankCode=Third party bank code
|
||||||
NoInvoiceCouldBeWithdrawed=No invoice withdrawed with success. Check that invoice are on companies with a valid BAN.
|
NoInvoiceCouldBeWithdrawed=No invoice withdrawed with success. Check that invoice are on companies with a valid BAN.
|
||||||
@ -47,7 +47,7 @@ StatusRefused=Refused
|
|||||||
StatusMotif0=Unspecified
|
StatusMotif0=Unspecified
|
||||||
StatusMotif1=Insufficient funds
|
StatusMotif1=Insufficient funds
|
||||||
StatusMotif2=Request contested
|
StatusMotif2=Request contested
|
||||||
StatusMotif3=No Withdrawal order
|
StatusMotif3=No direct debit payment order
|
||||||
StatusMotif4=Customer Order
|
StatusMotif4=Customer Order
|
||||||
StatusMotif5=RIB unusable
|
StatusMotif5=RIB unusable
|
||||||
StatusMotif6=Account without balance
|
StatusMotif6=Account without balance
|
||||||
@ -62,7 +62,7 @@ NotifyCredit=Withdrawal Credit
|
|||||||
NumeroNationalEmetter=National Transmitter Number
|
NumeroNationalEmetter=National Transmitter Number
|
||||||
WithBankUsingRIB=For bank accounts using RIB
|
WithBankUsingRIB=For bank accounts using RIB
|
||||||
WithBankUsingBANBIC=For bank accounts using IBAN/BIC/SWIFT
|
WithBankUsingBANBIC=For bank accounts using IBAN/BIC/SWIFT
|
||||||
BankToReceiveWithdraw=Bank account to receive withdraws
|
BankToReceiveWithdraw=Bank account to receive direct debit
|
||||||
CreditDate=Credit on
|
CreditDate=Credit on
|
||||||
WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported)
|
WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported)
|
||||||
ShowWithdraw=Show Withdraw
|
ShowWithdraw=Show Withdraw
|
||||||
@ -72,11 +72,13 @@ WithdrawalFile=Withdrawal file
|
|||||||
SetToStatusSent=Set to status "File Sent"
|
SetToStatusSent=Set to status "File Sent"
|
||||||
ThisWillAlsoAddPaymentOnInvoice=This will also apply payments to invoices and will classify them as "Paid"
|
ThisWillAlsoAddPaymentOnInvoice=This will also apply payments to invoices and will classify them as "Paid"
|
||||||
StatisticsByLineStatus=Statistics by status of lines
|
StatisticsByLineStatus=Statistics by status of lines
|
||||||
RUM=RUM
|
RUM=UMR
|
||||||
RUMWillBeGenerated=RUM number will be generated once bank account information are saved
|
RUMLong=Unique Mandate Reference
|
||||||
WithdrawMode=Withdraw mode (FRST or RECUR)
|
RUMWillBeGenerated=UMR number will be generated once bank account information are saved
|
||||||
|
WithdrawMode=Direct debit mode (FRST or RECUR)
|
||||||
WithdrawRequestAmount=Withdraw request amount:
|
WithdrawRequestAmount=Withdraw request amount:
|
||||||
WithdrawRequestErrorNilAmount=Unable to create withdraw request for nil amount.
|
WithdrawRequestErrorNilAmount=Unable to create withdraw request for nil amount.
|
||||||
|
SepaMandate=SEPA Direct Debit Mandate
|
||||||
|
|
||||||
### Notifications
|
### Notifications
|
||||||
InfoCreditSubject=Payment of direct debit payment order %s by the bank
|
InfoCreditSubject=Payment of direct debit payment order %s by the bank
|
||||||
|
|||||||
@ -129,6 +129,8 @@ class CompanyBankAccount extends Account
|
|||||||
if ($conf->prelevement->enabled)
|
if ($conf->prelevement->enabled)
|
||||||
{
|
{
|
||||||
$sql.= ",frstrecur = '".$this->db->escape($this->frstrecur)."'";
|
$sql.= ",frstrecur = '".$this->db->escape($this->frstrecur)."'";
|
||||||
|
$sql.= ",rum = '".$this->db->escape($this->rum)."'";
|
||||||
|
$sql.= ",date_rum = ".($this->date_rum ? "'".$this->db->idate($this->date_rum)."'" : "null");
|
||||||
}
|
}
|
||||||
if (trim($this->label) != '')
|
if (trim($this->label) != '')
|
||||||
$sql.= ",label = '".$this->db->escape($this->label)."'";
|
$sql.= ",label = '".$this->db->escape($this->label)."'";
|
||||||
@ -302,5 +304,36 @@ class CompanyBankAccount extends Account
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialise an instance with random values.
|
||||||
|
* Used to build previews or test instances.
|
||||||
|
* id must be 0 if object instance is a specimen.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function initAsSpecimen()
|
||||||
|
{
|
||||||
|
$this->specimen = 1;
|
||||||
|
$this->ref = 'CBA';
|
||||||
|
$this->label = 'CustomerCorp Bank account';
|
||||||
|
$this->bank = 'CustomerCorp Bank';
|
||||||
|
$this->courant = Account::TYPE_CURRENT;
|
||||||
|
$this->clos = Account::STATUS_OPEN;
|
||||||
|
$this->code_banque = '123';
|
||||||
|
$this->code_guichet = '456';
|
||||||
|
$this->number = 'CUST12345';
|
||||||
|
$this->cle_rib = 50;
|
||||||
|
$this->bic = 'CC12';
|
||||||
|
$this->iban = 'FR999999999';
|
||||||
|
$this->domiciliation = 'Bank address of customer corp';
|
||||||
|
$this->proprio = 'Owner';
|
||||||
|
$this->owner_address = 'Owner address';
|
||||||
|
$this->country_id = 1;
|
||||||
|
|
||||||
|
$this->rum = 'UMR-CU1212-0007-5-1475405262';
|
||||||
|
$this->frstrecur = 'FRST';
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -50,6 +50,7 @@ $ribid=GETPOST("ribid","int");
|
|||||||
$action=GETPOST("action");
|
$action=GETPOST("action");
|
||||||
|
|
||||||
$account = new CompanyBankAccount($db);
|
$account = new CompanyBankAccount($db);
|
||||||
|
$prelevement = new BonPrelevement($db);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -106,7 +107,12 @@ if ($action == 'update' && ! $_POST["cancel"])
|
|||||||
$account->proprio = GETPOST('proprio','alpha');
|
$account->proprio = GETPOST('proprio','alpha');
|
||||||
$account->owner_address = GETPOST('owner_address','alpha');
|
$account->owner_address = GETPOST('owner_address','alpha');
|
||||||
$account->frstrecur = GETPOST('frstrecur','alpha');
|
$account->frstrecur = GETPOST('frstrecur','alpha');
|
||||||
|
if (empty($account->rum))
|
||||||
|
{
|
||||||
|
$account->rum = $prelevement->buildRumNumber($object->code_client, $account->datec, $account->id);
|
||||||
|
$account->date_rum = dol_now();
|
||||||
|
}
|
||||||
|
|
||||||
$result = $account->update($user);
|
$result = $account->update($user);
|
||||||
if (! $result)
|
if (! $result)
|
||||||
{
|
{
|
||||||
@ -185,7 +191,14 @@ if ($action == 'add' && ! $_POST["cancel"])
|
|||||||
|
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
$result = $account->update($user); // TODO Use create and include update into create method
|
if (empty($account->rum))
|
||||||
|
{
|
||||||
|
$account->rum = $prelevement->buildRumNumber($object->code_client, $account->datec, $account->id);
|
||||||
|
$account->date_rum = dol_now();
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $account->update($user); // This will set the UMR number.
|
||||||
|
// TODO Use create and include update into create method
|
||||||
if (! $result)
|
if (! $result)
|
||||||
{
|
{
|
||||||
setEventMessages($account->error, $account->errors, 'errors');
|
setEventMessages($account->error, $account->errors, 'errors');
|
||||||
@ -246,7 +259,6 @@ if ($action == 'confirm_delete' && $_GET['confirm'] == 'yes')
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
$prelevement = new BonPrelevement($db);
|
|
||||||
|
|
||||||
llxHeader();
|
llxHeader();
|
||||||
|
|
||||||
@ -384,7 +396,7 @@ if ($socid && $action != 'edit' && $action != "create")
|
|||||||
print_liste_field_titre($langs->trans("BIC"));
|
print_liste_field_titre($langs->trans("BIC"));
|
||||||
if (! empty($conf->prelevement->enabled))
|
if (! empty($conf->prelevement->enabled))
|
||||||
{
|
{
|
||||||
print '<td>RUM</td>';
|
print '<td>'.$langs->trans("RUM").'</td>';
|
||||||
print '<td>'.$langs->trans("WithdrawMode").'</td>';
|
print '<td>'.$langs->trans("WithdrawMode").'</td>';
|
||||||
}
|
}
|
||||||
print_liste_field_titre($langs->trans("DefaultRIB"), '', '', '', '', 'align="center"');
|
print_liste_field_titre($langs->trans("DefaultRIB"), '', '', '', '', 'align="center"');
|
||||||
@ -412,7 +424,8 @@ if ($socid && $action != 'edit' && $action != "create")
|
|||||||
if (! empty($conf->prelevement->enabled))
|
if (! empty($conf->prelevement->enabled))
|
||||||
{
|
{
|
||||||
// RUM
|
// RUM
|
||||||
print '<td>'.$prelevement->buildRumNumber($object->code_client, $rib->datec, $rib->id).'</td>';
|
//print '<td>'.$prelevement->buildRumNumber($object->code_client, $rib->datec, $rib->id).'</td>';
|
||||||
|
print '<td>'.$rib->rum.'</td>';
|
||||||
|
|
||||||
// FRSTRECUR
|
// FRSTRECUR
|
||||||
print '<td>'.$rib->frstrecur.'</td>';
|
print '<td>'.$rib->frstrecur.'</td>';
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user