Correzioni per formato data FE
This commit is contained in:
parent
e86b92d9b4
commit
4a793e954c
|
@ -21,6 +21,8 @@ namespace Modules\Fatture\Gestori;
|
|||
|
||||
use Modules\Fatture\Fattura;
|
||||
use Modules\Scadenzario\Scadenza;
|
||||
use Plugins\ImportFE\FatturaElettronica as FatturaElettronicaImport;
|
||||
use Util\XML;
|
||||
|
||||
/**
|
||||
* Classe dedicata alla gestione delle procedure di registrazione delle Scadenze di pagamento per una Fattura, con relativo supporto alla Fatturazione Elettronica per permettere l'importazione delle scadenze eventualmente registrate.
|
||||
|
@ -108,14 +110,14 @@ class Scadenze
|
|||
*/
|
||||
protected function registraScadenzeFE($is_pagato = false)
|
||||
{
|
||||
$xml = \Util\XML::read($this->fattura->getXML());
|
||||
$xml = XML::read($this->fattura->getXML());
|
||||
|
||||
$pagamenti = $xml['FatturaElettronicaBody']['DatiPagamento']['DettaglioPagamento'];
|
||||
if (!empty($pagamenti)) {
|
||||
$rate = isset($pagamenti[0]) ? $pagamenti : [$pagamenti];
|
||||
|
||||
foreach ($rate as $rata) {
|
||||
$scadenza = $rata['DataScadenzaPagamento'] ?: $this->fattura->data;
|
||||
$scadenza = !empty($rata['DataScadenzaPagamento']) ? FatturaElettronicaImport::parseDate($rata['DataScadenzaPagamento']) : $this->fattura->data;
|
||||
$importo = ($this->fattura->isNota()) ? $rata['ImportoPagamento'] : -$rata['ImportoPagamento'];
|
||||
|
||||
self::registraScadenza($this->fattura, $importo, $scadenza, $is_pagato);
|
||||
|
|
|
@ -362,6 +362,9 @@ class FatturaElettronica
|
|||
'xmlns:ds' => 'http://www.w3.org/2000/09/xmldsig#',
|
||||
'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
|
||||
'xsi:schemaLocation' => 'http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2.1 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2.1/Schema_del_file_xml_FatturaPA_versione_1.2.1.xsd',
|
||||
|
||||
// Attributo SistemaEmittente
|
||||
'SistemaEmittente' => 'OpenSTAManager',
|
||||
];
|
||||
foreach ($attributes as $key => $value) {
|
||||
$rootNode->setAttribute($key, $value);
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Plugins\ImportFE\FatturaElettronica;
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
|
@ -170,11 +171,11 @@ if (!empty($pagamenti)) {
|
|||
// Scadenze di pagamento
|
||||
foreach ($metodi as $metodo) {
|
||||
$descrizione = !empty($metodo['ModalitaPagamento']) ? $database->fetchOne('SELECT descrizione FROM fe_modalita_pagamento WHERE codice = '.prepare($metodo['ModalitaPagamento']))['descrizione'] : '';
|
||||
$data = !empty($metodo['DataScadenzaPagamento']) ? Translator::dateToLocale($metodo['DataScadenzaPagamento']).' ' : '';
|
||||
$data = !empty($metodo['DataScadenzaPagamento']) ? FatturaElettronica::parseDate($metodo['DataScadenzaPagamento']) : '';
|
||||
|
||||
echo '
|
||||
<li>
|
||||
'.$data.'
|
||||
'.dateFormat($data).'
|
||||
'.moneyFormat($metodo['ImportoPagamento']).'
|
||||
('.$descrizione.')
|
||||
</li>';
|
||||
|
|
|
@ -313,12 +313,7 @@ class FatturaElettronica
|
|||
public function saveFattura($id_pagamento, $id_sezionale, $id_tipo, $data_registrazione, $ref_fattura)
|
||||
{
|
||||
$dati_generali = $this->getBody()['DatiGenerali']['DatiGeneraliDocumento'];
|
||||
$data = $dati_generali['Data'];
|
||||
|
||||
//Se rilevo che la data contine anche l'orario la formatto togliendo l'orario
|
||||
if(strpos($data, '+')){
|
||||
$data = date('Y-m-d', strtotime($data));
|
||||
}
|
||||
$data = self::parseDate($dati_generali['Data']);
|
||||
|
||||
$fattura = $this->prepareFattura($id_tipo, $data, $id_sezionale, $ref_fattura);
|
||||
$this->fattura = $fattura;
|
||||
|
@ -381,6 +376,11 @@ class FatturaElettronica
|
|||
return $this->getFattura()->id;
|
||||
}
|
||||
|
||||
public static function parseDate($data)
|
||||
{
|
||||
return date('Y-m-d', strtotime($data));
|
||||
}
|
||||
|
||||
protected function prepareFattura($id_tipo, $data, $id_sezionale, $ref_fattura)
|
||||
{
|
||||
$anagrafica = $this->saveAnagrafica();
|
||||
|
|
|
@ -74,7 +74,7 @@ INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `
|
|||
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Giacenze sedi'), 'Fornitore', '(SELECT `ragione_sociale` FROM `an_anagrafiche` WHERE `idanagrafica` = `id_fornitore`)', '6', '1', '0', '0', NULL, NULL, '1', '0', '1'),
|
||||
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Giacenze sedi'), 'Prezzo di acquisto', 'prezzo_acquisto', '6', '1', '0', '1', NULL, NULL, '1', '1', '1'),
|
||||
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Giacenze sedi'), 'Prezzo di vendita', 'prezzo_vendita', '6', '1', '0', '1', NULL, NULL, '1', '1', '1'),
|
||||
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Giacenze sedi'), 'Prezzo vendita ivato', 'IF( co_iva.percentuale IS NOT NULL, (mg_articoli.prezzo_vendita + mg_articoli.prezzo_vendita * co_iva.percentuale / 100), mg_articoli.prezzo_vendita + mg_articoli.prezzo_vendita*(SELECT co_iva.percentuale FROM co_iva INNER JOIN zz_settings ON co_iva.id=zz_settings.valore AND nome=\'Iva predefinita\')/100 )', '8', '1', '0', '1', '', '', '0', '0', '1'),
|
||||
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Giacenze sedi'), 'Prezzo vendita ivato', 'IF( co_iva.percentuale IS NOT NULL, (mg_articoli.prezzo_vendita + mg_articoli.prezzo_vendita * co_iva.percentuale / 100), mg_articoli.prezzo_vendita + mg_articoli.prezzo_vendita*(SELECT co_iva.percentuale FROM co_iva INNER JOIN zz_settings ON co_iva.id=zz_settings.valore AND nome=''Iva predefinita'')/100 )', '8', '1', '0', '1', '', '', '0', '0', '1'),
|
||||
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Giacenze sedi'), 'Barcode', 'mg_articoli.barcode', '2', '1', '0', '0', '', '', '1', '0', '1');
|
||||
|
||||
-- Aggiunta risorse API dedicate alle task in cron
|
||||
|
@ -227,7 +227,7 @@ INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`
|
|||
ALTER TABLE `or_righe_ordini` ADD `confermato` BOOLEAN NOT NULL AFTER `id_dettaglio_fornitore`;
|
||||
UPDATE `or_righe_ordini` SET `confermato` = 1;
|
||||
|
||||
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `mg_articoli` LEFT JOIN an_anagrafiche ON mg_articoli.id_fornitore=an_anagrafiche.idanagrafica LEFT JOIN co_iva ON mg_articoli.idiva_vendita=co_iva.id LEFT JOIN (SELECT SUM(qta-qta_evasa) AS qta_impegnata, idarticolo FROM or_righe_ordini INNER JOIN or_ordini ON or_righe_ordini.idordine=or_ordini.id INNER JOIN or_tipiordine ON or_ordini.idtipoordine=or_tipiordine.id WHERE idstatoordine IN(SELECT id FROM or_statiordine WHERE completato=0) AND or_tipiordine.dir=\'entrata\' AND or_righe_ordini.confermato = 1 GROUP BY idarticolo) a ON a.idarticolo=mg_articoli.id LEFT JOIN mg_categorie ON mg_articoli.id_categoria=mg_categorie.id LEFT JOIN mg_categorie AS sottocategorie ON mg_articoli.id_sottocategoria=sottocategorie.id WHERE 1=1 AND (`mg_articoli`.`deleted_at`) IS NULL HAVING 2=2 ORDER BY `mg_articoli`.`descrizione`' WHERE `zz_modules`.`name` = 'Articoli';
|
||||
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `mg_articoli` LEFT JOIN an_anagrafiche ON mg_articoli.id_fornitore=an_anagrafiche.idanagrafica LEFT JOIN co_iva ON mg_articoli.idiva_vendita=co_iva.id LEFT JOIN (SELECT SUM(qta-qta_evasa) AS qta_impegnata, idarticolo FROM or_righe_ordini INNER JOIN or_ordini ON or_righe_ordini.idordine=or_ordini.id INNER JOIN or_tipiordine ON or_ordini.idtipoordine=or_tipiordine.id WHERE idstatoordine IN(SELECT id FROM or_statiordine WHERE completato=0) AND or_tipiordine.dir=''entrata'' AND or_righe_ordini.confermato = 1 GROUP BY idarticolo) a ON a.idarticolo=mg_articoli.id LEFT JOIN mg_categorie ON mg_articoli.id_categoria=mg_categorie.id LEFT JOIN mg_categorie AS sottocategorie ON mg_articoli.id_sottocategoria=sottocategorie.id WHERE 1=1 AND (`mg_articoli`.`deleted_at`) IS NULL HAVING 2=2 ORDER BY `mg_articoli`.`descrizione`' WHERE `zz_modules`.`name` = 'Articoli';
|
||||
|
||||
-- Aggiunta impostazione per impegnare o meno automaticamente le quantità negli ordini fornitori
|
||||
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Conferma automaticamente le quantità negli ordini fornitore', '1', 'boolean', '1', 'Ordini', NULL, NULL);
|
||||
|
@ -254,16 +254,19 @@ INSERT INTO `fe_causali_pagamento_ritenuta` (`codice`, `descrizione`) VALUES ('V
|
|||
|
||||
UPDATE `fe_causali_pagamento_ritenuta` SET `codice` = 'ZO' WHERE `fe_causali_pagamento_ritenuta`.`codice` = 'Z';
|
||||
|
||||
UPDATE `zz_settings` SET `valore` = 'ZO' WHERE `zz_settings`.`nome` = "Causale ritenuta d'acconto" AND `zz_settings`.`valore` = 'Z';
|
||||
UPDATE `zz_settings` SET `valore` = 'ZO' WHERE `zz_settings`.`nome` = 'Causale ritenuta d''acconto' AND `zz_settings`.`valore` = 'Z';
|
||||
|
||||
-- Disattivazione aliquote IVA con NATURA non più supportata dal tracciato 1.2.1 FE
|
||||
-- andrà doverosamente specificato il sotto codice (esempio N3.1, N3.2 etc)
|
||||
UPDATE `co_iva` SET `deleted_at` = now() WHERE `co_iva`.`codice_natura_fe` IN ('N2','N3','N6');
|
||||
|
||||
-- Introduzione tabella di supporto per nodo <TipoRitenuta> tracciato 1.2.1 FE
|
||||
CREATE TABLE IF NOT EXISTS `fe_tipi_ritenuta` (
|
||||
`codice` varchar(4) NOT NULL,
|
||||
`descrizione` varchar(255) NOT NULL,
|
||||
PRIMARY KEY (`codice`)
|
||||
`codice` varchar(4) NOT NULL,
|
||||
`descrizione` varchar(255) NOT NULL,
|
||||
PRIMARY KEY (`codice`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
|
||||
INSERT INTO `fe_tipi_ritenuta` (`codice`, `descrizione`) VALUES
|
||||
('RT01', 'Ritenuta persone fisiche'),
|
||||
('RT02', 'Ritenuta persone giuridiche'),
|
||||
|
|
Loading…
Reference in New Issue