You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// Aggiungi gli ordini senza riferimento a riga specifica
606
+
if (isset($dati_ordini_documento)) {
607
+
foreach ($dati_ordini_documentoas$ordine) {
608
+
$riferimento_fe[] = tr('Ordine _NUMERO_ del _DATA_',
609
+
[
610
+
'_NUMERO_' => $ordine['numero'],
611
+
'_DATA_' => $ordine['data'],
612
+
]);
613
+
}
614
+
}
615
+
616
+
// Aggiungi i DDT senza riferimento a riga specifica
617
+
if (isset($dati_ddt_documento)) {
618
+
foreach ($dati_ddt_documentoas$ddt) {
619
+
$riferimento_fe[] = tr('DDT _NUMERO_ del _DATA_',
620
+
[
621
+
'_NUMERO_' => $ddt['numero'],
622
+
'_DATA_' => $ddt['data'],
623
+
]);
624
+
}
625
+
}
626
+
597
627
// Iterazione sulle singole righe
598
628
$righe = $fattura->getRighe();
599
629
foreach ($righeas$key => $riga) {
@@ -644,48 +674,50 @@
644
674
}
645
675
}
646
676
647
-
// Se nella fattura elettronica è indicato un DDT cerco quel documento specifico
648
-
$ddt = $dati_ddt[$numero_linea];
649
-
$query = "SELECT
650
-
`dt_righe_ddt`.`id`,
651
-
`dt_righe_ddt`.`idddt` AS id_documento,
652
-
`dt_righe_ddt`.`is_descrizione`,
653
-
`dt_righe_ddt`.`idarticolo`,
654
-
`dt_righe_ddt`.`is_sconto`, 'ddt' AS ref,
655
-
CONCAT('DDT num. ', IF(`numero_esterno` != '', `numero_esterno`, `numero`), ' del ', DATE_FORMAT(`data`, '%d/%m/%Y'), ' [', `dt_statiddt_lang`.`title`, ']') AS opzione
656
-
FROM
657
-
`dt_righe_ddt`
658
-
INNER JOIN `dt_ddt` ON `dt_ddt`.`id` = `dt_righe_ddt`.`idddt`
659
-
INNER JOIN `dt_statiddt` ON `dt_statiddt`.`id` = `dt_ddt`.`idstatoddt`
660
-
LEFT JOIN `dt_statiddt_lang` ON `dt_statiddt_lang`.`id_record` = `dt_statiddt`.`id` AND `dt_statiddt_lang`.`id_lang` = ".prepare(Models\Locale::getDefault()->id).'
661
-
WHERE
662
-
`dt_ddt`.`numero_esterno` = '.prepare($ddt['numero']).' AND
663
-
YEAR(`dt_ddt`.`data`) = '.prepare($ddt['anno']).' AND
664
-
`dt_ddt`.`idanagrafica` = '.prepare($anagrafica->id).' AND
665
-
`dt_righe_ddt`.`qta` > `dt_righe_ddt`.`qta_evasa` AND
// Se nella fattura elettronica è indicato un DDT cerco SOLO quel documento specifico
678
+
if (isset($dati_ddt[$numero_linea])) {
679
+
$ddt = $dati_ddt[$numero_linea];
680
+
$query = "SELECT
681
+
`dt_righe_ddt`.`id`,
682
+
`dt_righe_ddt`.`idddt` AS id_documento,
683
+
`dt_righe_ddt`.`is_descrizione`,
684
+
`dt_righe_ddt`.`idarticolo`,
685
+
`dt_righe_ddt`.`is_sconto`, 'ddt' AS ref,
686
+
CONCAT('DDT num. ', IF(`numero_esterno` != '', `numero_esterno`, `numero`), ' del ', DATE_FORMAT(`data`, '%d/%m/%Y'), ' [', `dt_statiddt_lang`.`title`, ']') AS opzione
687
+
FROM
688
+
`dt_righe_ddt`
689
+
INNER JOIN `dt_ddt` ON `dt_ddt`.`id` = `dt_righe_ddt`.`idddt`
690
+
INNER JOIN `dt_statiddt` ON `dt_statiddt`.`id` = `dt_ddt`.`idstatoddt`
691
+
LEFT JOIN `dt_statiddt_lang` ON `dt_statiddt_lang`.`id_record` = `dt_statiddt`.`id` AND `dt_statiddt_lang`.`id_lang` = ".prepare(Models\Locale::getDefault()->id).'
692
+
WHERE
693
+
`dt_ddt`.`numero_esterno` = '.prepare($ddt['numero']).' AND
694
+
YEAR(`dt_ddt`.`data`) = '.prepare($ddt['anno']).' AND
695
+
`dt_ddt`.`idanagrafica` = '.prepare($anagrafica->id).' AND
696
+
`dt_righe_ddt`.`qta` > `dt_righe_ddt`.`qta_evasa` AND
{[ "type": "checkbox", "label": "'.tr('Movimenta gli articoli').'", "name": "movimentazione", "value": "'.setting('Movimenta magazzino da fatture di vendita').'" ]}
388
+
</div>
377
389
378
390
<div class="col-md-3">
379
391
{[ "type": "checkbox", "label": "'.tr('Creazione automatica articoli').'", "name": "flag_crea_articoli", "value": 0, "help": "'.tr('Nel caso di righe con almeno un nodo \'CodiceArticolo\', il gestionale procede alla creazione dell\'articolo se la riga non risulta assegnata manualmente').'." ]}
@@ -434,24 +446,40 @@ function cleanup(){
434
446
435
447
// Riorganizzazione dati ordini per numero di riga
// Prendo il codice articolo dal primo nodo CodiceValore che trovo
491
519
$codice_principale = $codici[0]['CodiceValore'];
492
520
if (!empty($codice_principale)) {
521
+
if (!empty($anagrafica) && empty($id_articolo)) {
522
+
$result = $database->fetchOne('SELECT `id_articolo` AS id FROM `mg_fornitore_articolo` WHERE `codice_fornitore` = '.prepare($codice_principale).' AND `id_fornitore` = '.prepare($anagrafica->id));
523
+
$id_articolo = $result['id'] ?? null;
524
+
if (empty($id_articolo)) {
525
+
$result = $database->fetchOne('SELECT `id_articolo` AS id FROM `mg_fornitore_articolo` WHERE REPLACE(`codice_fornitore`, " ", "") = '.prepare($codice_principale).' AND `id_fornitore` = '.prepare($anagrafica->id));
526
+
$id_articolo = $result['id'] ?? null;
527
+
}
528
+
}
529
+
493
530
if (empty($id_articolo)) {
494
-
$id_articolo = $database->fetchOne('SELECT `id` FROM `mg_articoli` WHERE `codice` = '.prepare($codice_principale))['id'];
531
+
$result = $database->fetchOne('SELECT `id` FROM `mg_articoli` WHERE `codice` = '.prepare($codice_principale));
532
+
$id_articolo = $result['id'] ?? null;
495
533
if (empty($id_articolo)) {
496
-
$id_articolo = $database->fetchOne('SELECT `id` FROM `mg_articoli` WHERE REPLACE(`codice`, " ", "") = '.prepare($codice_principale))['id'];
534
+
$result = $database->fetchOne('SELECT `id` FROM `mg_articoli` WHERE REPLACE(`codice`, " ", "") = '.prepare($codice_principale));
535
+
$id_articolo = $result['id'] ?? null;
497
536
}
498
537
}
499
538
500
539
$idconto_vendita = $database->fetchOne('SELECT `idconto_vendita` FROM `mg_articoli` WHERE `id` = '.prepare($id_articolo))['idconto_vendita'];
501
540
}
502
541
503
542
$idconto_vendita = $is_autofattura ? setting('Conto per autofattura') : $idconto_vendita;
0 commit comments