Merge pull request #11227 from aspangaro/10.0_intracommreport
NEW module Intracomm report
This commit is contained in:
commit
726fd1b631
@ -164,6 +164,12 @@ source_file = htdocs/langs/en_US/hrm.lang
|
||||
source_lang = en_US
|
||||
type = MOZILLAPROPERTIES
|
||||
|
||||
[dolibarr.intracommreport]
|
||||
file_filter = htdocs/langs/<lang>/intracommreport.lang
|
||||
source_file = htdocs/langs/en_US/intracommreport.lang
|
||||
source_lang = en_US
|
||||
type = MOZILLAPROPERTIES
|
||||
|
||||
[dolibarr.install]
|
||||
file_filter = htdocs/langs/<lang>/install.lang
|
||||
source_file = htdocs/langs/en_US/install.lang
|
||||
|
||||
@ -196,6 +196,7 @@ done >>%{name}.lang
|
||||
%_datadir/dolibarr/htdocs/imports
|
||||
%_datadir/dolibarr/htdocs/includes
|
||||
%_datadir/dolibarr/htdocs/install
|
||||
%_datadir/dolibarr/htdocs/intracommreport
|
||||
%_datadir/dolibarr/htdocs/langs/HOWTO-Translation.txt
|
||||
%_datadir/dolibarr/htdocs/livraison
|
||||
%_datadir/dolibarr/htdocs/loan
|
||||
|
||||
@ -276,6 +276,7 @@ done >>%{name}.lang
|
||||
%_datadir/dolibarr/htdocs/imports
|
||||
%_datadir/dolibarr/htdocs/includes
|
||||
%_datadir/dolibarr/htdocs/install
|
||||
%_datadir/dolibarr/htdocs/intracommreport
|
||||
%_datadir/dolibarr/htdocs/langs/HOWTO-Translation.txt
|
||||
%_datadir/dolibarr/htdocs/livraison
|
||||
%_datadir/dolibarr/htdocs/loan
|
||||
|
||||
@ -193,6 +193,7 @@ done >>%{name}.lang
|
||||
%_datadir/dolibarr/htdocs/imports
|
||||
%_datadir/dolibarr/htdocs/includes
|
||||
%_datadir/dolibarr/htdocs/install
|
||||
%_datadir/dolibarr/htdocs/intracommreport
|
||||
%_datadir/dolibarr/htdocs/langs/HOWTO-Translation.txt
|
||||
%_datadir/dolibarr/htdocs/livraison
|
||||
%_datadir/dolibarr/htdocs/loan
|
||||
|
||||
@ -204,6 +204,7 @@ done >>%{name}.lang
|
||||
%_datadir/dolibarr/htdocs/imports
|
||||
%_datadir/dolibarr/htdocs/includes
|
||||
%_datadir/dolibarr/htdocs/install
|
||||
%_datadir/dolibarr/htdocs/intracommreport
|
||||
%_datadir/dolibarr/htdocs/langs/HOWTO-Translation.txt
|
||||
%_datadir/dolibarr/htdocs/livraison
|
||||
%_datadir/dolibarr/htdocs/loan
|
||||
|
||||
BIN
dev/resources/iso-normes/Intracommreport-ManuelDebXml.pdf
Normal file
BIN
dev/resources/iso-normes/Intracommreport-ManuelDebXml.pdf
Normal file
Binary file not shown.
BIN
dev/resources/iso-normes/Intracommreport-ManuelDesXML.pdf
Normal file
BIN
dev/resources/iso-normes/Intracommreport-ManuelDesXML.pdf
Normal file
Binary file not shown.
@ -8,7 +8,7 @@
|
||||
* Copyright (C) 2011 Remy Younes <ryounes@gmail.com>
|
||||
* Copyright (C) 2012-2015 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@ltairis.fr>
|
||||
* Copyright (C) 2011-2016 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||
* Copyright (C) 2011-2019 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||
* Copyright (C) 2015 Ferran Marcet <fmarcet@2byte.es>
|
||||
* Copyright (C) 2016 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
||||
* Copyright (C) 2019 Frédéric France <frederic.france@netlogic.fr>
|
||||
@ -91,7 +91,7 @@ $hookmanager->initHooks(array('admin'));
|
||||
// Put here declaration of dictionaries properties
|
||||
|
||||
// Sort order to show dictionary (0 is space). All other dictionaries (added by modules) will be at end of this.
|
||||
$taborder = array(9, 0, 4, 3, 2, 0, 1, 8, 19, 16, 39, 27, 40, 38, 0, 5, 11, 0, 32, 33, 34, 0, 6, 0, 29, 0, 7, 24, 28, 17, 35, 36, 0, 10, 23, 12, 13, 0, 14, 0, 22, 20, 18, 21, 0, 15, 30, 0, 37, 0, 25, 0);
|
||||
$taborder = array(9, 0, 4, 3, 2, 0, 1, 8, 19, 16, 39, 27, 40, 38, 0, 5, 11, 0, 32, 33, 34, 0, 6, 0, 29, 0, 7, 24, 28, 17, 35, 36, 0, 10, 23, 12, 13, 0, 14, 0, 22, 20, 18, 21, 41, 0, 15, 30, 0, 37, 0, 25, 0);
|
||||
|
||||
// Name of SQL tables of dictionaries
|
||||
$tabname = array();
|
||||
@ -135,6 +135,7 @@ $tabname[37] = MAIN_DB_PREFIX."c_units";
|
||||
$tabname[38] = MAIN_DB_PREFIX."c_socialnetworks";
|
||||
$tabname[39] = MAIN_DB_PREFIX."c_prospectcontactlevel";
|
||||
$tabname[40] = MAIN_DB_PREFIX."c_stcommcontact";
|
||||
$tabname[41] = MAIN_DB_PREFIX."c_transport_mode";
|
||||
|
||||
// Dictionary labels
|
||||
$tablib = array();
|
||||
@ -178,6 +179,7 @@ $tablib[37] = "DictionaryMeasuringUnits";
|
||||
$tablib[38] = "DictionarySocialNetworks";
|
||||
$tablib[39] = "DictionaryProspectContactLevel";
|
||||
$tablib[40] = "DictionaryProspectContactStatus";
|
||||
$tablib[41] = "DictionaryTransportMode";
|
||||
|
||||
// Requests to extract data
|
||||
$tabsql = array();
|
||||
@ -221,6 +223,7 @@ $tabsql[37] = "SELECT r.rowid, r.code, r.label, r.short_label, r.unit_type, r.sc
|
||||
$tabsql[38] = "SELECT rowid, entity, code, label, url, icon, active FROM ".MAIN_DB_PREFIX."c_socialnetworks";
|
||||
$tabsql[39] = "SELECT code, label as libelle, sortorder, active FROM ".MAIN_DB_PREFIX."c_prospectcontactlevel";
|
||||
$tabsql[40] = "SELECT id as rowid, code, libelle, picto, active FROM ".MAIN_DB_PREFIX."c_stcommcontact";
|
||||
$tabsql[41] = "SELECT rowid as rowid, code, label, active FROM ".MAIN_DB_PREFIX."c_transport_mode";
|
||||
|
||||
// Criteria to sort dictionaries
|
||||
$tabsqlsort = array();
|
||||
@ -264,6 +267,7 @@ $tabsqlsort[37] = "r.unit_type ASC, r.scale ASC, r.code ASC";
|
||||
$tabsqlsort[38] = "rowid, code ASC";
|
||||
$tabsqlsort[39] = "sortorder ASC";
|
||||
$tabsqlsort[40] = "code ASC";
|
||||
$tabsqlsort[41] = "code ASC";
|
||||
|
||||
// Field names in select result for dictionary display
|
||||
$tabfield = array();
|
||||
@ -307,6 +311,7 @@ $tabfield[37] = "code,label,short_label,unit_type,scale";
|
||||
$tabfield[38] = "code,label,url,icon,entity";
|
||||
$tabfield[39] = "code,libelle,sortorder";
|
||||
$tabfield[40] = "code,libelle,picto";
|
||||
$tabfield[41] = "code,label";
|
||||
|
||||
// Edit field names for editing a record
|
||||
$tabfieldvalue = array();
|
||||
@ -350,6 +355,7 @@ $tabfieldvalue[37] = "code,label,short_label,unit_type,scale";
|
||||
$tabfieldvalue[38] = "code,label,url,icon";
|
||||
$tabfieldvalue[39] = "code,libelle,sortorder";
|
||||
$tabfieldvalue[40] = "code,libelle,picto";
|
||||
$tabfieldvalue[41] = "code,label";
|
||||
|
||||
// Field names in the table for inserting a record
|
||||
$tabfieldinsert = array();
|
||||
@ -394,6 +400,7 @@ $tabfieldinsert[37] = "code,label,short_label,unit_type,scale";
|
||||
$tabfieldinsert[38] = "code,label,url,icon,entity";
|
||||
$tabfieldinsert[39] = "code,label,sortorder";
|
||||
$tabfieldinsert[40] = "code,libelle,picto";
|
||||
$tabfieldinsert[41] = "code,label";
|
||||
|
||||
// Rowid name of field depending if field is autoincrement on or off..
|
||||
// Use "" if id field is "rowid" and has autoincrement on
|
||||
@ -439,6 +446,7 @@ $tabrowid[37] = "";
|
||||
$tabrowid[38] = "";
|
||||
$tabrowid[39] = "code";
|
||||
$tabrowid[40] = "id";
|
||||
$tabrowid[41] = "";
|
||||
|
||||
// Condition to show dictionary in setup page
|
||||
$tabcond = array();
|
||||
@ -482,6 +490,7 @@ $tabcond[37] = !empty($conf->product->enabled);
|
||||
$tabcond[38] = !empty($conf->socialnetworks->enabled);
|
||||
$tabcond[39] = (!empty($conf->societe->enabled) && empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && !empty($conf->global->THIRDPARTY_ENABLE_PROSPECTION_ON_ALTERNATIVE_ADRESSES));
|
||||
$tabcond[40] = (!empty($conf->societe->enabled) && !empty($conf->global->THIRDPARTY_ENABLE_PROSPECTION_ON_ALTERNATIVE_ADRESSES));
|
||||
$tabcond[41] = !empty($conf->intracommreport->enabled);
|
||||
|
||||
// List of help for fields
|
||||
$tabhelp = array();
|
||||
@ -525,6 +534,7 @@ $tabhelp[37] = array('code'=>$langs->trans("EnterAnyCode"), 'unit_type' => $lang
|
||||
$tabhelp[38] = array('code'=>$langs->trans("EnterAnyCode"), 'url' => $langs->trans('UrlSocialNetworksDesc'), 'icon' => $langs->trans('FafaIconSocialNetworksDesc'));
|
||||
$tabhelp[39] = array('code'=>$langs->trans("EnterAnyCode"));
|
||||
$tabhelp[40] = array('code'=>$langs->trans("EnterAnyCode"), 'picto'=>$langs->trans("PictoHelp"));
|
||||
$tabhelp[41] = array('code'=>$langs->trans("EnterAnyCode"));
|
||||
|
||||
// List of check for fields (NOT USED YET)
|
||||
$tabfieldcheck = array();
|
||||
@ -568,6 +578,7 @@ $tabfieldcheck[37] = array();
|
||||
$tabfieldcheck[38] = array();
|
||||
$tabfieldcheck[39] = array();
|
||||
$tabfieldcheck[40] = array();
|
||||
$tabfieldcheck[41] = array();
|
||||
|
||||
// Complete all arrays with entries found into modules
|
||||
complete_dictionary_with_modules($taborder, $tabname, $tablib, $tabsql, $tabsqlsort, $tabfield, $tabfieldvalue, $tabfieldinsert, $tabrowid, $tabcond, $tabhelp, $tabfieldcheck);
|
||||
|
||||
@ -487,6 +487,27 @@ if ($object->id > 0)
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
if (! empty($conf->intracommreport->enabled))
|
||||
{
|
||||
// Transport mode by default
|
||||
print '<tr><td class="nowrap">';
|
||||
print '<table width="100%" class="nobordernopadding"><tr><td class="nowrap">';
|
||||
print $langs->trans('IntracommReportTransportMode');
|
||||
print '<td>';
|
||||
if (($action != 'edittransportmode') && $user->rights->societe->creer) print '<td class="right"><a href="'.$_SERVER["PHP_SELF"].'?action=edittransportmode&socid='.$object->id.'">'.img_edit($langs->trans('SetMode'), 1).'</a></td>';
|
||||
print '</tr></table>';
|
||||
print '</td><td>';
|
||||
if ($action == 'edittransportmode')
|
||||
{
|
||||
$form->formSelectTransportMode($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->fk_transport_mode, 'fk_transport_mode', 1);
|
||||
}
|
||||
else {
|
||||
$form->formSelectTransportMode($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->fk_transport_mode, 'none');
|
||||
}
|
||||
print "</td>";
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
// Categories
|
||||
if (!empty($conf->categorie->enabled) && !empty($user->rights->categorie->lire)) {
|
||||
$langs->load("categories");
|
||||
|
||||
88
htdocs/core/boxes/intracommreport_box.php
Normal file
88
htdocs/core/boxes/intracommreport_box.php
Normal file
@ -0,0 +1,88 @@
|
||||
<?php
|
||||
/* <one line to give the program's name and a brief idea of what it does.>
|
||||
* Copyright (C) <year> <name of author>
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file core/boxes/mybox.php
|
||||
* \ingroup intracommreport
|
||||
* \brief This file is a sample box definition file
|
||||
* Put some comments here
|
||||
*/
|
||||
include_once DOL_DOCUMENT_ROOT . "/core/boxes/modules_boxes.php";
|
||||
|
||||
/**
|
||||
* Class to manage the box
|
||||
*/
|
||||
class intracommreportbox extends ModeleBoxes
|
||||
{
|
||||
|
||||
public $boxcode = "mybox";
|
||||
public $boximg = "intracommreport";
|
||||
public $boxlabel;
|
||||
public $depends = array("intracommreport");
|
||||
public $db;
|
||||
public $param;
|
||||
public $info_box_head = array();
|
||||
public $info_box_contents = array();
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
global $langs;
|
||||
$langs->load("boxes");
|
||||
|
||||
$this->boxlabel = $langs->transnoentitiesnoconv("MyBox");
|
||||
}
|
||||
|
||||
/**
|
||||
* Load data into info_box_contents array to show array later.
|
||||
*
|
||||
* @param int $max Maximum number of records to load
|
||||
* @return void
|
||||
*/
|
||||
public function loadBox($max = 5)
|
||||
{
|
||||
global $conf, $user, $langs, $db;
|
||||
|
||||
$this->max = $max;
|
||||
|
||||
//include_once DOL_DOCUMENT_ROOT . "/intracommreport/class/intracommreport.class.php";
|
||||
|
||||
$text = $langs->trans("MyBoxDescription", $max);
|
||||
$this->info_box_head = array(
|
||||
'text' => $text,
|
||||
'limit' => dol_strlen($text)
|
||||
);
|
||||
|
||||
$this->info_box_contents[0][0] = array('td' => 'align="left"',
|
||||
'text' => $langs->trans("MyBoxContent"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to show box
|
||||
*
|
||||
* @param array $head Array with properties of box title
|
||||
* @param array $contents Array with properties of box lines
|
||||
* @return void
|
||||
*/
|
||||
public function showBox($head = null, $contents = null)
|
||||
{
|
||||
parent::showBox($this->info_box_head, $this->info_box_contents);
|
||||
}
|
||||
}
|
||||
@ -296,6 +296,12 @@ abstract class CommonObject
|
||||
*/
|
||||
public $cond_reglement_id;
|
||||
|
||||
/**
|
||||
* @var int Transport mode ID (For module intracomm report)
|
||||
* @see setTransportMode()
|
||||
*/
|
||||
public $transport_mode_id;
|
||||
|
||||
/**
|
||||
* @var int Payment terms ID
|
||||
* @deprecated Kept for compatibility
|
||||
@ -1999,7 +2005,7 @@ abstract class CommonObject
|
||||
if (get_class($this) == 'Fournisseur') $this->mode_reglement_supplier_id = $id;
|
||||
return 1;
|
||||
} else {
|
||||
dol_syslog(get_class($this).'::setPaymentMethods Erreur '.$sql.' - '.$this->db->error());
|
||||
dol_syslog(get_class($this).'::setPaymentMethods Error '.$sql.' - '.$this->db->error());
|
||||
$this->error = $this->db->error();
|
||||
return -1;
|
||||
}
|
||||
@ -2036,7 +2042,7 @@ abstract class CommonObject
|
||||
|
||||
return 1;
|
||||
} else {
|
||||
dol_syslog(get_class($this).'::setMulticurrencyCode Erreur '.$sql.' - '.$this->db->error());
|
||||
dol_syslog(get_class($this).'::setMulticurrencyCode Error '.$sql.' - '.$this->db->error());
|
||||
$this->error = $this->db->error();
|
||||
return -1;
|
||||
}
|
||||
@ -2140,7 +2146,7 @@ abstract class CommonObject
|
||||
|
||||
return 1;
|
||||
} else {
|
||||
dol_syslog(get_class($this).'::setMulticurrencyRate Erreur '.$sql.' - '.$this->db->error());
|
||||
dol_syslog(get_class($this).'::setMulticurrencyRate Error '.$sql.' - '.$this->db->error());
|
||||
$this->error = $this->db->error();
|
||||
return -1;
|
||||
}
|
||||
@ -2179,7 +2185,7 @@ abstract class CommonObject
|
||||
$this->cond_reglement = $id; // for compatibility
|
||||
return 1;
|
||||
} else {
|
||||
dol_syslog(get_class($this).'::setPaymentTerms Erreur '.$sql.' - '.$this->db->error());
|
||||
dol_syslog(get_class($this).'::setPaymentTerms Error '.$sql.' - '.$this->db->error());
|
||||
$this->error = $this->db->error();
|
||||
return -1;
|
||||
}
|
||||
@ -2190,6 +2196,42 @@ abstract class CommonObject
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the transport mode methods
|
||||
*
|
||||
* @param int $id Id of new payment method
|
||||
* @return int >0 if OK, <0 if KO
|
||||
*/
|
||||
public function setTransportMode($id)
|
||||
{
|
||||
dol_syslog(get_class($this).'::setTransportMode('.$id.')');
|
||||
if ($this->statut >= 0 || $this->element == 'societe')
|
||||
{
|
||||
$fieldname = 'fk_transport_mode';
|
||||
if ($this->element == 'societe') $fieldname = 'transport_mode';
|
||||
if (get_class($this) == 'Fournisseur') $fieldname = 'transport_mode_supplier';
|
||||
|
||||
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
|
||||
$sql .= ' SET '.$fieldname.' = '.(($id > 0 || $id == '0') ? $id : 'NULL');
|
||||
$sql .= ' WHERE rowid='.$this->id;
|
||||
|
||||
if ($this->db->query($sql))
|
||||
{
|
||||
$this->transport_mode_id = $id;
|
||||
// for supplier
|
||||
if (get_class($this) == 'Fournisseur') $this->transport_mode_supplier_id = $id;
|
||||
return 1;
|
||||
} else {
|
||||
dol_syslog(get_class($this).'::setTransportMode Error '.$sql.' - '.$this->db->error());
|
||||
$this->error=$this->db->error();
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
dol_syslog(get_class($this).'::setTransportMode, status of the object is incompatible');
|
||||
$this->error='Status of the object is incompatible '.$this->statut;
|
||||
return -2;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the retained warranty payments terms
|
||||
@ -2213,7 +2255,7 @@ abstract class CommonObject
|
||||
$this->retained_warranty_fk_cond_reglement = $id;
|
||||
return 1;
|
||||
} else {
|
||||
dol_syslog(get_class($this).'::setRetainedWarrantyPaymentTerms Erreur '.$sql.' - '.$this->db->error());
|
||||
dol_syslog(get_class($this).'::setRetainedWarrantyPaymentTerms Error '.$sql.' - '.$this->db->error());
|
||||
$this->error = $this->db->error();
|
||||
return -1;
|
||||
}
|
||||
@ -2245,7 +2287,7 @@ abstract class CommonObject
|
||||
return 1;
|
||||
} else {
|
||||
$this->error = $this->db->error();
|
||||
dol_syslog(get_class($this).'::setDeliveryAddress Erreur '.$sql.' - '.$this->error);
|
||||
dol_syslog(get_class($this).'::setDeliveryAddress Error '.$sql.' - '.$this->error);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@ -8286,7 +8328,7 @@ abstract class CommonObject
|
||||
* @param int $fromId Id object source
|
||||
* @param int $toId Id object cible
|
||||
* @param string $type Type of category ('product', ...)
|
||||
* @return int < 0 si erreur, > 0 si ok
|
||||
* @return int < 0 if error, > 0 if ok
|
||||
*/
|
||||
public function cloneCategories($fromId, $toId, $type = '')
|
||||
{
|
||||
|
||||
@ -71,6 +71,7 @@ class Form
|
||||
// Cache arrays
|
||||
public $cache_types_paiements = array();
|
||||
public $cache_conditions_paiements = array();
|
||||
public $cache_transport_mode = array();
|
||||
public $cache_availability = array();
|
||||
public $cache_demand_reason = array();
|
||||
public $cache_types_fees = array();
|
||||
@ -3548,6 +3549,107 @@ class Form
|
||||
return $return;
|
||||
}
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||
/**
|
||||
* Load in cache list of transport mode
|
||||
*
|
||||
* @return int Nb of lines loaded, <0 if KO
|
||||
*/
|
||||
public function load_cache_transport_mode()
|
||||
{
|
||||
// phpcs:enable
|
||||
global $langs;
|
||||
|
||||
$num=count($this->cache_transport_mode);
|
||||
if ($num > 0) return $num; // Cache already loaded
|
||||
|
||||
dol_syslog(__METHOD__, LOG_DEBUG);
|
||||
|
||||
$this->cache_transport_mode = array();
|
||||
|
||||
$sql = "SELECT rowid, code, label, active";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."c_transport_mode";
|
||||
$sql.= " WHERE entity IN (".getEntity('c_transport_mode').")";
|
||||
//if ($active >= 0) $sql.= " AND active = ".$active;
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$num = $this->db->num_rows($resql);
|
||||
$i = 0;
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
|
||||
// If traduction exist, we use it else we take the default label
|
||||
$label=($langs->transnoentitiesnoconv("PaymentTypeShort".$obj->code)!=("PaymentTypeShort".$obj->code)?$langs->transnoentitiesnoconv("PaymentTypeShort".$obj->code):($obj->label!='-'?$obj->label:''));
|
||||
$this->cache_transport_mode[$obj->rowid]['rowid'] = $obj->rowid;
|
||||
$this->cache_transport_mode[$obj->rowid]['code'] = $obj->code;
|
||||
$this->cache_transport_mode[$obj->rowid]['label']= $label;
|
||||
$this->cache_transport_mode[$obj->rowid]['active'] = $obj->active;
|
||||
$i++;
|
||||
}
|
||||
|
||||
$this->cache_transport_mode = dol_sort_array($this->cache_transport_mode, 'label', 'asc', 0, 0, 1);
|
||||
|
||||
return $num;
|
||||
}
|
||||
else {
|
||||
dol_print_error($this->db);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return list of transport mode for intracomm report
|
||||
*
|
||||
* @param string $selected Id of the transport mode pre-selected
|
||||
* @param string $htmlname Name of the select field
|
||||
* @param int $format 0=id+label, 1=code+code, 2=code+label, 3=id+code
|
||||
* @param int $empty 1=can be empty, 0 else
|
||||
* @param int $noadmininfo 0=Add admin info, 1=Disable admin info
|
||||
* @param int $maxlength Max length of label
|
||||
* @param int $active Active or not, -1 = all
|
||||
* @param string $morecss Add more CSS on select tag
|
||||
* @return void
|
||||
*/
|
||||
public function selectTransportMode($selected = '', $htmlname = 'transportmode', $format = 0, $empty = 1, $noadmininfo = 0, $maxlength = 0, $active = 1, $morecss = '')
|
||||
{
|
||||
global $langs,$user;
|
||||
|
||||
dol_syslog(__METHOD__." ".$selected.", ".$htmlname.", ".$format, LOG_DEBUG);
|
||||
|
||||
$this->load_cache_transport_mode();
|
||||
|
||||
print '<select id="select'.$htmlname.'" class="flat selectmodetransport'.($morecss?' '.$morecss:'').'" name="'.$htmlname.'">';
|
||||
if ($empty) print '<option value=""> </option>';
|
||||
foreach ($this->cache_transport_mode as $id => $arraytypes)
|
||||
{
|
||||
// If not good status
|
||||
if ($active >= 0 && $arraytypes['active'] != $active) continue;
|
||||
|
||||
// We discard empty line if showempty is on because an empty line has already been output.
|
||||
if ($empty && empty($arraytypes['code'])) continue;
|
||||
|
||||
if ($format == 0) print '<option value="'.$id.'"';
|
||||
elseif ($format == 1) print '<option value="'.$arraytypes['code'].'"';
|
||||
elseif ($format == 2) print '<option value="'.$arraytypes['code'].'"';
|
||||
elseif ($format == 3) print '<option value="'.$id.'"';
|
||||
// If text is selected, we compare with code, else with id
|
||||
if (preg_match('/[a-z]/i', $selected) && $selected == $arraytypes['code']) print ' selected';
|
||||
elseif ($selected == $id) print ' selected';
|
||||
print '>';
|
||||
if ($format == 0) $value=($maxlength?dol_trunc($arraytypes['label'], $maxlength):$arraytypes['label']);
|
||||
elseif ($format == 1) $value=$arraytypes['code'];
|
||||
elseif ($format == 2) $value=($maxlength?dol_trunc($arraytypes['label'], $maxlength):$arraytypes['label']);
|
||||
elseif ($format == 3) $value=$arraytypes['code'];
|
||||
print $value?$value:' ';
|
||||
print '</option>';
|
||||
}
|
||||
print '</select>';
|
||||
if ($user->admin && ! $noadmininfo) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a HTML select list of shipping mode
|
||||
*
|
||||
@ -4581,7 +4683,40 @@ class Form
|
||||
}
|
||||
}
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||
/**
|
||||
* Show form with transport mode
|
||||
*
|
||||
* @param string $page Page
|
||||
* @param int $selected Id mode pre-select
|
||||
* @param string $htmlname Name of select html field
|
||||
* @param int $active Active or not, -1 = all
|
||||
* @param int $addempty 1=Add empty entry
|
||||
* @return void
|
||||
*/
|
||||
public function formSelectTransportMode($page, $selected = '', $htmlname = 'transport_mode_id', $active = 1, $addempty = 0)
|
||||
{
|
||||
global $langs;
|
||||
if ($htmlname != "none")
|
||||
{
|
||||
print '<form method="POST" action="'.$page.'">';
|
||||
print '<input type="hidden" name="action" value="setmode">';
|
||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||
$this->selectTransportMode($selected, $htmlname, 2, $addempty, 0, 0, $active);
|
||||
print '<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">';
|
||||
print '</form>';
|
||||
}
|
||||
else {
|
||||
if ($selected)
|
||||
{
|
||||
$this->load_cache_transport_mode();
|
||||
print $this->cache_transport_mode[$selected]['label'];
|
||||
} else {
|
||||
print " ";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||
/**
|
||||
* Show form with multicurrency code
|
||||
*
|
||||
|
||||
81
htdocs/core/lib/intracommreport.lib.php
Normal file
81
htdocs/core/lib/intracommreport.lib.php
Normal file
@ -0,0 +1,81 @@
|
||||
<?php
|
||||
/* <one line to give the program's name and a brief idea of what it does.>
|
||||
* Copyright (C) 2015 ATM Consulting <support@atm-consulting.fr>
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/core/lib/intracommreport.lib.php
|
||||
* \ingroup Intracomm report
|
||||
* \brief Library of intracomm report functions
|
||||
*/
|
||||
|
||||
/**
|
||||
* Prepare array with list of admin tabs
|
||||
*
|
||||
* @return array Array of tabs to show
|
||||
*/
|
||||
function intracommReportAdminPrepareHead()
|
||||
{
|
||||
global $langs, $conf;
|
||||
|
||||
$langs->load("intracommreport");
|
||||
|
||||
$h = 0;
|
||||
$head = array();
|
||||
|
||||
$head[$h][0] = DOL_URL_ROOT.'/intracommreport/admin/intracommreport.php';
|
||||
$head[$h][1] = $langs->trans("Parameters");
|
||||
$head[$h][2] = 'general';
|
||||
$h++;
|
||||
|
||||
// Show more tabs from modules
|
||||
// Entries must be declared in modules descriptor with line
|
||||
// $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
|
||||
// $this->tabs = array('entity:-tabname); to remove a tab
|
||||
complete_head_from_modules($conf, $langs, null, $head, $h, 'intracommreport_admin');
|
||||
|
||||
complete_head_from_modules($conf, $langs, null, $head, $h, 'intracommreport_admin', 'remove');
|
||||
return $head;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare array with list of tabs
|
||||
*
|
||||
* @return array Array of tabs to show
|
||||
*/
|
||||
function intracommReportPrepareHead()
|
||||
{
|
||||
global $langs, $conf;
|
||||
|
||||
$langs->load("intracommreport");
|
||||
|
||||
$h = 0;
|
||||
$head = array();
|
||||
|
||||
$head[$h][0] = DOL_URL_ROOT.'/intracommreport/card.php?rowid='.$object->id;
|
||||
$head[$h][1] = $langs->trans("Card");
|
||||
$head[$h][2] = 'card';
|
||||
$h++;
|
||||
|
||||
// Show more tabs from modules
|
||||
// Entries must be declared in modules descriptor with line
|
||||
// $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
|
||||
// $this->tabs = array('entity:-tabname); to remove a tab
|
||||
complete_head_from_modules($conf, $langs, null, $head, $h, 'intracommreport');
|
||||
|
||||
complete_head_from_modules($conf, $langs, null, $head, $h, 'intracommreport', 'remove');
|
||||
return $head;
|
||||
}
|
||||
@ -332,9 +332,9 @@ function print_eldy_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout =
|
||||
|
||||
// Accounting
|
||||
$tmpentry = array(
|
||||
'enabled'=>(!empty($conf->comptabilite->enabled) || !empty($conf->accounting->enabled) || !empty($conf->asset->enabled)),
|
||||
'perms'=>(!empty($user->rights->compta->resultat->lire) || !empty($user->rights->accounting->mouvements->lire) || !empty($user->rights->asset->read)),
|
||||
'module'=>'comptabilite|accounting|asset'
|
||||
'enabled'=>(!empty($conf->comptabilite->enabled) || !empty($conf->accounting->enabled) || !empty($conf->asset->enabled) || !empty($conf->intracommreport->enabled)),
|
||||
'perms'=>(!empty($user->rights->compta->resultat->lire) || !empty($user->rights->accounting->mouvements->lire) || !empty($user->rights->asset->read) || !empty($user->rights->intracommreport->read)),
|
||||
'module'=>'comptabilite|accounting|asset|intracommreport'
|
||||
);
|
||||
$menu_arr[] = array(
|
||||
'name' => 'Accounting',
|
||||
@ -353,7 +353,7 @@ function print_eldy_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout =
|
||||
|
||||
'session' => (($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "accountancy") ? 0 : 1),
|
||||
|
||||
'loadLangs' => array("compta", "accountancy", "assets"),
|
||||
'loadLangs' => array("compta", "accountancy", "assets","intracommreport"),
|
||||
'submenus' => array(),
|
||||
);
|
||||
|
||||
@ -1439,6 +1439,17 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM
|
||||
//if ($leftmenu=="ca") $newmenu->add("/compta/journaux/index.php?leftmenu=ca",$langs->trans("Journals"),1,$user->rights->compta->resultat->lire||$user->rights->accounting->comptarapport->lire);
|
||||
}
|
||||
|
||||
// Intracomm report
|
||||
if (! empty($conf->intracommreport->enabled))
|
||||
{
|
||||
$newmenu->add("/intracommreport/list.php?leftmenu=intracommreport", $langs->trans("MenuIntracommReport"), 0, $user->rights->intracommreport->read, '', $mainmenu, 'intracommreport', 1);
|
||||
if ($usemenuhider || empty($leftmenu) || preg_match('/intracommreport/', $leftmenu)) {
|
||||
// DEB / DES
|
||||
$newmenu->add("/intracommreport/card.php?action=create&leftmenu=intracommreport", $langs->trans("MenuIntracommReportNew"), 1, $user->rights->intracommreport->write, '', $mainmenu, 'intracommreport', 1);
|
||||
$newmenu->add("/intracommreport/list.php?leftmenu=intracommreport", $langs->trans("MenuIntracommReportList"), 1, $user->rights->intracommreport->read, '', $mainmenu, 'intracommreport', 1);
|
||||
}
|
||||
}
|
||||
|
||||
// Assets
|
||||
if (!empty($conf->asset->enabled))
|
||||
{
|
||||
|
||||
129
htdocs/core/modules/modIntracommreport.class.php
Normal file
129
htdocs/core/modules/modIntracommreport.class.php
Normal file
@ -0,0 +1,129 @@
|
||||
<?php
|
||||
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2019 Open-DSI <support@open-dsi.fr>
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/core/modules/modIntracommreport.class.php
|
||||
* \ingroup Intracomm report
|
||||
* \brief Module to activate intracomm report module
|
||||
*/
|
||||
include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php';
|
||||
|
||||
|
||||
/**
|
||||
* Description and activation class for module intracommreport
|
||||
*/
|
||||
class modIntracommreport extends DolibarrModules
|
||||
{
|
||||
/**
|
||||
* Constructor. Define names, constants, directories, boxes, permissions
|
||||
*
|
||||
* @param DoliDB $db Database handler
|
||||
*/
|
||||
public function __construct($db)
|
||||
{
|
||||
global $conf, $langs;
|
||||
|
||||
$this->db = $db;
|
||||
$this->numero = 68000;
|
||||
|
||||
$this->family = "financial";
|
||||
$this->module_position = '100';
|
||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||
$this->name = preg_replace('/^mod/i', '', get_class($this));
|
||||
$this->description = "Intracomm report management (Support for French DEB/DES format)";
|
||||
|
||||
// Possible values for version are: 'development', 'experimental', 'dolibarr' or 'dolibarr_deprecated' or version
|
||||
$this->version = 'development';
|
||||
|
||||
$this->const_name = 'MAIN_MODULE_' . strtoupper($this->name);
|
||||
$this->picto = 'intracommreport';
|
||||
|
||||
// Data directories to create when module is enabled
|
||||
$this->dirs = array('/intracommreport/temp');
|
||||
|
||||
// Config pages
|
||||
$this->config_page_url = array("intracommreport.php@intracommreport");
|
||||
|
||||
// Dependencies
|
||||
$this->depends = array("modFacture","modTax"); // List of modules id that must be enabled if this module is enabled
|
||||
$this->requiredby = array(); // List of modules id to disable if this one is disabled
|
||||
$this->conflictwith = array(); // List of modules id this module is in conflict with
|
||||
$this->phpmin = array(5,5); // Minimum version of PHP required by module
|
||||
$this->need_dolibarr_version = array(13,0); // Minimum version of Dolibarr required by module
|
||||
$this->langfiles = array("intracommreport");
|
||||
|
||||
// Constants
|
||||
// List of particular constants to add when module is enabled (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive)
|
||||
// Example: $this->const=array(0=>array('MYMODULE_MYNEWCONST1','chaine','myvalue','This is a constant to add',1),
|
||||
// 1=>array('MYMODULE_MYNEWCONST2','chaine','myvalue','This is another constant to add',0, 'current', 1)
|
||||
// );
|
||||
$this->const = array();
|
||||
|
||||
// Tabs
|
||||
$this->tabs = array();
|
||||
|
||||
// Css
|
||||
$this->module_parts = array();
|
||||
|
||||
// Boxes
|
||||
$this->boxes = array();
|
||||
|
||||
// Dictionaries
|
||||
if (! isset($conf->intracommreport->enabled))
|
||||
{
|
||||
$conf->intracommreport=new stdClass();
|
||||
$conf->intracommreport->enabled=0;
|
||||
}
|
||||
$this->dictionaries=array();
|
||||
|
||||
// Permissions
|
||||
$this->rights = array();
|
||||
$this->rights_class = 'intracommreport';
|
||||
$r = 0;
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 68001;
|
||||
$this->rights[$r][1] = 'Read intracomm report';
|
||||
$this->rights[$r][2] = 'r';
|
||||
$this->rights[$r][3] = 0;
|
||||
$this->rights[$r][4] = 'read';
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 68002;
|
||||
$this->rights[$r][1] = 'Create/modify intracomm report';
|
||||
$this->rights[$r][2] = 'w';
|
||||
$this->rights[$r][3] = 0;
|
||||
$this->rights[$r][4] = 'write';
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 68004;
|
||||
$this->rights[$r][1] = 'Delete intracomm report';
|
||||
$this->rights[$r][2] = 'd';
|
||||
$this->rights[$r][3] = 0;
|
||||
$this->rights[$r][4] = 'delete';
|
||||
|
||||
// Main menu entries
|
||||
$this->menu = array(); // List of menus to add
|
||||
$r=0;
|
||||
|
||||
// Exports
|
||||
$r=1;
|
||||
}
|
||||
}
|
||||
@ -8,8 +8,8 @@
|
||||
* Copyright (C) 2013-2015 Philippe Grand <philippe.grand@atoo-net.com>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
* Copyright (C) 2014-2016 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2016-2017 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||
* Copyright (C) 2018-2019 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2016-2020 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2019 Ferran Marcet <fmarcet@2byte.es>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@ -347,6 +347,12 @@ if (empty($reshook))
|
||||
$result = $object->setBankAccount(GETPOST('fk_account', 'int'));
|
||||
}
|
||||
|
||||
// transport mode
|
||||
if ($action == 'settransportmode' && $user->rights->fournisseur->facture->creer)
|
||||
{
|
||||
$result=$object->setTransportMode(GETPOST('transport_mode_id', 'int'));
|
||||
}
|
||||
|
||||
// Set label
|
||||
elseif ($action == 'setlabel' && $usercancreate)
|
||||
{
|
||||
@ -660,7 +666,8 @@ if (empty($reshook))
|
||||
$object->fk_incoterms = GETPOST('incoterm_id', 'int');
|
||||
$object->location_incoterms = GETPOST('location_incoterms', 'alpha');
|
||||
$object->multicurrency_code = GETPOST('multicurrency_code', 'alpha');
|
||||
$object->multicurrency_tx = GETPOST('originmulticurrency_tx', 'int');
|
||||
$object->multicurrency_tx = GETPOST('originmulticurrency_tx', 'int');
|
||||
$object->transport_mode_id = GETPOST('transport_mode_id', 'int');
|
||||
|
||||
// Proprietes particulieres a facture de remplacement
|
||||
$object->fk_facture_source = GETPOST('fac_replacement');
|
||||
@ -725,7 +732,8 @@ if (empty($reshook))
|
||||
$object->fk_incoterms = GETPOST('incoterm_id', 'int');
|
||||
$object->location_incoterms = GETPOST('location_incoterms', 'alpha');
|
||||
$object->multicurrency_code = GETPOST('multicurrency_code', 'alpha');
|
||||
$object->multicurrency_tx = GETPOST('originmulticurrency_tx', 'int');
|
||||
$object->multicurrency_tx = GETPOST('originmulticurrency_tx', 'int');
|
||||
$object->transport_mode_id = GETPOST('transport_mode_id', 'int');
|
||||
|
||||
// Proprietes particulieres a facture avoir
|
||||
$object->fk_facture_source = $sourceinvoice > 0 ? $sourceinvoice : '';
|
||||
@ -838,6 +846,7 @@ if (empty($reshook))
|
||||
$object->location_incoterms = GETPOST('location_incoterms', 'alpha');
|
||||
$object->multicurrency_code = GETPOST('multicurrency_code', 'alpha');
|
||||
$object->multicurrency_tx = GETPOST('originmulticurrency_tx', 'int');
|
||||
$object->transport_mode_id = GETPOST('transport_mode_id');
|
||||
|
||||
// Auto calculation of date due if not filled by user
|
||||
if (empty($object->date_echeance)) $object->date_echeance = $object->calculate_date_lim_reglement();
|
||||
@ -1687,6 +1696,7 @@ if ($action == 'create')
|
||||
$remise_percent = (!empty($objectsrc->remise_percent) ? $objectsrc->remise_percent : (!empty($soc->remise_supplier_percent) ? $soc->remise_supplier_percent : 0));
|
||||
$remise_absolue = (!empty($objectsrc->remise_absolue) ? $objectsrc->remise_absolue : (!empty($soc->remise_absolue) ? $soc->remise_absolue : 0));
|
||||
$dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE) ?-1 : '';
|
||||
$transport_mode_id = (!empty($objectsrc->transport_mode_id) ? $objectsrc->transport_mode_id : (!empty($soc->transport_mode_id) ? $soc->transport_mode_id : 0));
|
||||
|
||||
if (!empty($conf->multicurrency->enabled))
|
||||
{
|
||||
@ -1705,6 +1715,7 @@ if ($action == 'create')
|
||||
} else {
|
||||
$cond_reglement_id = $societe->cond_reglement_supplier_id;
|
||||
$mode_reglement_id = $societe->mode_reglement_supplier_id;
|
||||
$transport_mode_id = $societe->transport_mode_supplier_id;
|
||||
$fk_account = $societe->fk_account;
|
||||
$datetmp = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
||||
$dateinvoice = ($datetmp == '' ? (empty($conf->global->MAIN_AUTOFILL_DATE) ?-1 : '') : $datetmp);
|
||||
@ -2053,6 +2064,15 @@ if ($action == 'create')
|
||||
print '</td></tr>';
|
||||
}
|
||||
|
||||
// Intracomm report
|
||||
if (!empty($conf->intracommreport->enabled))
|
||||
{
|
||||
$langs->loadLangs(array("intracommreport"));
|
||||
print '<tr><td>' . $langs->trans('IntracommReportTransportMode') . '</td><td>';
|
||||
$form->selectModeTransport(isset($_POST['transport_mode_id']) ? $_POST['transport_mode_id'] : $transport_mode_id, 'transport_mode_id');
|
||||
print '</td></tr>';
|
||||
}
|
||||
|
||||
// Public note
|
||||
print '<tr><td>'.$langs->trans('NotePublic').'</td>';
|
||||
print '<td>';
|
||||
@ -2109,7 +2129,7 @@ if ($action == 'create')
|
||||
}
|
||||
}
|
||||
|
||||
echo '</td></tr>';
|
||||
print '</td></tr>';
|
||||
print '<tr><td>'.$langs->trans('AmountHT').'</td><td>'.price($objectsrc->total_ht).'</td></tr>';
|
||||
print '<tr><td>'.$langs->trans('AmountVAT').'</td><td>'.price($objectsrc->total_tva)."</td></tr>";
|
||||
if ($mysoc->localtax1_assuj == "1" || $object->total_localtax1 != 0) //Localtax1
|
||||
@ -2632,6 +2652,26 @@ if ($action == 'create')
|
||||
print '</td></tr>';
|
||||
}
|
||||
|
||||
// Intracomm report
|
||||
$langs->loadLangs(array("intracommreport"));
|
||||
print '<tr><td class="nowrap">';
|
||||
print '<table width="100%" class="nobordernopadding"><tr><td class="nowrap">';
|
||||
print $langs->trans('IntracommReportTransportMode');
|
||||
print '</td>';
|
||||
if ($action != 'editmode' && $user->rights->fournisseur->facture->creer) {
|
||||
print '<td class="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editmode&id='.$object->id.'">'.img_edit($langs->trans('SetMode'), 1).'</a></td>';
|
||||
}
|
||||
print '</tr></table>';
|
||||
print '</td><td colspan="2">';
|
||||
if ($action == 'editmode')
|
||||
{
|
||||
$form->formTransportMode($_SERVER['PHP_SELF'].'?id='.$object->id, $object->transport_mode_id, 'transport_mode_id', 1, 1);
|
||||
}
|
||||
else {
|
||||
$form->formTransportMode($_SERVER['PHP_SELF'].'?id='.$object->id, $object->transport_mode_id, 'none');
|
||||
}
|
||||
print '</td></tr>';
|
||||
|
||||
// Other attributes
|
||||
$cols = 2;
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php';
|
||||
|
||||
31
htdocs/install/mysql/data/llx_c_transport_mode.sql
Normal file
31
htdocs/install/mysql/data/llx_c_transport_mode.sql
Normal file
@ -0,0 +1,31 @@
|
||||
-- Copyright (C) 2019-2020 Open-DSI <support@open-dsi.fr>
|
||||
--
|
||||
-- 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/>.
|
||||
--
|
||||
--
|
||||
|
||||
--
|
||||
-- Ne pas placer de commentaire en fin de ligne, ce fichier est parsé lors
|
||||
-- de l'install et tous les sigles '--' sont supprimés.
|
||||
--
|
||||
|
||||
|
||||
INSERT INTO llx_c_transport_mode (code, label, active) VALUES ('MAR', 'Transport maritime (y compris camions ou wagons sur bateau)', 1);
|
||||
INSERT INTO llx_c_transport_mode (code, label, active) VALUES ('TRA', 'Transport par chemin de fer (y compris camions sur wagon)', 1);
|
||||
INSERT INTO llx_c_transport_mode (code, label, active) VALUES ('ROU', 'Transport par route', 1);
|
||||
INSERT INTO llx_c_transport_mode (code, label, active) VALUES ('AIR', 'Transport par air', 1);
|
||||
INSERT INTO llx_c_transport_mode (code, label, active) VALUES ('POS', 'Envois postaux', 1);
|
||||
INSERT INTO llx_c_transport_mode (code, label, active) VALUES ('OLE', 'Installations de transport fixe (oléoduc)', 1);
|
||||
INSERT INTO llx_c_transport_mode (code, label, active) VALUES ('NAV', 'Transport par navigation intérieure', 1);
|
||||
INSERT INTO llx_c_transport_mode (code, label, active) VALUES ('PRO', 'Propulsion propre', 1);
|
||||
@ -103,10 +103,47 @@ ALTER TABLE llx_user DROP COLUMN whatsapp;
|
||||
ALTER TABLE llx_user ADD COLUMN datestartvalidity datetime;
|
||||
ALTER TABLE llx_user ADD COLUMN dateendvalidity datetime;
|
||||
|
||||
-- Intracomm Report
|
||||
CREATE TABLE llx_c_transport_mode (
|
||||
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||
entity integer DEFAULT 1 NOT NULL, -- multi company id
|
||||
code varchar(3) NOT NULL,
|
||||
label varchar(255) NOT NULL,
|
||||
active tinyint DEFAULT 1 NOT NULL
|
||||
) ENGINE=innodb;
|
||||
|
||||
INSERT INTO llx_c_transport_mode (code, label, active) VALUES ('MAR', 'Transport maritime (y compris camions ou wagons sur bateau)', 1);
|
||||
INSERT INTO llx_c_transport_mode (code, label, active) VALUES ('TRA', 'Transport par chemin de fer (y compris camions sur wagon)', 1);
|
||||
INSERT INTO llx_c_transport_mode (code, label, active) VALUES ('ROU', 'Transport par route', 1);
|
||||
INSERT INTO llx_c_transport_mode (code, label, active) VALUES ('AIR', 'Transport par air', 1);
|
||||
INSERT INTO llx_c_transport_mode (code, label, active) VALUES ('POS', 'Envois postaux', 1);
|
||||
INSERT INTO llx_c_transport_mode (code, label, active) VALUES ('OLE', 'Installations de transport fixe (oléoduc)', 1);
|
||||
INSERT INTO llx_c_transport_mode (code, label, active) VALUES ('NAV', 'Transport par navigation intérieure', 1);
|
||||
INSERT INTO llx_c_transport_mode (code, label, active) VALUES ('PRO', 'Propulsion propre', 1);
|
||||
|
||||
ALTER TABLE llx_facture ADD COLUMN fk_transport_mode integer after location_incoterms;
|
||||
ALTER TABLE llx_facture_fourn ADD COLUMN fk_transport_mode integer after location_incoterms;
|
||||
|
||||
ALTER TABLE llx_societe ADD COLUMN transport_mode tinyint after cond_reglement;
|
||||
ALTER TABLE llx_societe ADD COLUMN transport_mode_supplier tinyint after cond_reglement_supplier;
|
||||
|
||||
CREATE TABLE llx_intracommreport
|
||||
(
|
||||
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
ref varchar(30) NOT NULL, -- report reference number
|
||||
entity integer DEFAULT 1 NOT NULL, -- multi company id
|
||||
type_declaration varchar(32),
|
||||
period varchar(32),
|
||||
mode varchar(32),
|
||||
content_xml text,
|
||||
type_export varchar(10),
|
||||
datec datetime,
|
||||
tms timestamp
|
||||
)ENGINE=innodb;
|
||||
|
||||
ALTER TABLE llx_c_incoterms ADD COLUMN label varchar(100) NULL;
|
||||
|
||||
|
||||
|
||||
CREATE TABLE llx_recruitment_recruitmentjobposition(
|
||||
rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL,
|
||||
ref varchar(128) DEFAULT '(PROV)' NOT NULL,
|
||||
@ -275,6 +312,7 @@ ALTER TABLE llx_recruitment_recruitmentcandidature ADD UNIQUE INDEX uk_recruitme
|
||||
|
||||
ALTER TABLE llx_product MODIFY COLUMN seuil_stock_alerte float;
|
||||
ALTER TABLE llx_product MODIFY COLUMN desiredstock float;
|
||||
|
||||
ALTER TABLE llx_product_warehouse_properties MODIFY COLUMN seuil_stock_alerte float;
|
||||
ALTER TABLE llx_product_warehouse_properties MODIFY COLUMN desiredstock float;
|
||||
|
||||
|
||||
19
htdocs/install/mysql/tables/llx_c_transport_mode.key.sql
Normal file
19
htdocs/install/mysql/tables/llx_c_transport_mode.key.sql
Normal file
@ -0,0 +1,19 @@
|
||||
-- ===================================================================
|
||||
-- Copyright (C) 2019 Open-DSI <support@open-dsi.fr>
|
||||
--
|
||||
-- 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/>.
|
||||
--
|
||||
-- ===================================================================
|
||||
|
||||
ALTER TABLE llx_c_transport_mode ADD UNIQUE INDEX uk_c_transport_mode (code, entity);
|
||||
26
htdocs/install/mysql/tables/llx_c_transport_mode.sql
Normal file
26
htdocs/install/mysql/tables/llx_c_transport_mode.sql
Normal file
@ -0,0 +1,26 @@
|
||||
-- ========================================================================
|
||||
-- Copyright (C) 2019 Open-DSI <support@open-dsi.fr>
|
||||
--
|
||||
-- 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/>.
|
||||
--
|
||||
-- ========================================================================
|
||||
|
||||
CREATE TABLE llx_c_transport_mode (
|
||||
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||
entity integer DEFAULT 1 NOT NULL, -- multi company id
|
||||
code varchar(3) NOT NULL,
|
||||
label varchar(255) NOT NULL,
|
||||
active tinyint DEFAULT 1 NOT NULL
|
||||
) ENGINE=innodb;
|
||||
|
||||
@ -86,6 +86,8 @@ create table llx_facture
|
||||
fk_incoterms integer, -- for incoterms
|
||||
location_incoterms varchar(255), -- for incoterms
|
||||
|
||||
fk_mode_transport integer, -- for intracomm report
|
||||
|
||||
situation_cycle_ref smallint, -- situation cycle reference
|
||||
situation_counter smallint, -- situation counter
|
||||
situation_final smallint, -- is the situation final ?
|
||||
|
||||
@ -70,6 +70,9 @@ create table llx_facture_fourn
|
||||
note_public text,
|
||||
fk_incoterms integer, -- for incoterms
|
||||
location_incoterms varchar(255), -- for incoterms
|
||||
|
||||
fk_mode_transport integer, -- for intracomm report
|
||||
|
||||
model_pdf varchar(255),
|
||||
last_main_doc varchar(255), -- relative filepath+filename of last main generated document
|
||||
|
||||
|
||||
33
htdocs/install/mysql/tables/llx_intracommreport.sql
Normal file
33
htdocs/install/mysql/tables/llx_intracommreport.sql
Normal file
@ -0,0 +1,33 @@
|
||||
-- ===================================================================
|
||||
-- Copyright (C) 2015 ATM Consulting <support@atm-consulting.fr>
|
||||
-- Copyright (C) 2019 Open-DSI <support@open-dsi.fr>
|
||||
--
|
||||
-- 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/>.
|
||||
--
|
||||
-- ===================================================================
|
||||
|
||||
create table llx_intracommreport
|
||||
(
|
||||
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
ref varchar(30) NOT NULL, -- report reference number
|
||||
entity integer DEFAULT 1 NOT NULL, -- multi company id
|
||||
type_declaration varchar(32),
|
||||
period varchar(32),
|
||||
mode varchar(32),
|
||||
content_xml text,
|
||||
type_export varchar(10),
|
||||
datec datetime,
|
||||
tms timestamp
|
||||
)ENGINE=innodb;
|
||||
@ -92,8 +92,10 @@ create table llx_societe
|
||||
remise_supplier real DEFAULT 0, -- discount by default granted by this supplier
|
||||
mode_reglement tinyint, -- payment mode customer
|
||||
cond_reglement tinyint, -- payment term customer
|
||||
transport_mode tinyint, -- transport mode customer (Intracomm report)
|
||||
mode_reglement_supplier tinyint, -- payment mode supplier
|
||||
cond_reglement_supplier tinyint, -- payment term supplier
|
||||
transport_mode_supplier tinyint, -- transport mode supplier (Intracomm report)
|
||||
fk_shipping_method integer, -- preferred shipping method id
|
||||
tva_assuj tinyint DEFAULT 1, -- assujeti ou non a la TVA
|
||||
localtax1_assuj tinyint DEFAULT 0, -- assujeti ou non a local tax 1
|
||||
|
||||
0
htdocs/intracommreport/admin/index.html
Normal file
0
htdocs/intracommreport/admin/index.html
Normal file
205
htdocs/intracommreport/admin/intracommreport.php
Normal file
205
htdocs/intracommreport/admin/intracommreport.php
Normal file
@ -0,0 +1,205 @@
|
||||
<?php
|
||||
/* Copyright (C) 2015 ATM Consulting <support@atm-consulting.fr>
|
||||
* Copyright (C) 2019-2020 Open-DSI <support@open-dsi.fr>
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/admin/intracommreport.php
|
||||
* \ingroup intracommreport
|
||||
* \brief Page to setup the module intracomm report
|
||||
*/
|
||||
|
||||
require '../../main.inc.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/intracommreport.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
||||
|
||||
// Load translation files required by the page
|
||||
$langs->loadLangs(array("admin","intracommreport"));
|
||||
|
||||
if (! $user->admin) accessforbidden();
|
||||
|
||||
$action = GETPOST('action', 'aZ09');
|
||||
|
||||
// Parameters INTRACOMMREPORT_* and others
|
||||
$list_DEB = array (
|
||||
'INTRACOMMREPORT_NUM_AGREMENT',
|
||||
);
|
||||
|
||||
$list_DES = array (
|
||||
'INTRACOMMREPORT_NUM_DECLARATION',
|
||||
);
|
||||
|
||||
if ($action == 'update') {
|
||||
$error = 0;
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
foreach ($list_DEB as $constname)
|
||||
{
|
||||
$constvalue = GETPOST($constname, 'alpha');
|
||||
|
||||
if (! dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
||||
$error++;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($list_DES as $constname)
|
||||
{
|
||||
$constvalue = GETPOST($constname, 'alpha');
|
||||
|
||||
if (! dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
||||
$error++;
|
||||
}
|
||||
}
|
||||
|
||||
dolibarr_set_const($db, "INTRACOMMREPORT_TYPE_ACTEUR", GETPOST("INTRACOMMREPORT_TYPE_ACTEUR", 'alpha'), 'chaine', 0, '', $conf->entity);
|
||||
dolibarr_set_const($db, "INTRACOMMREPORT_ROLE_ACTEUR", GETPOST("INTRACOMMREPORT_ROLE_ACTEUR", 'alpha'), 'chaine', 0, '', $conf->entity);
|
||||
dolibarr_set_const($db, "INTRACOMMREPORT_NIV_OBLIGATION_INTRODUCTION", GETPOST("INTRACOMMREPORT_NIV_OBLIGATION_INTRODUCTION", 'alpha'), 'chaine', 0, '', $conf->entity);
|
||||
dolibarr_set_const($db, "INTRACOMMREPORT_NIV_OBLIGATION_EXPEDITION", GETPOST("INTRACOMMREPORT_NIV_OBLIGATION_EXPEDITION", 'alpha'), 'chaine', 0, '', $conf->entity);
|
||||
dolibarr_set_const($db, "INTRACOMMREPORT_CATEG_FRAISDEPORT", GETPOST("INTRACOMMREPORT_CATEG_FRAISDEPORT", 'alpha'), 'chaine', 0, '', $conf->entity);
|
||||
|
||||
if ($error) {
|
||||
setEventMessages($langs->trans("Error"), null, 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
if (! $error) {
|
||||
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* View
|
||||
*/
|
||||
|
||||
$form=new Form($db);
|
||||
$formother=new FormOther($db);
|
||||
|
||||
llxHeader('', $langs->trans("IntracommReportSetup"));
|
||||
|
||||
$linkback = '<a href="' . DOL_URL_ROOT . '/admin/modules.php?restore_lastsearch_values=1">' . $langs->trans("BackToModuleList") . '</a>';
|
||||
print load_fiche_titre($langs->trans("IntracommReportSetup"), $linkback, 'title_setup');
|
||||
|
||||
$head = intracommReportAdminPrepareHead();
|
||||
|
||||
dol_fiche_head($head, 'general', $langs->trans("IntracommReport"), 0, "intracommreport");
|
||||
|
||||
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">';
|
||||
print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
|
||||
print '<input type="hidden" name="action" value="update">';
|
||||
|
||||
print '<td>'.$langs->trans("Parameters").' (DEB)</td>'."\n";
|
||||
print '<table class="noborder" width="100%">';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td>'.$langs->trans("Description").'</td>';
|
||||
print '<td>'.$langs->trans("Value").'</td>';
|
||||
print '</tr>';
|
||||
|
||||
foreach ($list_DEB as $key)
|
||||
{
|
||||
print '<tr class="oddeven value">';
|
||||
|
||||
// Param
|
||||
$label = $langs->trans($key);
|
||||
print '<td>'.$label.'</td>';
|
||||
// Value
|
||||
print '<td class="left">';
|
||||
print '<input type="text" class="maxwidth100" id="' . $key . '" name="' . $key . '" value="' . $conf->global->$key . '">';
|
||||
print '</td>';
|
||||
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
print '<td>'.$langs->trans("INTRACOMMREPORT_TYPE_ACTEUR").'</td>';
|
||||
$arraychoices=array(''=>$langs->trans("None"), 'PSI'=>'Déclarant pour son compte', 'TDP'=>'Tiers déclarant');
|
||||
print '<td>';
|
||||
print $form->selectarray('INTRACOMMREPORT_TYPE_ACTEUR', $arraychoices, $conf->global->INTRACOMMREPORT_TYPE_ACTEUR, 0);
|
||||
print '</td>';
|
||||
print "</tr>\n";
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
print '<td>'.$langs->trans("INTRACOMMREPORT_ROLE_ACTEUR").'</td>';
|
||||
$arraychoices=array(''=>$langs->trans("None"), 'sender'=>'Emetteur', 'PSI'=>'Déclarant');
|
||||
print '<td>';
|
||||
print $form->selectarray('INTRACOMMREPORT_ROLE_ACTEUR', $arraychoices, $conf->global->INTRACOMMREPORT_ROLE_ACTEUR, 0);
|
||||
print '</td>';
|
||||
print "</tr>\n";
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
print '<td>'.$langs->trans("INTRACOMMREPORT_NIV_OBLIGATION_INTRODUCTION").'</td>';
|
||||
$arraychoices=array(1=>'Seuil de 460 000 €', 2=>'En dessous de 460 000 €');
|
||||
print '<td>';
|
||||
print $form->selectarray('INTRACOMMREPORT_NIV_OBLIGATION_INTRODUCTION', $arraychoices, $conf->global->INTRACOMMREPORT_NIV_OBLIGATION_INTRODUCTION, 0);
|
||||
print '</td>';
|
||||
print "</tr>\n";
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
print '<td>'.$langs->trans("INTRACOMMREPORT_NIV_OBLIGATION_EXPEDITION").'</td>';
|
||||
$arraychoices=array(3=>'Seuil de 460 000 €', 4=>'En dessous de 460 000 €');
|
||||
print '<td>';
|
||||
print $form->selectarray('INTRACOMMREPORT_NIV_OBLIGATION_EXPEDITION', $arraychoices, $conf->global->INTRACOMMREPORT_NIV_OBLIGATION_EXPEDITION, 0);
|
||||
print '</td>';
|
||||
print "</tr>\n";
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
print '<td>'.$langs->trans("INTRACOMMREPORT_CATEG_FRAISDEPORT").'</td>';
|
||||
$arraychoices=array(3=>'Seuil de 460 000 €', 4=>'En dessous de 460 000 €');
|
||||
print '<td>';
|
||||
print $formother->select_categories(0, $conf->global->INTRACOMMREPORT_CATEG_FRAISDEPORT, 'INTRACOMMREPORT_CATEG_FRAISDEPORT');
|
||||
print '</td>';
|
||||
print "</tr>\n";
|
||||
|
||||
print '</table>';
|
||||
|
||||
print '<td>'.$langs->trans("Parameters").' (DES)</td>'."\n";
|
||||
print '<table class="noborder" width="100%">';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td>'.$langs->trans("Description").'</td>';
|
||||
print '<td>'.$langs->trans("Value").'</td>';
|
||||
print '</tr>';
|
||||
|
||||
foreach ($list_DES as $key)
|
||||
{
|
||||
print '<tr class="oddeven value">';
|
||||
|
||||
// Param
|
||||
$label = $langs->trans($key);
|
||||
print '<td>'.$label.'</td>';
|
||||
// Value
|
||||
print '<td class="left">';
|
||||
print '<input type="text" class="maxwidth100" id="' . $key . '" name="' . $key . '" value="' . $conf->global->$key . '">';
|
||||
print '</td>';
|
||||
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
print '</table>';
|
||||
|
||||
print '<div class="tabsAction">';
|
||||
print '<div class="inline-block divButAction">';
|
||||
print '<input type="submit" name="bt_save" class="butAction" value="'.$langs->trans('Save').'" />';
|
||||
print '</div>';
|
||||
print '</div>';
|
||||
|
||||
print '</form>';
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
// End of page
|
||||
llxFooter();
|
||||
$db->close();
|
||||
330
htdocs/intracommreport/card.php
Normal file
330
htdocs/intracommreport/card.php
Normal file
@ -0,0 +1,330 @@
|
||||
<?php
|
||||
/* Copyright (C) 2015 ATM Consulting <support@atm-consulting.fr>
|
||||
* Copyright (C) 2019-2020 Open-DSI <support@open-dsi.fr>
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/intracommreport/card.php
|
||||
* \ingroup Intracomm report
|
||||
* \brief Page to manage intracomm report export
|
||||
*/
|
||||
require '../main.inc.php';
|
||||
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT . '/core/lib/functions.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT . '/intracommreport/class/intracommreport.class.php';
|
||||
|
||||
$langs->loadLangs(array("intracommreport"));
|
||||
|
||||
$action = GETPOST('action');
|
||||
$exporttype = GETPOST('exporttype'); // DEB ou DES
|
||||
if (empty($exporttype)) $exporttype = 'deb';
|
||||
|
||||
$form = new Form($db);
|
||||
$formother = new FormOther($db);
|
||||
$year = GETPOST('year');
|
||||
$month = GETPOST('month');
|
||||
$type_declaration = GETPOST('type');
|
||||
$backtopage=GETPOST('backtopage', 'alpha');
|
||||
|
||||
/*
|
||||
* Actions
|
||||
*/
|
||||
|
||||
if ($user->rights->intracommreport->delete && $action == 'confirm_delete' && $confirm == 'yes')
|
||||
{
|
||||
$result=$object->delete($id, $user);
|
||||
if ($result > 0)
|
||||
{
|
||||
if (! empty($backtopage))
|
||||
{
|
||||
header("Location: ".$backtopage);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
header("Location: list.php");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$errmesg=$object->error;
|
||||
}
|
||||
}
|
||||
|
||||
if ($action == 'add' && $user->rights->intracommreport->write) {
|
||||
$object->label = trim($label);
|
||||
$object->type = trim($type);
|
||||
$object->type_declaration = (int) $statut;
|
||||
$object->subscription = (int) $subscription;
|
||||
|
||||
// Fill array 'array_options' with data from add form
|
||||
$ret = $extrafields->setOptionalsFromPost($extralabels, $object);
|
||||
if ($ret < 0) $error++;
|
||||
|
||||
if (empty($object->label)) {
|
||||
$error++;
|
||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Label")), null, 'errors');
|
||||
}
|
||||
else {
|
||||
$sql = "SELECT libelle FROM ".MAIN_DB_PREFIX."adherent_type WHERE libelle='".$db->escape($object->label)."'";
|
||||
$result = $db->query($sql);
|
||||
if ($result) {
|
||||
$num = $db->num_rows($result);
|
||||
}
|
||||
if ($num) {
|
||||
$error++;
|
||||
$langs->load("errors");
|
||||
setEventMessages($langs->trans("ErrorLabelAlreadyExists", $login), null, 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
$id=$object->create($user);
|
||||
if ($id > 0)
|
||||
{
|
||||
header("Location: ".$_SERVER["PHP_SELF"]);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
setEventMessages($object->error, $object->errors, 'errors');
|
||||
$action = 'create';
|
||||
}
|
||||
}
|
||||
else {
|
||||
$action = 'create';
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* View
|
||||
*/
|
||||
|
||||
// Creation mode
|
||||
if ($action == 'create')
|
||||
{
|
||||
$title = $langs->trans("IntracommReportTitle");
|
||||
llxHeader("", $title);
|
||||
print load_fiche_titre($langs->trans("IntracommReportTitle"));
|
||||
|
||||
print '<form name="charge" method="post" action="'.$_SERVER["PHP_SELF"].'">';
|
||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||
print '<input type="hidden" name="action" value="export" />';
|
||||
|
||||
dol_fiche_head();
|
||||
|
||||
print '<table class="border" width="100%">';
|
||||
|
||||
// Label
|
||||
print '<tr><td class="titlefieldcreate">'.$langs->trans("Label").'</td><td><input type="text" class="minwidth200" name="label" autofocus="autofocus"></td></tr>';
|
||||
|
||||
// Declaration
|
||||
$declaration["deb"] = $langs->trans("DEB");
|
||||
$declaration["des"] = $langs->trans("DES");
|
||||
print '<tr><td class="fieldrequired">'.$langs->trans("Declaration")."</td><td>\n";
|
||||
print $form->selectarray("declaration", $declaration, GETPOST('declaration', 'alpha')?GETPOST('declaration', 'alpha'):$object->declaration, 0);
|
||||
print "</td>\n";
|
||||
|
||||
// Analysis period
|
||||
print '<tr>';
|
||||
print '<td class="titlefieldcreate fieldrequired">';
|
||||
print $langs->trans("AnalysisPeriod");
|
||||
print '</td>';
|
||||
print '<td>';
|
||||
print $formother->select_month($month ? date('M') : $month, 'month', 0, 1, 'widthauto valignmiddle ');
|
||||
print $formother->select_year($year ? date('Y') : $year, 'year', 0, 3, 3);
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
|
||||
// Type of declaration
|
||||
$typeOfDeclaration["introduction"] = $langs->trans("Introduction");
|
||||
$typeOfDeclaration["expedition"] = $langs->trans("Expedition");
|
||||
print '<tr><td class="fieldrequired">'.$langs->trans("TypeOfDeclaration")."</td><td>\n";
|
||||
print $form->selectarray("type_declaration", $typeOfDeclaration, GETPOST('type_declaration', 'alpha')?GETPOST('type_declaration', 'alpha'):$object->type_declaration, 0);
|
||||
print "</td>\n";
|
||||
|
||||
print '</table>';
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
print '<div class="center"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'">';
|
||||
print ' <input type="button" class="button" value="' . $langs->trans("Cancel") . '" onClick="javascript:history.go(-1)">';
|
||||
print '</div>';
|
||||
|
||||
print '</form>';
|
||||
}
|
||||
|
||||
if ($id > 0 && $action != 'edit') {
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* View mode */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
$res = $object->fetch($id);
|
||||
if ($res < 0) {
|
||||
dol_print_error($db, $object->error);
|
||||
exit;
|
||||
}
|
||||
|
||||
/*
|
||||
* Show tabs
|
||||
*/
|
||||
$head = intracommreport_prepare_head($object);
|
||||
|
||||
dol_fiche_head($head, 'general', $langs->trans("IntracommReport"), -1, 'user');
|
||||
|
||||
// Confirm remove report
|
||||
if ($action == 'delete') {
|
||||
$formquestion = array();
|
||||
if ($backtopage) {
|
||||
$formquestion[] = array(
|
||||
'type' => 'hidden',
|
||||
'name' => 'backtopage',
|
||||
'value' => ($backtopage != '1' ? $backtopage : $_SERVER["HTTP_REFERER"])
|
||||
);
|
||||
}
|
||||
print $form->formconfirm("card.php?rowid=" . $id, $langs->trans("DeleteReport"),
|
||||
$langs->trans("ConfirmDeleteReport"), "confirm_delete", $formquestion, 'no', 1);
|
||||
}
|
||||
|
||||
$linkback = '<a href="' . DOL_URL_ROOT . '/intracommreport/list.php?restore_lastsearch_values=1">' . $langs->trans("BackToList") . '</a>';
|
||||
|
||||
dol_banner_tab($object, 'rowid', $linkback);
|
||||
|
||||
print '<div class="fichecenter">';
|
||||
print '<div class="fichehalfleft">';
|
||||
|
||||
print '<div class="underbanner clearboth"></div>';
|
||||
print '<table class="border tableforfield centpercent">';
|
||||
|
||||
// Type
|
||||
print '<tr><td class="titlefield">' . $langs->trans("Type") . '</td><td class="valeur">' . $object->declaration . "</td></tr>\n";
|
||||
|
||||
// Analysis Period
|
||||
print '<tr><td>' . $langs->trans("AnalysisPeriod") . '</td><td class="valeur">' . $object->period . '</td>';
|
||||
print '</tr>';
|
||||
|
||||
// Type of Declaration
|
||||
print '<tr><td>' . $langs->trans("TypeOfDeclaration") . '</td><td class="valeur">' . $object->type_declaration . '</td>';
|
||||
print '</tr>';
|
||||
|
||||
print "</table>\n";
|
||||
|
||||
print "</div></div></div>\n";
|
||||
print '<div style="clear:both"></div>';
|
||||
|
||||
dol_fiche_end();
|
||||
}
|
||||
|
||||
/*
|
||||
switch($action) {
|
||||
case 'generateXML':
|
||||
$obj = new TDebProdouane($PDOdb);
|
||||
$obj->load($PDOdb, GETPOST('id_declaration'));
|
||||
$obj->generateXMLFile();
|
||||
break;
|
||||
case 'list':
|
||||
_liste($exporttype);
|
||||
break;
|
||||
case 'export':
|
||||
if ($exporttype == 'deb') _export_xml_deb($type_declaration, $year, str_pad($month, 2, 0, STR_PAD_LEFT));
|
||||
else _export_xml_des($type_declaration, $year, str_pad($month, 2, 0, STR_PAD_LEFT));
|
||||
default:
|
||||
if ($exporttype == 'deb') _print_form_deb();
|
||||
else _print_form_des();
|
||||
break;
|
||||
}
|
||||
|
||||
function _print_form_des()
|
||||
{
|
||||
global $langs, $formother, $year, $month, $type_declaration;
|
||||
|
||||
$title = $langs->trans("IntracommReportDESTitle");
|
||||
llxHeader("", $title);
|
||||
print load_fiche_titre($langs->trans("IntracommReportDESTitle"));
|
||||
|
||||
dol_fiche_head();
|
||||
|
||||
print '<form action="'.$_SERVER['PHP_SELF'].'" name="save" method="POST">';
|
||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||
print '<input type="hidden" name="action" value="export" />';
|
||||
print '<input type="hidden" name="exporttype" value="des" />';
|
||||
print '<input type="hidden" name="type" value="expedition" />'; // Permet d'utiliser le bon select de la requête sql
|
||||
|
||||
print '<table width="100%" class="noborder">';
|
||||
|
||||
print '<tr class="liste_titre"><td colspan="2">';
|
||||
print 'Paramètres de l\'export';
|
||||
print '</td></tr>';
|
||||
|
||||
print '<tr>';
|
||||
print '<td>Période d\'analyse</td>';
|
||||
print '<td>';
|
||||
$TabMonth = array();
|
||||
for($i=1;$i<=12;$i++) $TabMonth[$i] = $langs->trans('Month'.str_pad($i, 2, 0, STR_PAD_LEFT));
|
||||
//print $ATMform->combo('','month', $TabMonth, empty($month) ? date('m') : $month);
|
||||
print $formother->selectyear(empty($year) ? date('Y') : $year,'year',0, 20, 5);
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
|
||||
print '</table>';
|
||||
|
||||
print '<div class="tabsAction">';
|
||||
print '<input class="butAction" type="submit" value="Exporter XML" />';
|
||||
print '</div>';
|
||||
|
||||
print '</form>';
|
||||
}
|
||||
|
||||
function _export_xml_deb($type_declaration, $period_year, $period_month) {
|
||||
|
||||
global $db, $conf;
|
||||
|
||||
$obj = new TDebProdouane($db);
|
||||
$obj->entity = $conf->entity;
|
||||
$obj->mode = 'O';
|
||||
$obj->periode = $period_year.'-'.$period_month;
|
||||
$obj->type_declaration = $type_declaration;
|
||||
$obj->numero_declaration = $obj->getNextNumeroDeclaration();
|
||||
$obj->content_xml = $obj->getXML('O', $type_declaration, $period_year.'-'.$period_month);
|
||||
if(empty($obj->errors)) {
|
||||
$obj->save($PDOdb);
|
||||
$obj->generateXMLFile();
|
||||
}
|
||||
else setEventMessage($obj->errors, 'warnings');
|
||||
}
|
||||
|
||||
function _export_xml_des($type_declaration, $period_year, $period_month) {
|
||||
|
||||
global $PDOdb, $conf;
|
||||
|
||||
$obj = new TDebProdouane($PDOdb);
|
||||
$obj->entity = $conf->entity;
|
||||
$obj->periode = $period_year.'-'.$period_month;
|
||||
$obj->type_declaration = $type_declaration;
|
||||
$obj->exporttype = 'des';
|
||||
$obj->numero_declaration = $obj->getNextNumeroDeclaration();
|
||||
$obj->content_xml = $obj->getXMLDes($period_year, $period_month, $type_declaration);
|
||||
if(empty($obj->errors)) {
|
||||
$obj->save($PDOdb);
|
||||
$obj->generateXMLFile();
|
||||
}
|
||||
else setEventMessage($obj->errors, 'warnings');
|
||||
}
|
||||
*/
|
||||
|
||||
// End of page
|
||||
llxFooter();
|
||||
$db->close();
|
||||
0
htdocs/intracommreport/class/index.html
Normal file
0
htdocs/intracommreport/class/index.html
Normal file
423
htdocs/intracommreport/class/intracommreport.class.php
Normal file
423
htdocs/intracommreport/class/intracommreport.class.php
Normal file
@ -0,0 +1,423 @@
|
||||
<?php
|
||||
/* Copyright (C) 2015 ATM Consulting <support@atm-consulting.fr>
|
||||
* Copyright (C) 2019-2020 Open-DSI <support@open-dsi.fr>
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/intracommreport/class/intracommreport.class.php
|
||||
* \ingroup Intracomm report
|
||||
* \brief File of class to manage intracomm report
|
||||
*/
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
|
||||
|
||||
/**
|
||||
* Class to manage intracomm report
|
||||
*/
|
||||
class IntracommReport extends CommonObject
|
||||
{
|
||||
/**
|
||||
* @var string ID to identify managed object
|
||||
*/
|
||||
public $element='intracommreport';
|
||||
|
||||
/**
|
||||
* @var string Name of table without prefix where object is stored
|
||||
*/
|
||||
public $table_element='intracommreport';
|
||||
|
||||
/**
|
||||
* @var int Field with ID of parent key if this field has a parent
|
||||
*/
|
||||
public $fk_element='fk_intracommreport';
|
||||
|
||||
/**
|
||||
* 0=No test on entity, 1=Test with field entity, 2=Test with link by societe
|
||||
* @var int
|
||||
*/
|
||||
public $ismultientitymanaged = 1;
|
||||
|
||||
/**
|
||||
* DEB - Product
|
||||
*/
|
||||
const TYPE_DEB = 0;
|
||||
|
||||
/**
|
||||
* DES - Service
|
||||
*/
|
||||
const TYPE_DES = 1;
|
||||
|
||||
static $type = array(
|
||||
'introduction'=>'Introduction'
|
||||
,'expedition'=>'Expédition'
|
||||
);
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param DoliDB $db Database handle
|
||||
*/
|
||||
public function __construct(DoliDB $db)
|
||||
{
|
||||
$this->db = $db;
|
||||
$this->exporttype = 'deb';
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate XML file
|
||||
*
|
||||
* @param int $mode O for create, R for regenerate (Look always 0 ment toujours 0 within the framework of XML exchanges according to documentation)
|
||||
* @param string $type Declaration type by default - introduction or expedition (always 'expedition' for Des)
|
||||
* @param string $period_reference Period of reference
|
||||
* @return void
|
||||
*/
|
||||
public function getXML($mode = 'O', $type = 'introduction', $period_reference = '')
|
||||
{
|
||||
|
||||
global $conf, $mysoc;
|
||||
|
||||
/**************Construction de quelques variables********************/
|
||||
$party_id = substr(strtr($mysoc->tva_intra, array(' '=>'')), 0, 4).$mysoc->idprof2;
|
||||
$declarant = substr($mysoc->managers, 0, 14);
|
||||
$id_declaration = self::getNumeroDeclaration($this->numero_declaration);
|
||||
/********************************************************************/
|
||||
|
||||
/**************Construction du fichier XML***************************/
|
||||
$e = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8" standalone="yes"?><INSTAT></INSTAT>');
|
||||
|
||||
$enveloppe = $e->addChild('Envelope');
|
||||
$enveloppe->addChild('envelopeId', $conf->global->INTRACOMMREPORT_NUM_AGREMENT);
|
||||
$date_time = $enveloppe->addChild('DateTime');
|
||||
$date_time->addChild('date', date('Y-m-d'));
|
||||
$date_time->addChild('time', date('H:i:s'));
|
||||
$party = $enveloppe->addChild('Party');
|
||||
$party->addAttribute('partType', $conf->global->INTRACOMMREPORT_TYPE_ACTEUR);
|
||||
$party->addAttribute('partyRole', $conf->global->INTRACOMMREPORT_ROLE_ACTEUR);
|
||||
$party->addChild('partyId', $party_id);
|
||||
$party->addChild('partyName', $declarant);
|
||||
$enveloppe->addChild('softwareUsed', 'Dolibarr');
|
||||
$declaration = $enveloppe->addChild('Declaration');
|
||||
$declaration->addChild('declarationId', $id_declaration);
|
||||
$declaration->addChild('referencePeriod', $period_reference);
|
||||
if ($conf->global->INTRACOMMREPORT_TYPE_ACTEUR === 'PSI') $psiId = $party_id;
|
||||
else $psiId = 'NA';
|
||||
$declaration->addChild('PSIId', $psiId);
|
||||
$function = $declaration->addChild('Function');
|
||||
$functionCode = $function->addChild('functionCode', $mode);
|
||||
$declaration->addChild('declarationTypeCode', $conf->global->{'INTRACOMMREPORT_NIV_OBLIGATION_'.strtoupper($type)});
|
||||
$declaration->addChild('flowCode', ($type == 'introduction' ? 'A' : 'D'));
|
||||
$declaration->addChild('currencyCode', $conf->global->MAIN_MONNAIE);
|
||||
/********************************************************************/
|
||||
|
||||
/**************Ajout des lignes de factures**************************/
|
||||
$res = self::addItemsFact($declaration, $type, $period_reference);
|
||||
/********************************************************************/
|
||||
|
||||
$this->errors = array_unique($this->errors);
|
||||
|
||||
if (!empty($res)) return $e->asXML();
|
||||
else return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate XMLDes file
|
||||
*
|
||||
* @param int $period_year Year of declaration
|
||||
* @param int $period_month Month of declaration
|
||||
* @param string $type_declaration Declaration type by default - introduction or expedition (always 'expedition' for Des)
|
||||
* @return void
|
||||
*/
|
||||
public function getXMLDes($period_year, $period_month, $type_declaration = 'expedition')
|
||||
{
|
||||
global $mysoc;
|
||||
|
||||
$e = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8" ?><fichier_des></fichier_des>');
|
||||
|
||||
$declaration_des = $e->addChild('declaration_des');
|
||||
$declaration_des->addChild('num_des', self::getDeclarationNumber($this->numero_declaration));
|
||||
$declaration_des->addChild('num_tvaFr', $mysoc->tva_intra); // /^FR[a-Z0-9]{2}[0-9]{9}$/ // Doit faire 13 caractères
|
||||
$declaration_des->addChild('mois_des', $period_month);
|
||||
$declaration_des->addChild('an_des', $period_year);
|
||||
|
||||
/**************Ajout des lignes de factures**************************/
|
||||
$res = self::addItemsFact($declaration_des, $type_declaration, $period_year.'-'.$period_month, 'des');
|
||||
/********************************************************************/
|
||||
|
||||
$this->errors = array_unique($this->errors);
|
||||
|
||||
if (!empty($res)) return $e->asXML();
|
||||
else return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add line from invoice
|
||||
*
|
||||
* @param int $declaration Reference declaration
|
||||
* @param string $type Declaration type by default - introduction or expedition (always 'expedition' for Des)
|
||||
* @param int $period_reference Reference period
|
||||
* @param string $exporttype deb=DEB, des=DES
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
public function addItemsFact(&$declaration, $type, $period_reference, $exporttype = 'deb')
|
||||
{
|
||||
global $conf;
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php';
|
||||
|
||||
$sql = $this->getSQLFactLines($type, $period_reference, $exporttype);
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
|
||||
if ($resql) {
|
||||
$i=1;
|
||||
|
||||
if (empty($resql->num_rows)) {
|
||||
$this->errors[] = 'No data for this period';
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ($exporttype == 'deb' && $conf->global->INTRACOMMREPORT_CATEG_FRAISDEPORT > 0) {
|
||||
$categ_fraisdeport = new Categorie();
|
||||
$categ_fraisdeport->fetch($conf->global->INTRACOMMREPORT_CATEG_FRAISDEPORT);
|
||||
$TLinesFraisDePort = array();
|
||||
}
|
||||
|
||||
while ($res = $this->db->fetch_object($resql)) {
|
||||
if ($exporttype == 'des')
|
||||
{
|
||||
$this->addItemXMlDes($declaration, $res, $i);
|
||||
} else {
|
||||
if (empty($res->fk_pays)) {
|
||||
// We don't stop the loop because we want to know all the third parties who don't have an informed country
|
||||
$this->errors[] = 'Country not filled in for the third party <a href="'.dol_buildpath('/societe/soc.php', 1).'?socid='.$res->id_client.'">'.$res->nom.'</a>';
|
||||
} else {
|
||||
if ($conf->global->INTRACOMMREPORT_CATEG_FRAISDEPORT > 0 && $categ_fraisdeport->containsObject('product', $res->id_prod)) {
|
||||
$TLinesFraisDePort[] = $res;
|
||||
} else $this->addItemXMl($declaration, $res, $i, '');
|
||||
}
|
||||
}
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
if (!empty($TLinesFraisDePort)) $this->addItemFraisDePort($declaration, $TLinesFraisDePort, $type, $categ_fraisdeport, $i);
|
||||
|
||||
if (count($this->errors) > 0) return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add invoice line
|
||||
*
|
||||
* @param string $type Declaration type by default - introduction or expedition (always 'expedition' for Des)
|
||||
* @param int $period_reference Reference declaration
|
||||
* @param string $exporttype deb=DEB, des=DES
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
public function getSQLFactLines($type, $period_reference, $exporttype = 'deb')
|
||||
{
|
||||
global $mysoc, $conf;
|
||||
|
||||
if ($type=='expedition' || $exporttype=='des') {
|
||||
$sql = 'SELECT f.facnumber, f.total as total_ht';
|
||||
$table = 'facture';
|
||||
$table_extraf = 'facture_extrafields';
|
||||
$tabledet = 'facturedet';
|
||||
$field_link = 'fk_facture';
|
||||
}
|
||||
else { // Introduction
|
||||
$sql = 'SELECT f.ref_supplier as facnumber, f.total_ht';
|
||||
$table = 'facture_fourn';
|
||||
$table_extraf = 'facture_fourn_extrafields';
|
||||
$tabledet = 'facture_fourn_det';
|
||||
$field_link = 'fk_facture_fourn';
|
||||
}
|
||||
$sql.= ', l.fk_product, l.qty
|
||||
, p.weight, p.rowid as id_prod, p.customcode
|
||||
, s.rowid as id_client, s.nom, s.zip, s.fk_pays, s.tva_intra
|
||||
, c.code
|
||||
, ext.mode_transport
|
||||
FROM '.MAIN_DB_PREFIX.$tabledet.' l
|
||||
INNER JOIN '.MAIN_DB_PREFIX.$table.' f ON (f.rowid = l.'.$field_link.')
|
||||
LEFT JOIN '.MAIN_DB_PREFIX.$table_extraf.' ext ON (ext.fk_object = f.rowid)
|
||||
INNER JOIN '.MAIN_DB_PREFIX.'product p ON (p.rowid = l.fk_product)
|
||||
INNER JOIN '.MAIN_DB_PREFIX.'societe s ON (s.rowid = f.fk_soc)
|
||||
LEFT JOIN '.MAIN_DB_PREFIX.'c_country c ON (c.rowid = s.fk_pays)
|
||||
WHERE f.fk_statut > 0
|
||||
AND l.product_type = '.($exporttype == 'des' ? 1 : 0).'
|
||||
AND f.entity = '.$conf->entity.'
|
||||
AND (s.fk_pays <> '.$mysoc->country_id.' OR s.fk_pays IS NULL)
|
||||
AND f.datef BETWEEN "'.$period_reference.'-01" AND "'.$period_reference.'-'.date('t').'"';
|
||||
|
||||
return $sql;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add item for DEB
|
||||
*
|
||||
* @param int $declaration Reference declaration
|
||||
* @param int $res Result of request SQL
|
||||
* @param int $i Line Id
|
||||
* @param string $code_douane_spe Specific customs authorities code
|
||||
* @return void
|
||||
*/
|
||||
public function addItemXMl(&$declaration, &$res, $i, $code_douane_spe = '')
|
||||
{
|
||||
$item = $declaration->addChild('Item');
|
||||
$item->addChild('ItemNumber', $i);
|
||||
$cn8 = $item->addChild('CN8');
|
||||
if (empty($code_douane_spe)) $code_douane = $res->customcode;
|
||||
else $code_douane = $code_douane_spe;
|
||||
$cn8->addChild('CN8Code', $code_douane);
|
||||
if (!empty($res->tva_intra)) $item->addChild('partnerId', $res->tva_intra);
|
||||
$item->addChild('MSConsDestCode', $res->code); // code iso pays client
|
||||
$item->addChild('netMass', $res->weight * $res->qty); // Poids du produit
|
||||
$item->addChild('quantityInSU', $res->qty); // Quantité de produit dans la ligne
|
||||
$item->addChild('invoicedAmount', round($res->total_ht)); // Montant total ht de la facture (entier attendu)
|
||||
$item->addChild('invoicedNumber', $res->facnumber); // Numéro facture
|
||||
$item->addChild('statisticalProcedureCode', '11');
|
||||
$nature_of_transaction = $item->addChild('NatureOfTransaction');
|
||||
$nature_of_transaction->addChild('natureOfTransactionACode', 1);
|
||||
$nature_of_transaction->addChild('natureOfTransactionBCode', 1);
|
||||
$item->addChild('modeOfTransportCode', $res->mode_transport);
|
||||
$item->addChild('regionCode', substr($res->zip, 0, 2));
|
||||
}
|
||||
|
||||
/**
|
||||
* Add item for DES
|
||||
*
|
||||
* @param int $declaration Reference declaration
|
||||
* @param int $res Result of request SQL
|
||||
* @param int $i Line Id
|
||||
* @return void
|
||||
*/
|
||||
public function addItemXMlDes($declaration, &$res, $i)
|
||||
{
|
||||
$item = $declaration->addChild('ligne_des');
|
||||
$item->addChild('numlin_des', $i);
|
||||
$item->addChild('valeur', round($res->total_ht)); // Total amount excl. tax of the invoice (whole amount expected)
|
||||
$item->addChild('partner_des', $res->tva_intra); // Represents the foreign customer's VAT number
|
||||
}
|
||||
|
||||
/**
|
||||
* This function adds an item by retrieving the customs code of the product with the highest amount in the invoice
|
||||
*
|
||||
* @param int $declaration Reference declaration
|
||||
* @param int $TLinesFraisDePort Data of shipping costs line
|
||||
* @param string $type Declaration type by default - introduction or expedition (always 'expedition' for Des)
|
||||
* @param int $categ_fraisdeport Id of category of shipping costs
|
||||
* @param int $i Line Id
|
||||
* @return void
|
||||
*/
|
||||
public function addItemFraisDePort(&$declaration, &$TLinesFraisDePort, $type, &$categ_fraisdeport, $i)
|
||||
{
|
||||
|
||||
global $conf;
|
||||
|
||||
if ($type=='expedition') {
|
||||
$table = 'facture';
|
||||
$tabledet = 'facturedet';
|
||||
$field_link = 'fk_facture';
|
||||
$more_sql = 'f.facnumber';
|
||||
} else { // Introduction
|
||||
$table = 'facture_fourn';
|
||||
$tabledet = 'facture_fourn_det';
|
||||
$field_link = 'fk_facture_fourn';
|
||||
$more_sql = 'f.ref_supplier';
|
||||
}
|
||||
|
||||
foreach ($TLinesFraisDePort as $res) {
|
||||
$sql = 'SELECT p.customcode
|
||||
FROM '.MAIN_DB_PREFIX.$tabledet.' d
|
||||
INNER JOIN '.MAIN_DB_PREFIX.$table.' f ON (f.rowid = d.'.$field_link.')
|
||||
INNER JOIN '.MAIN_DB_PREFIX.'product p ON (p.rowid = d.fk_product)
|
||||
WHERE d.fk_product IS NOT NULL
|
||||
AND f.entity = '.$conf->entity.'
|
||||
AND '.$more_sql.' = "'.$res->facnumber.'"
|
||||
AND d.total_ht =
|
||||
(
|
||||
SELECT MAX(d.total_ht)
|
||||
FROM '.MAIN_DB_PREFIX.$tabledet.' d
|
||||
INNER JOIN '.MAIN_DB_PREFIX.$table.' f ON (f.rowid = d.'.$field_link.')
|
||||
WHERE d.fk_product IS NOT NULL
|
||||
AND '.$more_sql.' = "'.$res->facnumber.'"
|
||||
AND d.fk_product NOT IN
|
||||
(
|
||||
SELECT fk_product
|
||||
FROM '.MAIN_DB_PREFIX.'categorie_product
|
||||
WHERE fk_categorie = '.$categ_fraisdeport->id.'
|
||||
)
|
||||
)';
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
$ress = $this->db->fetch_object($resql);
|
||||
|
||||
$this->addItemXMl($declaration, $res, $i, $ress->customcode);
|
||||
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return next reference of declaration not already used (or last reference)
|
||||
*
|
||||
* @return string free ref or last ref
|
||||
*/
|
||||
public function getNextDeclarationNumber()
|
||||
{
|
||||
$resql = $this->db->query('SELECT MAX(numero_declaration) as max_numero_declaration FROM '.$this->get_table().' WHERE exporttype="'.$this->exporttype.'"');
|
||||
if ($resql) $res = $this->db->fetch_object($resql);
|
||||
|
||||
return ($res->max_numero_declaration + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify declaration number. Positive integer of a maximum of 6 characters recommended by the documentation
|
||||
*
|
||||
* @param int $number Number to verify / convert
|
||||
* @return int Number
|
||||
*/
|
||||
public static function getDeclarationNumber($number)
|
||||
{
|
||||
return str_pad($number, 6, 0, STR_PAD_LEFT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate XML file
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function generateXMLFile()
|
||||
{
|
||||
|
||||
$name = $this->periode.'.xml';
|
||||
$fname = sys_get_temp_dir().'/'.$name;
|
||||
$f = fopen($fname, 'w+');
|
||||
fwrite($f, $this->content_xml);
|
||||
fclose($f);
|
||||
|
||||
header('Content-Description: File Transfer');
|
||||
header('Content-Type: application/xml');
|
||||
header('Content-Disposition: attachment; filename="'.$name.'"');
|
||||
header('Expires: 0');
|
||||
header('Cache-Control: must-revalidate');
|
||||
header('Pragma: public');
|
||||
header('Content-Length: ' . filesize($fname));
|
||||
readfile($fname);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
0
htdocs/intracommreport/index.html
Normal file
0
htdocs/intracommreport/index.html
Normal file
492
htdocs/intracommreport/list.php
Normal file
492
htdocs/intracommreport/list.php
Normal file
@ -0,0 +1,492 @@
|
||||
<?php
|
||||
/* Copyright (C) 2015 ATM Consulting <support@atm-consulting.fr>
|
||||
* Copyright (C) 2019-2020 Open-DSI <support@open-dsi.fr>
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/intracommreport/list.php
|
||||
* \ingroup Intracomm Report
|
||||
* \brief Page to list intracomm report
|
||||
*/
|
||||
|
||||
require '../main.inc.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/intracommreport/class/intracommreport.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
||||
|
||||
// Load translation files required by the page
|
||||
$langs->loadLangs(array('intracommreport'));
|
||||
|
||||
$action=GETPOST('action', 'alpha');
|
||||
$massaction=GETPOST('massaction', 'alpha');
|
||||
$show_files=GETPOST('show_files', 'int');
|
||||
$confirm=GETPOST('confirm', 'alpha');
|
||||
$toselect = GETPOST('toselect', 'array');
|
||||
|
||||
$sall=trim((GETPOST('search_all', 'alphanohtml')!='')?GETPOST('search_all', 'alphanohtml'):GETPOST('sall', 'alphanohtml'));
|
||||
$search_ref=GETPOST("search_ref", 'alpha');
|
||||
$search_type = GETPOST("search_type", 'int');
|
||||
$fourn_id = GETPOST("fourn_id", 'int');
|
||||
$catid = GETPOST('catid', 'int');
|
||||
$optioncss = GETPOST('optioncss', 'alpha');
|
||||
$type=GETPOST("type", "int");
|
||||
|
||||
$diroutputmassaction=$conf->product->dir_output . '/temp/massgeneration/'.$user->id;
|
||||
|
||||
$limit = GETPOST('limit', 'int')?GETPOST('limit', 'int'):$conf->liste_limit;
|
||||
$sortfield = GETPOST("sortfield", 'alpha');
|
||||
$sortorder = GETPOST("sortorder", 'alpha');
|
||||
$page = (GETPOST("page", 'int')?GETPOST("page", 'int'):0);
|
||||
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
||||
$offset = $limit * $page;
|
||||
$pageprev = $page - 1;
|
||||
$pagenext = $page + 1;
|
||||
if (! $sortfield) $sortfield="i.ref";
|
||||
if (! $sortorder) $sortorder="ASC";
|
||||
|
||||
// Initialize context for list
|
||||
$contextpage=GETPOST('contextpage', 'aZ')?GETPOST('contextpage', 'aZ'):'intracommreportlist';
|
||||
if ((string) $type == '1') { $contextpage='DESlist'; if ($search_type=='') $search_type='1'; }
|
||||
if ((string) $type == '0') { $contextpage='DEBlist'; if ($search_type=='') $search_type='0'; }
|
||||
|
||||
// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array of hooks
|
||||
$object=new IntracommReport($db);
|
||||
$hookmanager->initHooks(array('intracommreportlist'));
|
||||
$extrafields = new ExtraFields($db);
|
||||
$form=new Form($db);
|
||||
|
||||
/*
|
||||
// fetch optionals attributes and labels
|
||||
$extralabels = $extrafields->fetch_name_optionals_label('intracommreport');
|
||||
$search_array_options=$extrafields->getOptionalsFromPost($object->table_element, '', 'search_');
|
||||
*/
|
||||
|
||||
if (empty($action)) $action='list';
|
||||
|
||||
// Get object canvas (By default, this is not defined, so standard usage of dolibarr)
|
||||
$canvas=GETPOST("canvas");
|
||||
$objcanvas=null;
|
||||
if (! empty($canvas))
|
||||
{
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/canvas.class.php';
|
||||
$objcanvas = new Canvas($db, $action);
|
||||
$objcanvas->getCanvas('product', 'list', $canvas);
|
||||
}
|
||||
|
||||
// Security check
|
||||
/*
|
||||
if ($search_type=='0') $result=restrictedArea($user, 'produit', '', '', '', '', '', $objcanvas);
|
||||
elseif ($search_type=='1') $result=restrictedArea($user, 'service', '', '', '', '', '', $objcanvas);
|
||||
else $result=restrictedArea($user, 'produit|service', '', '', '', '', '', $objcanvas);
|
||||
*/
|
||||
|
||||
// List of fields to search into when doing a "search in all"
|
||||
$fieldstosearchall = array(
|
||||
'i.ref'=>"Ref",
|
||||
'pfi.ref_fourn'=>"RefSupplier",
|
||||
'i.label'=>"ProductLabel",
|
||||
'i.description'=>"Description",
|
||||
"i.note"=>"Note",
|
||||
);
|
||||
|
||||
$isInEEC=isInEEC($mysoc);
|
||||
|
||||
// Definition of fields for lists
|
||||
$arrayfields=array(
|
||||
'i.ref'=>array('label'=>$langs->trans("Ref"), 'checked'=>1),
|
||||
'i.label'=>array('label'=>$langs->trans("Label"), 'checked'=>1),
|
||||
'i.fk_product_type'=>array('label'=>$langs->trans("Type"), 'checked'=>0, 'enabled'=>(! empty($conf->produit->enabled) && ! empty($conf->service->enabled))),
|
||||
);
|
||||
/*
|
||||
// Extra fields
|
||||
if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']))
|
||||
{
|
||||
foreach($extrafields->attributes[$object->table_element]['label'] as $key => $val)
|
||||
{
|
||||
if (! empty($extrafields->attributes[$object->table_element]['list'][$key]))
|
||||
$arrayfields["ef.".$key]=array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key]<0)?0:1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key])!=3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
|
||||
}
|
||||
}
|
||||
*/
|
||||
$object->fields = dol_sort_array($object->fields, 'position');
|
||||
$arrayfields = dol_sort_array($arrayfields, 'position');
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Actions
|
||||
*/
|
||||
|
||||
if (GETPOST('cancel', 'alpha')) { $action='list'; $massaction=''; }
|
||||
if (! GETPOST('confirmmassaction', 'alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; }
|
||||
|
||||
$parameters=array();
|
||||
$reshook=$hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
|
||||
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||
|
||||
if (empty($reshook))
|
||||
{
|
||||
// Selection of new fields
|
||||
include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
|
||||
|
||||
// Purge search criteria
|
||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) // All tests are required to be compatible with all browsers
|
||||
{
|
||||
$sall="";
|
||||
$search_ref="";
|
||||
$search_label="";
|
||||
//$search_type=''; // There is 2 types of list: a list of product and a list of services. No list with both. So when we clear search criteria, we must keep the filter on type.
|
||||
|
||||
$show_childproducts = '';
|
||||
$search_array_options=array();
|
||||
}
|
||||
|
||||
// Mass actions
|
||||
$objectclass='Product';
|
||||
if ((string) $search_type == '1') { $objectlabel='Services'; }
|
||||
if ((string) $search_type == '0') { $objectlabel='Products'; }
|
||||
|
||||
$permtoread = $user->rights->produit->lire;
|
||||
$permtodelete = $user->rights->produit->supprimer;
|
||||
$uploaddir = $conf->product->dir_output;
|
||||
include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* View
|
||||
*/
|
||||
$formother=new FormOther($db);
|
||||
|
||||
$title=$langs->trans('IntracommReportList'.$type);
|
||||
|
||||
$sql = 'SELECT DISTINCT i.rowid, i.type_declaration, i.type_export, i.period, i.mode, i.entity';
|
||||
/*
|
||||
// Add fields from extrafields
|
||||
if (! empty($extrafields->attributes[$object->table_element]['label'])) {
|
||||
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) $sql.=($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? ", ef.".$key.' as options_'.$key : '');
|
||||
}
|
||||
*/
|
||||
// Add fields from hooks
|
||||
$parameters=array();
|
||||
$reshook=$hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook
|
||||
$sql.=$hookmanager->resPrint;
|
||||
|
||||
$sql.= ' FROM '.MAIN_DB_PREFIX.'intracommreport as i';
|
||||
|
||||
// if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."intracommreport_extrafields as ef on (i.rowid = ef.fk_object)";
|
||||
|
||||
$sql.= ' WHERE i.entity IN ('.getEntity('intracommreport').')';
|
||||
|
||||
if ($sall) $sql .= natural_search(array_keys($fieldstosearchall), $sall);
|
||||
// if the type is not 1, we show all products (type = 0,2,3)
|
||||
if (dol_strlen($search_type) && $search_type != '-1')
|
||||
{
|
||||
if ($search_type == 1) $sql.= " AND i.type = 1";
|
||||
else $sql.= " AND i.type = 0";
|
||||
}
|
||||
|
||||
/*
|
||||
if ($search_ref) $sql .= natural_search('i.ref', $search_ref);
|
||||
if ($search_label) $sql .= natural_search('i.label', $search_label);
|
||||
if ($search_barcode) $sql .= natural_search('i.barcode', $search_barcode);
|
||||
if (isset($search_tosell) && dol_strlen($search_tosell) > 0 && $search_tosell!=-1) $sql.= " AND i.tosell = ".$db->escape($search_tosell);
|
||||
if (isset($search_tobuy) && dol_strlen($search_tobuy) > 0 && $search_tobuy!=-1) $sql.= " AND i.tobuy = ".$db->escape($search_tobuy);
|
||||
if (dol_strlen($canvas) > 0) $sql.= " AND i.canvas = '".$db->escape($canvas)."'";
|
||||
*/
|
||||
|
||||
/*
|
||||
// Add where from extra fields
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php';
|
||||
*/
|
||||
// Add where from hooks
|
||||
$parameters=array();
|
||||
$reshook=$hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook
|
||||
$sql.=$hookmanager->resPrint;
|
||||
|
||||
$sql.= " GROUP BY i.rowid";
|
||||
|
||||
/*
|
||||
// Add fields from extrafields
|
||||
if (! empty($extrafields->attributes[$object->table_element]['label'])) {
|
||||
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) $sql.=($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? ", ef.".$key : '');
|
||||
}
|
||||
*/
|
||||
|
||||
// Add fields from hooks
|
||||
$parameters=array();
|
||||
$reshook=$hookmanager->executeHooks('printFieldSelect', $parameters); // Note that $action and $object may have been modified by hook
|
||||
$sql.=$hookmanager->resPrint;
|
||||
|
||||
$sql.= $db->order($sortfield, $sortorder);
|
||||
|
||||
$nbtotalofrecords = '';
|
||||
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
|
||||
{
|
||||
$result = $db->query($sql);
|
||||
$nbtotalofrecords = $db->num_rows($result);
|
||||
if (($page * $limit) > $nbtotalofrecords) // if total resultset is smaller then paging size (filtering), goto and load page 0
|
||||
{
|
||||
$page = 0;
|
||||
$offset = 0;
|
||||
}
|
||||
}
|
||||
|
||||
$sql.= $db->plimit($limit + 1, $offset);
|
||||
|
||||
$resql = $db->query($sql);
|
||||
|
||||
if ($resql)
|
||||
{
|
||||
$num = $db->num_rows($resql);
|
||||
|
||||
$arrayofselected=is_array($toselect)?$toselect:array();
|
||||
|
||||
$helpurl='EN:Module_IntracommReport|FR:Module_ProDouane';
|
||||
llxHeader('', $title, $helpurl, '');
|
||||
|
||||
// Displays product removal confirmation
|
||||
if (GETPOST('delreport')) {
|
||||
setEventMessages($langs->trans("IntracommReportDeleted", GETPOST('delreport')), null, 'mesgs');
|
||||
}
|
||||
|
||||
$param='';
|
||||
if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage);
|
||||
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit);
|
||||
if ($sall) $param.="&sall=".urlencode($sall);
|
||||
if ($search_ref) $param="&search_ref=".urlencode($search_ref);
|
||||
if ($search_label) $param.="&search_label=".urlencode($search_label);
|
||||
|
||||
// Add $param from extra fields
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
|
||||
|
||||
// List of mass actions available
|
||||
$arrayofmassactions = array(
|
||||
'generate_doc'=>$langs->trans("ReGeneratePDF"),
|
||||
//'builddoc'=>$langs->trans("PDFMerge"),
|
||||
//'presend'=>$langs->trans("SendByMail"),
|
||||
);
|
||||
if ($user->rights->intracommreport->delete) $arrayofmassactions['predelete']="<span class='fa fa-trash paddingrightonly'></span>".$langs->trans("Delete");
|
||||
if (in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array();
|
||||
$massactionbutton=$form->selectMassAction('', $arrayofmassactions);
|
||||
|
||||
$newcardbutton='';
|
||||
if ($user->rights->intracommreport->write)
|
||||
{
|
||||
$newcardbutton.= dolGetButtonTitle($langs->trans("NewDeclaration"), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/intracommreport/card.php?action=create&type='.$type);
|
||||
}
|
||||
|
||||
print '<form action="'.$_SERVER["PHP_SELF"].'" method="post" name="formulaire">';
|
||||
if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||
print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
|
||||
print '<input type="hidden" name="action" value="list">';
|
||||
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
|
||||
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
||||
print '<input type="hidden" name="page" value="'.$page.'">';
|
||||
print '<input type="hidden" name="type" value="'.$type.'">';
|
||||
if (empty($arrayfields['i.fk_product_type']['checked'])) print '<input type="hidden" name="search_type" value="'.dol_escape_htmltag($search_type).'">';
|
||||
|
||||
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_products.png', 0, $newcardbutton, '', $limit);
|
||||
|
||||
$topicmail="Information";
|
||||
$modelmail="product";
|
||||
$objecttmp=new IntracommReport($db);
|
||||
$trackid='prod'.$object->id;
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php';
|
||||
|
||||
if ($sall)
|
||||
{
|
||||
foreach ($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val);
|
||||
print '<div class="divsearchfieldfilter">'.$langs->trans("FilterOnInto", $sall) . join(', ', $fieldstosearchall).'</div>';
|
||||
}
|
||||
|
||||
$parameters=array();
|
||||
$reshook=$hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook
|
||||
if (empty($reshook)) $moreforfilter.=$hookmanager->resPrint;
|
||||
else $moreforfilter=$hookmanager->resPrint;
|
||||
|
||||
if ($moreforfilter)
|
||||
{
|
||||
print '<div class="liste_titre liste_titre_bydiv centpercent">';
|
||||
print $moreforfilter;
|
||||
print '</div>';
|
||||
}
|
||||
|
||||
$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
|
||||
$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
|
||||
if ($massactionbutton) $selectedfields.=$form->showCheckAddButtons('checkforselect', 1);
|
||||
|
||||
print '<div class="div-table-responsive">';
|
||||
print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n";
|
||||
|
||||
// Lines with input filters
|
||||
print '<tr class="liste_titre_filter">';
|
||||
if (! empty($arrayfields['i.ref']['checked']))
|
||||
{
|
||||
print '<td class="liste_titre left">';
|
||||
print '<input class="flat" type="text" name="search_ref" size="8" value="'.dol_escape_htmltag($search_ref).'">';
|
||||
print '</td>';
|
||||
}
|
||||
if (! empty($arrayfields['i.label']['checked']))
|
||||
{
|
||||
print '<td class="liste_titre left">';
|
||||
print '<input class="flat" type="text" name="search_label" size="12" value="'.dol_escape_htmltag($search_label).'">';
|
||||
print '</td>';
|
||||
}
|
||||
// Type
|
||||
// Type (customer/prospect/supplier)
|
||||
if (!empty($arrayfields['customerorsupplier']['checked']))
|
||||
{
|
||||
print '<td class="liste_titre maxwidthonsmartphone center">';
|
||||
if ($type != '') print '<input type="hidden" name="type" value="'.$type.'">';
|
||||
print $formcompany->selectProspectCustomerType($search_type, 'search_type', 'search_type', 'list');
|
||||
print '</select></td>';
|
||||
}
|
||||
|
||||
if (! empty($arrayfields['i.fk_product_type']['checked']))
|
||||
{
|
||||
print '<td class="liste_titre left">';
|
||||
$array=array('-1'=>' ', '0'=>$langs->trans('Product'), '1'=>$langs->trans('Service'));
|
||||
print $form->selectarray('search_type', $array, $search_type);
|
||||
print '</td>';
|
||||
}
|
||||
|
||||
/*
|
||||
// Extra fields
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php';
|
||||
*/
|
||||
// Fields from hook
|
||||
$parameters=array('arrayfields'=>$arrayfields);
|
||||
$reshook=$hookmanager->executeHooks('printFieldListOption', $parameters); // Note that $action and $object may have been modified by hook
|
||||
print $hookmanager->resPrint;
|
||||
// Date creation
|
||||
if (! empty($arrayfields['i.datec']['checked']))
|
||||
{
|
||||
print '<td class="liste_titre">';
|
||||
print '</td>';
|
||||
}
|
||||
// Date modification
|
||||
if (! empty($arrayfields['i.tms']['checked']))
|
||||
{
|
||||
print '<td class="liste_titre">';
|
||||
print '</td>';
|
||||
}
|
||||
print '<td class="liste_titre center maxwidthsearch">';
|
||||
$searchpicto=$form->showFilterButtons();
|
||||
print $searchpicto;
|
||||
print '</td>';
|
||||
|
||||
print '</tr>';
|
||||
|
||||
print '<tr class="liste_titre">';
|
||||
if (! empty($arrayfields['i.ref']['checked'])) {
|
||||
print_liste_field_titre($arrayfields['i.ref']['label'], $_SERVER["PHP_SELF"], "i.ref", "", $param, "", $sortfield, $sortorder);
|
||||
}
|
||||
if (! empty($arrayfields['i.label']['checked'])) {
|
||||
print_liste_field_titre($arrayfields['i.label']['label'], $_SERVER["PHP_SELF"], "i.label", "", $param, "", $sortfield, $sortorder);
|
||||
}
|
||||
if (! empty($arrayfields['i.fk_product_type']['checked'])) {
|
||||
print_liste_field_titre($arrayfields['i.fk_product_type']['label'], $_SERVER["PHP_SELF"], "i.fk_product_type", "", $param, "", $sortfield, $sortorder);
|
||||
}
|
||||
|
||||
/*
|
||||
// Extra fields
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php';
|
||||
*/
|
||||
// Hook fields
|
||||
$parameters=array('arrayfields'=>$arrayfields,'param'=>$param,'sortfield'=>$sortfield,'sortorder'=>$sortorder);
|
||||
$reshook=$hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook
|
||||
print $hookmanager->resPrint;
|
||||
if (! empty($arrayfields['i.datec']['checked'])) {
|
||||
print_liste_field_titre($arrayfields['i.datec']['label'], $_SERVER["PHP_SELF"], "i.datec", "", $param, '', $sortfield, $sortorder, 'center nowrap ');
|
||||
}
|
||||
if (! empty($arrayfields['i.tms']['checked'])) {
|
||||
print_liste_field_titre($arrayfields['i.tms']['label'], $_SERVER["PHP_SELF"], "i.tms", "", $param, '', $sortfield, $sortorder, 'center nowrap ');
|
||||
}
|
||||
|
||||
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ');
|
||||
print "</tr>\n";
|
||||
|
||||
|
||||
$intracommreport_static = new IntracommReport($db);
|
||||
|
||||
$i = 0;
|
||||
$totalarray=array();
|
||||
while ($i < min($num, $limit))
|
||||
{
|
||||
$obj = $db->fetch_object($resql);
|
||||
|
||||
$intracommreport_static->id = $obj->rowid;
|
||||
$intracommreport_static->ref = $obj->ref;
|
||||
$intracommreport_static->ref_fourn = $obj->ref_supplier;
|
||||
$intracommreport_static->label = $obj->label;
|
||||
$intracommreport_static->type = $obj->fk_product_type;
|
||||
$intracommreport_static->status_buy = $obj->tobuy;
|
||||
$intracommreport_static->status = $obj->tosell;
|
||||
$intracommreport_static->status_batch = $obj->tobatch;
|
||||
$intracommreport_static->entity = $obj->entity;
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
|
||||
// Ref
|
||||
if (! empty($arrayfields['i.ref']['checked']))
|
||||
{
|
||||
print '<td class="tdoverflowmax200">';
|
||||
print $intracommreport_static->getNomUrl(1);
|
||||
print "</td>\n";
|
||||
if (! $i) $totalarray['nbfield']++;
|
||||
}
|
||||
// Label
|
||||
if (! empty($arrayfields['i.label']['checked']))
|
||||
{
|
||||
print '<td class="tdoverflowmax200">'.dol_trunc($obj->label, 80).'</td>';
|
||||
if (! $i) $totalarray['nbfield']++;
|
||||
}
|
||||
// Type
|
||||
if (! empty($arrayfields['i.fk_product_type']['checked']))
|
||||
{
|
||||
print '<td>'.$obj->fk_product_type.'</td>';
|
||||
if (! $i) $totalarray['nbfield']++;
|
||||
}
|
||||
// Action
|
||||
print '<td class="nowrap center">';
|
||||
if ($massactionbutton || $massaction) // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
||||
{
|
||||
$selected=0;
|
||||
if (in_array($obj->rowid, $arrayofselected)) $selected=1;
|
||||
print '<input id="cb'.$obj->rowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.'"'.($selected?' checked="checked"':'').'>';
|
||||
}
|
||||
print '</td>';
|
||||
if (! $i) $totalarray['nbfield']++;
|
||||
|
||||
print "</tr>\n";
|
||||
$i++;
|
||||
}
|
||||
|
||||
$db->free($resql);
|
||||
|
||||
print "</table>";
|
||||
print "</div>";
|
||||
print '</form>';
|
||||
}
|
||||
else {
|
||||
dol_print_error($db);
|
||||
}
|
||||
|
||||
// End of page
|
||||
llxFooter();
|
||||
$db->close();
|
||||
@ -978,6 +978,9 @@ Permission63003=Delete resources
|
||||
Permission63004=Link resources to agenda events
|
||||
Permission64001=Allow direct printing
|
||||
Permission67000=Allow printing of receipts
|
||||
Permission68001=Read intracomm report
|
||||
Permission68002=Create/modify intracomm report
|
||||
Permission68004=Delete intracomm report
|
||||
Permission941601=Read receipts
|
||||
Permission941602=Create and modify receipts
|
||||
Permission941603=Validate receipts
|
||||
@ -1023,6 +1026,7 @@ DictionaryHolidayTypes=Types of leave
|
||||
DictionaryOpportunityStatus=Lead status for project/lead
|
||||
DictionaryExpenseTaxCat=Expense report - Transportation categories
|
||||
DictionaryExpenseTaxRange=Expense report - Range by transportation category
|
||||
DictionaryTransportMode=Intracomm report - Transport mode
|
||||
SetupSaved=Setup saved
|
||||
SetupNotSaved=Setup not saved
|
||||
BackToModuleList=Back to Module list
|
||||
|
||||
40
htdocs/langs/en_US/intracommreport.lang
Normal file
40
htdocs/langs/en_US/intracommreport.lang
Normal file
@ -0,0 +1,40 @@
|
||||
Module68000Name = Intracomm report
|
||||
Module68000Desc = Intracomm report management (Support for French DEB/DES format)
|
||||
IntracommReportSetup = Intracommreport module setup
|
||||
IntracommReportAbout = About intracommreport
|
||||
|
||||
# Setup
|
||||
INTRACOMMREPORT_NUM_AGREMENT=Numéro d'agrément (délivré par le CISD de rattachement)
|
||||
INTRACOMMREPORT_TYPE_ACTEUR=Type d'acteur
|
||||
INTRACOMMREPORT_ROLE_ACTEUR=Rôle joué par l'acteur
|
||||
INTRACOMMREPORT_NIV_OBLIGATION_INTRODUCTION=Niveau d'obligation sur les introductions
|
||||
INTRACOMMREPORT_NIV_OBLIGATION_EXPEDITION=Niveau d'obligation sur les expéditions
|
||||
INTRACOMMREPORT_CATEG_FRAISDEPORT=Catégorie de services de type "Frais de port"
|
||||
|
||||
INTRACOMMREPORT_NUM_DECLARATION=Numéro de déclarant
|
||||
|
||||
# Menu
|
||||
MenuIntracommReport=Intracomm report
|
||||
MenuIntracommReportNew=New declaration
|
||||
MenuIntracommReportList=List
|
||||
|
||||
# View
|
||||
NewDeclaration=New declaration
|
||||
Declaration=Declaration
|
||||
AnalysisPeriod=Analysis period
|
||||
TypeOfDeclaration=Type of declaration
|
||||
DEB=Goods exchange declaration (DEB)
|
||||
DES=Services exchange declaration (DES)
|
||||
|
||||
# Export page
|
||||
IntracommReportTitle=Preparation of an XML file in ProDouane format
|
||||
|
||||
# List
|
||||
IntracommReportList=List of generated declarations
|
||||
IntracommReportNumber=Numéro déclaration
|
||||
IntracommReportPeriod=Période d'analyse
|
||||
IntracommReportTypeDeclaration=Type de déclaration
|
||||
IntracommReportDownload=Télécharger fichier XML
|
||||
|
||||
# Invoice
|
||||
IntracommReportTransportMode=Transport mode
|
||||
@ -151,7 +151,7 @@ if (empty($reshook))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
header("Location: index.php");
|
||||
header("Location: list.php");
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
@ -464,6 +464,7 @@ class Societe extends CommonObject
|
||||
public $remise_supplier_percent;
|
||||
public $mode_reglement_supplier_id;
|
||||
public $cond_reglement_supplier_id;
|
||||
public $transport_mode_supplier_id;
|
||||
|
||||
/**
|
||||
* @var int ID
|
||||
@ -1307,8 +1308,10 @@ class Societe extends CommonObject
|
||||
|
||||
$sql .= ",mode_reglement = ".(!empty($this->mode_reglement_id) ? "'".$this->db->escape($this->mode_reglement_id)."'" : "null");
|
||||
$sql .= ",cond_reglement = ".(!empty($this->cond_reglement_id) ? "'".$this->db->escape($this->cond_reglement_id)."'" : "null");
|
||||
$sql .= ",mode_reglement_supplier = ".(!empty($this->mode_reglement_supplier_id) ? "'".$this->db->escape($this->mode_reglement_supplier_id)."'" : "null");
|
||||
$sql .= ",transport_mode = ".(! empty($this->transport_mode_id) ? "'".$this->db->escape($this->transport_mode_id)."'" : "null");
|
||||
$sql .= ",mode_reglement_supplier = ".(!empty($this->mode_reglement_supplier_id) ? "'".$this->db->escape($this->mode_reglement_supplier_id)."'" : "null");
|
||||
$sql .= ",cond_reglement_supplier = ".(!empty($this->cond_reglement_supplier_id) ? "'".$this->db->escape($this->cond_reglement_supplier_id)."'" : "null");
|
||||
$sql .= ",transport_mode_supplier = ".(! empty($this->transport_mode_supplier_id)? "'".$this->db->escape($this->transport_mode_supplier_id)."'" : "null");
|
||||
$sql .= ",fk_shipping_method = ".(!empty($this->shipping_method_id) ? "'".$this->db->escape($this->shipping_method_id)."'" : "null");
|
||||
|
||||
$sql .= ",client = ".(!empty($this->client) ? $this->client : 0);
|
||||
@ -1646,13 +1649,15 @@ class Societe extends CommonObject
|
||||
$this->remise_supplier_percent = $obj->remise_supplier;
|
||||
$this->mode_reglement_id = $obj->mode_reglement;
|
||||
$this->cond_reglement_id = $obj->cond_reglement;
|
||||
$this->transport_mode_id = $obj->transport_mode;
|
||||
$this->mode_reglement_supplier_id = $obj->mode_reglement_supplier;
|
||||
$this->cond_reglement_supplier_id = $obj->cond_reglement_supplier;
|
||||
$this->shipping_method_id = ($obj->fk_shipping_method > 0) ? $obj->fk_shipping_method : null;
|
||||
$this->fk_account = $obj->fk_account;
|
||||
$this->transport_mode_supplier_id = $obj->transport_mode_supplier;
|
||||
$this->shipping_method_id = ($obj->fk_shipping_method > 0) ? $obj->fk_shipping_method : null;
|
||||
$this->fk_account = $obj->fk_account;
|
||||
|
||||
$this->client = $obj->client;
|
||||
$this->fournisseur = $obj->fournisseur;
|
||||
$this->client = $obj->client;
|
||||
$this->fournisseur = $obj->fournisseur;
|
||||
|
||||
$this->note = $obj->note_private; // TODO Deprecated for backward comtability
|
||||
$this->note_private = $obj->note_private;
|
||||
|
||||
BIN
htdocs/theme/eldy/img/object_intracommreport.png
Normal file
BIN
htdocs/theme/eldy/img/object_intracommreport.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
BIN
htdocs/theme/md/img/object_intracommreport.png
Normal file
BIN
htdocs/theme/md/img/object_intracommreport.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
Loading…
Reference in New Issue
Block a user