NEW : accounting export LD compta version 10

This commit is contained in:
florian HENRY 2020-03-12 11:55:26 +01:00
parent a6f8608ffd
commit 310bdf6062
2 changed files with 269 additions and 1 deletions

View File

@ -54,6 +54,7 @@ class AccountancyExport
public static $EXPORT_TYPE_QUADRATUS = 60;
public static $EXPORT_TYPE_OPENCONCERTO = 100;
public static $EXPORT_TYPE_LDCOMPTA = 110;
public static $EXPORT_TYPE_LDCOMPTA10 = 120;
public static $EXPORT_TYPE_FEC = 1000;
@ -110,8 +111,9 @@ class AccountancyExport
self::$EXPORT_TYPE_OPENCONCERTO => $langs->trans('Modelcsv_openconcerto'),
self::$EXPORT_TYPE_SAGE50_SWISS => $langs->trans('Modelcsv_Sage50_Swiss'),
self::$EXPORT_TYPE_LDCOMPTA => $langs->trans('Modelcsv_LDCompta'),
self::$EXPORT_TYPE_LDCOMPTA10 => $langs->trans('Modelcsv_LDCompta10'),
self::$EXPORT_TYPE_FEC => $langs->trans('Modelcsv_FEC'),
self::$EXPORT_TYPE_CHARLEMAGNE => $langs->trans('Modelcsv_charlemagne'),
self::$EXPORT_TYPE_CHARLEMAGNE => $langs->trans('Modelcsv_charlemagne'),
);
ksort($listofexporttypes, SORT_NUMERIC);
@ -140,6 +142,7 @@ class AccountancyExport
self::$EXPORT_TYPE_OPENCONCERTO => 'openconcerto',
self::$EXPORT_TYPE_SAGE50_SWISS => 'sage50ch',
self::$EXPORT_TYPE_LDCOMPTA => 'ldcompta',
self::$EXPORT_TYPE_LDCOMPTA10 => 'ldcompta10',
self::$EXPORT_TYPE_FEC => 'fec',
);
@ -201,6 +204,10 @@ class AccountancyExport
self::$EXPORT_TYPE_LDCOMPTA => array(
'label' => $langs->trans('Modelcsv_LDCompta'),
'ACCOUNTING_EXPORT_FORMAT' => 'csv',
),
self::$EXPORT_TYPE_LDCOMPTA10 => array(
'label' => $langs->trans('Modelcsv_LDCompta10'),
'ACCOUNTING_EXPORT_FORMAT' => 'csv',
),
self::$EXPORT_TYPE_FEC => array(
'label' => $langs->trans('Modelcsv_FEC'),
@ -280,6 +287,9 @@ class AccountancyExport
case self::$EXPORT_TYPE_LDCOMPTA :
$this->exportLDCompta($TData);
break;
case self::$EXPORT_TYPE_LDCOMPTA10 :
$this->exportLDCompta10($TData);
break;
case self::$EXPORT_TYPE_FEC :
$this->exportFEC($TData);
break;
@ -1051,6 +1061,263 @@ class AccountancyExport
}
}
/**
* Export format : LD Compta version 10 & higher
* http://www.ldsysteme.fr/fileadmin/telechargement/np/ldcompta/Documentation/IntCptW10.pdf
*
* @param array $objectLines data
*
* @return void
*/
public function exportLDCompta10($objectLines)
{
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
$separator = ';';
$end_line = "\r\n";
$last_codeinvoice = '';
foreach ($objectLines as $line) {
// TYPE C
if($last_codeinvoice != $line->doc_ref){
//recherche societe en fonction de son code client
$sql = "SELECT code_client, fk_forme_juridique, nom, address, zip, town, fk_pays, phone, siret FROM ".MAIN_DB_PREFIX."societe WHERE code_client = '".$line->thirdparty_code ."'";
$resql = $this->db->query($sql);
if($resql && $this->db->num_rows($resql)>0)
{
$soc = $this->db->fetch_object($resql);
$address = str_replace(array("\t", "\n", "\r"), " ", $soc->address);
$type_enregistrement = 'C';
print $type_enregistrement.$separator;
//NOCL
print $soc->code_client.$separator;
//NMCM
print $separator;
//LIBI
print $separator;
//TITR
print getFormeJuridiqueLabel($soc->fk_forme_juridique).$separator;
//RSSO
print $soc->nom.$separator;
//CAD1
print substr($address, 0, 40).$separator;
//CAD2
print substr($address, 41, 40).$separator;
//CAD3
print substr($address, 82, 40).$separator;
//COPO
print $soc->zip.$separator;
//BUDI
print substr($soc->town, 0, 40).$separator;
//CPAY
print $separator;
//PAYS
print substr(getCountry($soc->fk_pays), 0, 40).$separator;
//NTEL
print $soc->phone.$separator;
//TLEX
print $separator;
//TLPO
print $separator;
//TLCY
print $separator;
//NINT
print $separator;
//COMM
print $separator;
//SIRE
print $soc->siret.$separator;
//RIBP
print $separator;
//DOBQ
print $separator;
//IBBQ
print $separator;
//COBQ
print $separator;
//GUBQ
print $separator;
//CPBQ
print $separator;
//CLBQ
print $separator;
//BIBQ
print $separator;
//MOPM
print $separator;
//DJPM
print $separator;
//DMPM
print $separator;
//REFM
print $separator;
//SLVA
print $separator;
//PLCR
print $separator;
//ECFI
print $separator;
//CREP
print $separator;
//NREP
print $separator;
//TREP
print $separator;
//MREP
print $separator;
//GRRE
print $separator;
//LTTA
print $separator;
//CACT
print $separator;
//CODV
print $separator;
//GRTR
print $separator;
//NOFP
print $separator;
//BQAF
print $separator;
//BONP
print $separator;
//CESC
print $separator;
print $end_line;
}
}
$date_document = dol_print_date($line->doc_date, '%Y%m%d');
$date_creation = dol_print_date($line->date_creation, '%Y%m%d');
$date_lim_reglement = dol_print_date($line->date_lim_reglement, '%Y%m%d');
// TYPE E
$type_enregistrement = 'E'; // For write movement
print $type_enregistrement.$separator;
// JNAL
print substr($line->code_journal, 0, 2).$separator;
// NECR
print $line->id.$separator;
// NPIE
print $line->piece_num.$separator;
// DATP
print $date_document.$separator;
// LIBE
print dol_trunc($line->label_operation,25,'right','UTF-8',1).$separator;
// DATH
print $date_lim_reglement.$separator;
// CNPI
if ($line->doc_type == 'supplier_invoice') {
if ($line->montant < 0) {
$nature_piece = 'AF';
} else {
$nature_piece = 'FF';
}
} elseif ($line->doc_type == 'customer_invoice') {
if ($line->montant < 0) {
$nature_piece = 'AC';
} else {
$nature_piece = 'FC';
}
} else {
$nature_piece = '';
}
print $nature_piece.$separator;
// RACI
// if (! empty($line->subledger_account)) {
// if ($line->doc_type == 'supplier_invoice') {
// $racine_subledger_account = '40';
// } elseif ($line->doc_type == 'customer_invoice') {
// $racine_subledger_account = '41';
// } else {
// $racine_subledger_account = '';
// }
// } else {
$racine_subledger_account = ''; // for records of type E leave this field blank
// }
print $racine_subledger_account . $separator; // deprecated CPTG & CPTA use instead
// MONT
print price(abs($line->montant), 0, '', 1, 2).$separator;
// CODC
print $line->sens.$separator;
// CPTG
print length_accountg($line->numero_compte).$separator;
// DATE
print $date_document.$separator;
// CLET
print $line->lettering_code.$separator;
// DATL
print $line->date_lettering.$separator;
// CPTA
if (!empty($line->subledger_account)) {
print length_accounta($line->subledger_account).$separator;
} else {
print $separator;
}
// CNAT
if ($line->doc_type == 'supplier_invoice' && !empty($line->subledger_account)) {
print 'F'.$separator;
} elseif ($line->doc_type == 'customer_invoice' && !empty($line->subledger_account)) {
print 'C'.$separator;
} else {
print $separator;
}
// SECT
print $separator;
// CTRE
print $separator;
// NORL
print $separator;
// DATV
print $separator;
// REFD
print $line->doc_ref.$separator;
// NECA
print '0'.$separator;
// CSEC
print $separator;
// CAFF
print $separator;
// CDES
print $separator;
// QTUE
print '0'.$separator;
// MTDV
print $separator;
// CODV
print '0'.$separator;
// TXDV
print $separator;
// MOPM
print $separator;
// BONP
print $separator;
// BQAF
print $separator;
// ECES
print $separator;
// TXTL
print $separator;
// ECRM
print $separator;
// DATK
print $separator;
// HEUK
print $separator;
print $end_line;
$last_codeinvoice = $line->doc_ref;
}
}
/**
* Export format : Charlemagne
*

View File

@ -313,6 +313,7 @@ Modelcsv_ebp=Export for EBP
Modelcsv_cogilog=Export for Cogilog
Modelcsv_agiris=Export for Agiris
Modelcsv_LDCompta=Export for LD Compta (v9 & higher) (Test)
Modelcsv_LDCompta10=Export for LD Compta (v10 & higher)
Modelcsv_openconcerto=Export for OpenConcerto (Test)
Modelcsv_configurable=Export CSV Configurable
Modelcsv_FEC=Export FEC