1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-16 11:30:55 +01:00

Suddivisione sedi in partenza e destinazione su tutti i moduli

This commit is contained in:
NicNal 2019-05-29 19:17:57 +02:00
parent c029f947c8
commit 0878a5709a
41 changed files with 6040 additions and 4692 deletions

View File

@ -2,7 +2,7 @@
msgid ""
msgstr ""
"Project-Id-Version: OpenSTAManager\n"
"POT-Creation-Date: 2019-04-12 17:56-0700\n"
"POT-Creation-Date: 2019-04-18 12:18+0200\n"
"PO-Revision-Date: 2017-09-06 09:35+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@ -10,7 +10,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.1\n"
"X-Generator: Poedit 2.0.6\n"
"X-Poedit-Basepath: ..\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-SourceCharset: UTF-8\n"
@ -74,7 +74,7 @@ msgid "Errore durante l'invio dell'email"
msgstr ""
#: add.php:90 include/init/configuration.php:278 include/top.php:79
#: modules/fatture/edit.php:665 modules/fatture/edit.php:674
#: modules/fatture/edit.php:664 modules/fatture/edit.php:673
#: modules/import/edit.php:163 modules/smtp/buttons.php:32
#: modules/utenti/edit.php:181 modules/viste/edit.php:466
#: plugins/exportFE/edit.php:246 plugins/importFE/edit.php:43
@ -262,7 +262,7 @@ msgid "Creazione"
msgstr ""
#: editor.php:250 include/common/form.php:19
#: modules/interventi/add_articolo.php:41 modules/interventi/add_righe.php:27
#: modules/interventi/add_articolo.php:42 modules/interventi/add_righe.php:28
#: modules/interventi/manage_sessione.php:15 modules/utenti/user.php:32
#: plugins/pianificazione_interventi/add_articolo.php:42
#: plugins/pianificazione_interventi/add_righe.php:26
@ -306,7 +306,7 @@ msgstr ""
#: modules/automezzi/add_articolo.php:19
#: modules/automezzi/row-list-articoli.php:13 modules/contratti/edit.php:299
#: modules/ddt/edit.php:204 modules/fatture/add_serial.php:59
#: modules/fatture/edit.php:487 modules/interventi/add_articolo.php:83
#: modules/fatture/edit.php:486 modules/interventi/add_articolo.php:84
#: modules/interventi/ajax_articoli.php:14 modules/ordini/edit.php:144
#: modules/preventivi/edit.php:169 plugins/importFE/rows.php:157
#: plugins/pianificazione_interventi/add_articolo.php:86
@ -314,15 +314,15 @@ msgstr ""
msgid "Articolo"
msgstr ""
#: include/common/articolo.php:36 modules/interventi/add_articolo.php:148
#: include/common/articolo.php:36 modules/interventi/add_articolo.php:149
msgid "Visualizza ultimi prezzi (cliente)"
msgstr ""
#: include/common/articolo.php:43 modules/interventi/add_articolo.php:155
#: include/common/articolo.php:43 modules/interventi/add_articolo.php:156
msgid "Visualizza ultimi prezzi (acquisto)"
msgstr ""
#: include/common/articolo.php:50 modules/interventi/add_articolo.php:162
#: include/common/articolo.php:50 modules/interventi/add_articolo.php:163
msgid "Visualizza ultimi prezzi (vendita)"
msgstr ""
@ -340,7 +340,7 @@ msgstr ""
msgid "Calcola ritenuta d'acconto su"
msgstr ""
#: include/common/conti.php:84 modules/fatture/edit.php:258
#: include/common/conti.php:84 modules/fatture/edit.php:257
#: modules/fatture/row-list.php:419
msgid "Ritenuta contributi"
msgstr ""
@ -364,8 +364,8 @@ msgstr ""
#: modules/contratti/widgets/contratti.pianificazionedashboard.interventi.php:54
#: modules/dashboard/actions.php:123 modules/ddt/edit.php:214
#: modules/ddt/row-list.php:8 modules/fatture/add_intervento.php:70
#: modules/fatture/edit.php:497 modules/fatture/row-list.php:14
#: modules/interventi/add_articolo.php:91 modules/interventi/add_righe.php:56
#: modules/fatture/edit.php:496 modules/fatture/row-list.php:14
#: modules/interventi/add_articolo.php:92 modules/interventi/add_righe.php:57
#: modules/interventi/ajax_righe.php:18 modules/interventi/edit.php:126
#: modules/interventi/plugins/my_impianti.interventi.php:21
#: modules/interventi/widgets/interventi.pianificazionedashboard.interventi.php:55
@ -428,8 +428,8 @@ msgstr ""
#: modules/contratti/plugins/contratti.consuntivo.php:154
#: modules/contratti/plugins/contratti.consuntivo.php:187
#: modules/contratti/row-list.php:15 modules/ddt/row-list.php:9
#: modules/fatture/row-list.php:15 modules/interventi/add_articolo.php:107
#: modules/interventi/add_righe.php:65 modules/interventi/ajax_articoli.php:15
#: modules/fatture/row-list.php:15 modules/interventi/add_articolo.php:108
#: modules/interventi/add_righe.php:66 modules/interventi/ajax_articoli.php:15
#: modules/interventi/ajax_righe.php:19 modules/ordini/row-list.php:11
#: modules/preventivi/plugins/preventivi.consuntivo.php:139
#: modules/preventivi/plugins/preventivi.consuntivo.php:172
@ -483,8 +483,8 @@ msgstr ""
#: modules/automezzi/row-list-articoli.php:42 modules/contratti/row-list.php:18
#: modules/contratti/row-list.php:198 modules/ddt/row-list.php:12
#: modules/fatture/add_intervento.php:93 modules/fatture/row-list.php:18
#: modules/fatture/row-list.php:360 modules/interventi/add_articolo.php:119
#: modules/interventi/add_righe.php:77 modules/interventi/ajax_articoli.php:25
#: modules/fatture/row-list.php:360 modules/interventi/add_articolo.php:120
#: modules/interventi/add_righe.php:78 modules/interventi/ajax_articoli.php:25
#: modules/interventi/ajax_righe.php:25 modules/ordini/row-list.php:14
#: modules/ordini/row-list.php:263 modules/preventivi/row-list.php:19
#: plugins/pianificazione_interventi/add_articolo.php:123
@ -496,7 +496,7 @@ msgid "Iva"
msgstr ""
#: include/common/riga.php:25 modules/articoli/edit.php:88
#: modules/interventi/add_articolo.php:113 modules/interventi/add_righe.php:71
#: modules/interventi/add_articolo.php:114 modules/interventi/add_righe.php:72
#: plugins/pianificazione_interventi/add_articolo.php:109
#: plugins/pianificazione_interventi/add_righe.php:69
msgid "Unità di misura"
@ -523,7 +523,7 @@ msgid "Guadagno"
msgstr ""
#: include/common/riga.php:84 include/common/sconto.php:51
#: modules/interventi/add_articolo.php:139 modules/interventi/add_righe.php:97
#: modules/interventi/add_articolo.php:140 modules/interventi/add_righe.php:98
#: plugins/pianificazione_interventi/add_articolo.php:135
#: plugins/pianificazione_interventi/add_righe.php:95 update/2_4_9.php:19
msgid "Sconto unitario"
@ -1069,8 +1069,8 @@ msgid "Procedere l'aggiornamento?"
msgstr ""
#: include/init/update.php:154 modules/ddt/bulk.php:141
#: modules/fatture/bulk.php:273 modules/fatture/bulk.php:284
#: modules/fatture/bulk.php:295 plugins/receiptFE/edit.php:63
#: modules/fatture/bulk.php:295 modules/fatture/bulk.php:306
#: modules/fatture/bulk.php:317 plugins/receiptFE/edit.php:63
msgid "Procedi"
msgstr ""
@ -1195,7 +1195,7 @@ msgstr ""
#: modules/categorie_impianti/edit.php:58 modules/causali/edit.php:45
#: modules/contratti/edit.php:478 modules/custom_fields/edit.php:57
#: modules/ddt/edit.php:299 modules/emails/edit.php:129
#: modules/fatture/edit.php:629 modules/gestione_componenti/edit.php:58
#: modules/fatture/edit.php:628 modules/gestione_componenti/edit.php:58
#: modules/gestione_documentale/edit.php:43 modules/interventi/edit.php:432
#: modules/iva/edit.php:87 modules/listini/edit.php:38
#: modules/misure/edit.php:45 modules/modelli_primanota/edit.php:119
@ -1826,7 +1826,7 @@ msgstr ""
#: modules/aggiornamenti/edit.php:105 modules/backups/edit.php:49
#: modules/contratti/plugins/contratti.ordiniservizio.interventi.php:104
#: modules/contratti/plugins/contratti.ordiniservizio.interventi.php:130
#: modules/fatture/edit.php:596 modules/utenti/edit.php:53
#: modules/fatture/edit.php:595 modules/utenti/edit.php:53
#: modules/utenti/edit.php:56 modules/utenti/edit.php:72
#: modules/utenti/edit.php:75 modules/utenti/edit.php:85
#: plugins/importFE/edit.php:15
@ -2041,7 +2041,7 @@ msgstr ""
msgid "Aggiunta nuova anagrafica di tipo _TYPE_"
msgstr ""
#: modules/anagrafiche/actions.php:198
#: modules/anagrafiche/actions.php:213
msgid "Anagrafica eliminata!"
msgstr ""
@ -2463,7 +2463,7 @@ msgid ""
"costituiti.</li></ul>"
msgstr ""
#: modules/anagrafiche/edit.php:462 modules/fatture/edit.php:242
#: modules/anagrafiche/edit.php:462 modules/fatture/edit.php:241
msgid "Split payment"
msgstr ""
@ -2507,7 +2507,7 @@ msgstr ""
#: modules/banche/edit.php:40
#: modules/contratti/plugins/contratti.ordiniservizio.interventi.php:66
#: modules/dashboard/actions.php:109 modules/ddt/edit.php:169
#: modules/fatture/edit.php:265 modules/listini/edit.php:28
#: modules/fatture/edit.php:264 modules/listini/edit.php:28
#: modules/ordini/edit.php:90 modules/segmenti/edit.php:65
#: modules/smtp/edit.php:73 templates/ddt/footer.php:12
#: templates/ddt/footer.php:60 templates/fatture/body.php:247
@ -2549,82 +2549,45 @@ msgstr ""
msgid "Questa anagrafica è stata eliminata"
msgstr ""
#: modules/anagrafiche/plugins/statistiche.php:30
msgid "Interventi"
#: modules/anagrafiche/plugins/statistiche.php:20
msgid "Preventivi"
msgstr ""
#: modules/anagrafiche/plugins/statistiche.php:35
msgid ""
"Sono stati svolti <strong>_NUMBER_ interventi</strong> per un totale di "
"_MONEY_"
msgstr ""
#: modules/anagrafiche/plugins/statistiche.php:39
#: modules/anagrafiche/plugins/statistiche.php:77
#: modules/anagrafiche/plugins/statistiche.php:117
#: modules/anagrafiche/plugins/statistiche.php:21
#: modules/anagrafiche/plugins/statistiche.php:46
#: modules/anagrafiche/plugins/statistiche.php:72
#: modules/anagrafiche/plugins/statistiche.php:107
#: modules/anagrafiche/plugins/statistiche.php:132
#: modules/anagrafiche/plugins/statistiche.php:157
#: modules/anagrafiche/plugins/statistiche.php:186
#: modules/contratti/plugins/contratti.ordiniservizio.php:145
#: plugins/exportFE/edit.php:169 plugins/importFE/rows.php:51
msgid "Visualizza"
msgstr ""
#: modules/anagrafiche/plugins/statistiche.php:42
msgid "Nessun intervento"
msgstr ""
#: modules/anagrafiche/plugins/statistiche.php:68
msgid "Preventivi"
msgstr ""
#: modules/anagrafiche/plugins/statistiche.php:73
msgid ""
"Sono stati fatti <strong>_NUMBER_ preventivi</strong> per un totale di "
"_MONEY_"
msgstr ""
#: modules/anagrafiche/plugins/statistiche.php:80
msgid "Nessun preventivo"
msgstr ""
#: modules/anagrafiche/plugins/statistiche.php:108
#: modules/anagrafiche/plugins/statistiche.php:45
msgid "Contratti"
msgstr ""
#: modules/anagrafiche/plugins/statistiche.php:113
msgid ""
"Sono stati stipulati <strong>_NUMBER_ contratti</strong> per un totale di "
"_MONEY_"
#: modules/anagrafiche/plugins/statistiche.php:71
msgid "Ordini cliente"
msgstr ""
#: modules/anagrafiche/plugins/statistiche.php:120
msgid "Nessun contratto"
#: modules/anagrafiche/plugins/statistiche.php:106
#: modules/contratti/plugins/contratti.consuntivo.php:46
#: modules/preventivi/plugins/preventivi.consuntivo.php:31
#: modules/tecnici_tariffe/edit.php:25 templates/contratti_cons/body.php:86
#: templates/preventivi_cons/body.php:68
msgid "Attività"
msgstr ""
#: modules/anagrafiche/plugins/statistiche.php:132
#: modules/anagrafiche/plugins/statistiche.php:131
msgid "Ddt in uscita"
msgstr ""
#: modules/anagrafiche/plugins/statistiche.php:156
msgid "Fatture"
msgstr ""
#: modules/anagrafiche/plugins/statistiche.php:153
msgid ""
"Sono state emesse <strong>_NUMBER_ fatture di vendita</strong> per un totale "
"di _MONEY_"
msgstr ""
#: modules/anagrafiche/plugins/statistiche.php:160
msgid "Nessuna fattura di vendita"
msgstr ""
#: modules/anagrafiche/plugins/statistiche.php:182
msgid ""
"Sono state registrate <strong>_NUMBER_ fatture di acquisto</strong> per un "
"totale di _MONEY_"
msgstr ""
#: modules/anagrafiche/plugins/statistiche.php:189
msgid "Nessuna fattura di acquisto"
msgstr ""
#: modules/anagrafiche/src/Anagrafica.php:109
#: modules/tecnici_tariffe/actions.php:71
#: modules/tecnici_tariffe/actions.php:80
@ -3199,7 +3162,7 @@ msgid "Rimuovere articolo dell'automezzo?"
msgstr ""
#: modules/automezzi/row-list-articoli.php:61
#: modules/interventi/ajax_articoli.php:146
#: modules/interventi/ajax_articoli.php:145
msgid "Nessun articolo presente"
msgstr ""
@ -3507,7 +3470,7 @@ msgid "Sottocategorie"
msgstr ""
#: modules/categorie_articoli/edit.php:43 modules/contratti/edit.php:303
#: modules/ddt/edit.php:208 modules/fatture/edit.php:491
#: modules/ddt/edit.php:208 modules/fatture/edit.php:490
#: modules/ordini/edit.php:148 modules/preventivi/edit.php:173
msgid "Aggiungi riga"
msgstr ""
@ -3838,32 +3801,32 @@ msgid "Righe"
msgstr ""
#: modules/contratti/edit.php:298 modules/ddt/edit.php:203
#: modules/fatture/edit.php:486 modules/interventi/edit.php:234
#: modules/fatture/edit.php:485 modules/interventi/edit.php:234
#: modules/ordini/edit.php:143 modules/preventivi/edit.php:168
#: plugins/pianificazione_interventi/pianficazione.php:126
msgid "Aggiungi articolo"
msgstr ""
#: modules/contratti/edit.php:304 modules/ddt/edit.php:209
#: modules/fatture/edit.php:492 modules/ordini/edit.php:149
#: modules/fatture/edit.php:491 modules/ordini/edit.php:149
#: modules/preventivi/edit.php:174
msgid "Riga"
msgstr ""
#: modules/contratti/edit.php:308 modules/ddt/edit.php:213
#: modules/fatture/edit.php:496 modules/ordini/edit.php:153
#: modules/fatture/edit.php:495 modules/ordini/edit.php:153
#: modules/preventivi/edit.php:178
msgid "Aggiungi descrizione"
msgstr ""
#: modules/contratti/edit.php:313 modules/ddt/edit.php:218
#: modules/fatture/edit.php:501 modules/interventi/edit.php:256
#: modules/fatture/edit.php:500 modules/interventi/edit.php:256
#: modules/ordini/edit.php:158 modules/preventivi/edit.php:183
msgid "Aggiungi sconto/maggiorazione"
msgstr ""
#: modules/contratti/edit.php:314 modules/ddt/edit.php:219
#: modules/fatture/edit.php:502 modules/interventi/edit.php:257
#: modules/fatture/edit.php:501 modules/interventi/edit.php:257
#: modules/ordini/edit.php:159 modules/preventivi/edit.php:184
msgid "Sconto/maggiorazione"
msgstr ""
@ -3885,13 +3848,6 @@ msgstr ""
msgid "Tipo di fattura"
msgstr ""
#: modules/contratti/plugins/contratti.consuntivo.php:46
#: modules/preventivi/plugins/preventivi.consuntivo.php:31
#: modules/tecnici_tariffe/edit.php:25 templates/contratti_cons/body.php:86
#: templates/preventivi_cons/body.php:68
msgid "Attività"
msgstr ""
#: modules/contratti/plugins/contratti.consuntivo.php:47
#: modules/contratti/plugins/contratti.consuntivo.php:106
#: modules/interventi/ajax_tecnici.php:40
@ -4588,7 +4544,7 @@ msgstr ""
msgid "Ddt eliminati!"
msgstr ""
#: modules/ddt/bulk.php:135 modules/fatture/bulk.php:266
#: modules/ddt/bulk.php:135 modules/fatture/bulk.php:288
msgid "Elimina selezionati"
msgstr ""
@ -4621,17 +4577,17 @@ msgstr ""
msgid "Destinazione merce"
msgstr ""
#: modules/ddt/edit.php:111 modules/fatture/edit.php:289
#: modules/ddt/edit.php:111 modules/fatture/edit.php:288
#: templates/ddt/footer.php:74 templates/fatture/footer.php:362
msgid "Aspetto beni"
msgstr ""
#: modules/ddt/edit.php:115 modules/fatture/edit.php:293
#: modules/ddt/edit.php:115 modules/fatture/edit.php:292
#: templates/ddt/footer.php:82 templates/fatture/footer.php:370
msgid "Causale trasporto"
msgstr ""
#: modules/ddt/edit.php:119 modules/fatture/edit.php:297
#: modules/ddt/edit.php:119 modules/fatture/edit.php:296
#: templates/ddt/footer.php:86 templates/fatture/footer.php:374
msgid "Porto"
msgstr ""
@ -4642,7 +4598,7 @@ msgid ""
"<li>Assegnato pagamento del trasporto a carico del destinatario</li> </ul>"
msgstr ""
#: modules/ddt/edit.php:123 modules/fatture/edit.php:301
#: modules/ddt/edit.php:123 modules/fatture/edit.php:300
#: templates/ddt/footer.php:78 templates/fatture/footer.php:366
msgid "Num. colli"
msgstr ""
@ -4655,23 +4611,23 @@ msgstr ""
msgid "Pagamento"
msgstr ""
#: modules/ddt/edit.php:133 modules/fatture/edit.php:307
#: modules/ddt/edit.php:133 modules/fatture/edit.php:306
#: templates/ddt/footer.php:122 templates/fatture/footer.php:402
msgid "Tipo di spedizione"
msgstr ""
#: modules/ddt/edit.php:137 modules/ddt/edit.php:146 modules/ddt/edit.php:152
#: modules/fatture/edit.php:311 modules/fatture/edit.php:319
#: modules/fatture/edit.php:325 templates/ddt/footer.php:118
#: modules/fatture/edit.php:310 modules/fatture/edit.php:318
#: modules/fatture/edit.php:324 templates/ddt/footer.php:118
msgid "Vettore"
msgstr ""
#: modules/ddt/edit.php:175 modules/fatture/edit.php:271
#: modules/ddt/edit.php:175 modules/fatture/edit.php:270
#: modules/ordini/edit.php:96
msgid "Note aggiuntive"
msgstr ""
#: modules/ddt/edit.php:175 modules/fatture/edit.php:271
#: modules/ddt/edit.php:175 modules/fatture/edit.php:270
msgid "Note interne."
msgstr ""
@ -4851,29 +4807,29 @@ msgid ""
"generate"
msgstr ""
#: modules/fatture/bulk.php:270
#: modules/fatture/bulk.php:292 modules/fatture/buttons.php:66
msgid "Registra contabile pagamento"
msgstr ""
#: modules/fatture/bulk.php:272
#: modules/fatture/bulk.php:294
msgid ""
"Vuoi aggiungere un movimento contabile per le fatture selezionate? (le "
"fatture dovranno essere in stato emessa altrimenti non verranno elaborate)"
msgstr ""
#: modules/fatture/bulk.php:281 modules/interventi/bulk.php:131
#: modules/fatture/bulk.php:303 modules/interventi/bulk.php:131
msgid "Esporta stampe"
msgstr ""
#: modules/fatture/bulk.php:283
#: modules/fatture/bulk.php:305
msgid "Vuoi davvero esportare tutte le stampe in un archivio?"
msgstr ""
#: modules/fatture/bulk.php:292
#: modules/fatture/bulk.php:314
msgid "Esporta XML"
msgstr ""
#: modules/fatture/bulk.php:294
#: modules/fatture/bulk.php:316
msgid "Vuoi davvero esportare tutte le fatture elettroniche in un archivio?"
msgstr ""
@ -4909,10 +4865,6 @@ msgstr ""
msgid "Aggiungi prima nota"
msgstr ""
#: modules/fatture/buttons.php:66
msgid "Registrazione contabile pagamento"
msgstr ""
#: modules/fatture/buttons.php:72
msgid ""
"Se riapri questa fattura verrà azzerato lo scadenzario e la prima nota. "
@ -4992,90 +4944,90 @@ msgstr ""
msgid "Applicato solo se il totale della fattura è maggiore di _MONEY_"
msgstr ""
#: modules/fatture/edit.php:242
#: modules/fatture/edit.php:241
msgid ""
"Abilita lo split payment per questo documento. Le aliquote iva con natura N6 "
"(reverse charge) non saranno disponibili."
msgstr ""
#: modules/fatture/edit.php:250
#: modules/fatture/edit.php:249
msgid "Fattura per conto terzi"
msgstr ""
#: modules/fatture/edit.php:250
#: modules/fatture/edit.php:249
msgid "Nell'xml della FE imposta il fornitore ("
msgstr ""
#: modules/fatture/edit.php:265
#: modules/fatture/edit.php:264
msgid "Note visibili anche in fattura."
msgstr ""
#: modules/fatture/edit.php:283
#: modules/fatture/edit.php:282
msgid "Dati Fattura accompagnatoria"
msgstr ""
#: modules/fatture/edit.php:396
#: modules/fatture/edit.php:395
msgid "Tipo Resa"
msgstr ""
#: modules/fatture/edit.php:434
#: modules/fatture/edit.php:433
msgid ""
"Interventi completati non collegati a preventivi o contratti e che non siano "
"già stati fatturati."
msgstr ""
#: modules/fatture/edit.php:444
#: modules/fatture/edit.php:443
msgid "Preventivi accettati, in attesa di conferma o in lavorazione."
msgstr ""
#: modules/fatture/edit.php:454
#: modules/fatture/edit.php:453
msgid "Contratti accettati, in attesa di conferma o in lavorazione."
msgstr ""
#: modules/fatture/edit.php:539
#: modules/fatture/edit.php:538
msgid "Controllo sui totali del documento e della fattura elettronica in corso"
msgstr ""
#: modules/fatture/edit.php:558
#: modules/fatture/edit.php:557
msgid ""
"Il file XML non contiene il nodo ''ImportoTotaleDocumento'': impossibile "
"controllare corrispondenza dei totali"
msgstr ""
#: modules/fatture/edit.php:560
#: modules/fatture/edit.php:559
msgid "Il totale del file XML corrisponde a quello calcolato dal gestionale"
msgstr ""
#: modules/fatture/edit.php:562
#: modules/fatture/edit.php:561
msgid ""
"Il totale del file XML non corrisponde a quello calcolato dal gestionale: "
"previsto _XML_, calcolato _CALC_"
msgstr ""
#: modules/fatture/edit.php:580
#: modules/fatture/edit.php:579
msgid ""
"Per allegare un documento alla fattura elettronica caricare il file PDF "
"specificando come categoria \"Fattura Elettronica\""
msgstr ""
#: modules/fatture/edit.php:593
#: modules/fatture/edit.php:592
msgid "Desideri ricalcolare le scadenze?"
msgstr ""
#: modules/fatture/edit.php:610
#: modules/fatture/edit.php:609
msgid "Note di credito collegate"
msgstr ""
#: modules/fatture/edit.php:612 modules/fatture/row-list.php:142
#: modules/fatture/edit.php:611 modules/fatture/row-list.php:142
#: templates/fatture/body.php:109
msgid "Rif. fattura _NUM_ del _DATE_"
msgstr ""
#: modules/fatture/edit.php:665 plugins/exportFE/edit.php:246
#: modules/fatture/edit.php:664 plugins/exportFE/edit.php:246
msgid "Errore durante il salvataggio"
msgstr ""
#: modules/fatture/edit.php:675
#: modules/fatture/edit.php:674
msgid "Alcuni campi obbligatori non sono stati compilati correttamente"
msgstr ""
@ -5288,16 +5240,16 @@ msgstr ""
msgid "-Seleziona un\\'opzione-"
msgstr ""
#: modules/interventi/add_articolo.php:99
#: modules/interventi/add_articolo.php:100
msgid "Impianto su cui installare"
msgstr ""
#: modules/interventi/add_articolo.php:127 modules/interventi/add_righe.php:85
#: modules/interventi/add_articolo.php:128 modules/interventi/add_righe.php:86
#: plugins/pianificazione_interventi/add_righe.php:83
msgid "Prezzo di acquisto (un.)"
msgstr ""
#: modules/interventi/add_articolo.php:133 modules/interventi/add_righe.php:91
#: modules/interventi/add_articolo.php:134 modules/interventi/add_righe.php:92
#: plugins/pianificazione_interventi/add_righe.php:89
msgid "Prezzo di vendita (un.)"
msgstr ""
@ -5322,12 +5274,12 @@ msgstr ""
msgid "Salva firma"
msgstr ""
#: modules/interventi/ajax_articoli.php:128
#: modules/interventi/ajax_articoli.php:133
#: modules/interventi/ajax_articoli.php:127
#: modules/interventi/ajax_articoli.php:132
msgid "Modifica articoli"
msgstr ""
#: modules/interventi/ajax_articoli.php:135
#: modules/interventi/ajax_articoli.php:134
msgid "Riportare questo articolo in magazzino?"
msgstr ""
@ -5365,7 +5317,7 @@ msgid "Subtotale"
msgstr ""
#: modules/interventi/ajax_righe.php:96
#: plugins/pianificazione_interventi/ajax_articoli.php:125
#: plugins/pianificazione_interventi/ajax_articoli.php:124
#: plugins/pianificazione_interventi/ajax_righe.php:91
msgid "Modifica spesa"
msgstr ""
@ -6019,7 +5971,7 @@ msgstr ""
msgid "Vai alla fattura"
msgstr ""
#: modules/primanota/edit.php:40
#: modules/primanota/edit.php:39
msgid "Vai alla fattura n. "
msgstr ""
@ -7237,7 +7189,7 @@ msgstr ""
msgid "Invio fallito"
msgstr ""
#: plugins/exportFE/src/FatturaElettronica.php:1265
#: plugins/exportFE/src/FatturaElettronica.php:1266
#: plugins/importFE/src/FatturaElettronica.php:317
#: plugins/importFE/src/FatturaElettronica.php:345
#: plugins/receiptFE/src/Ricevuta.php:92
@ -7368,15 +7320,15 @@ msgstr ""
msgid "Nessun promemoria pianificato"
msgstr ""
#: plugins/pianificazione_interventi/ajax_articoli.php:129
#: plugins/pianificazione_interventi/ajax_articoli.php:128
msgid "Elimina materiale"
msgstr ""
#: plugins/pianificazione_interventi/ajax_articoli.php:129
#: plugins/pianificazione_interventi/ajax_articoli.php:128
msgid "Eliminare questo materiale?"
msgstr ""
#: plugins/pianificazione_interventi/ajax_articoli.php:143
#: plugins/pianificazione_interventi/ajax_articoli.php:142
msgid "Nessun articolo caricato"
msgstr ""

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -200,7 +200,7 @@ switch ($resource) {
case 'sedi':
if (isset($superselect['idanagrafica'])) {
$query = "SELECT * FROM (SELECT 0 AS id, 'Sede legale' AS descrizione UNION SELECT id, CONCAT_WS(' - ', nomesede, citta) FROM an_sedi |where|) AS tab |filter| ORDER BY descrizione";
$query = "SELECT * FROM (SELECT '0' AS id, 'Sede legale' AS descrizione UNION SELECT id, CONCAT_WS(' - ', nomesede, citta) FROM an_sedi |where|) AS tab |filter| ORDER BY descrizione";
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
@ -208,6 +208,27 @@ switch ($resource) {
$where[] = 'idanagrafica='.prepare($superselect['idanagrafica']);
if (!empty($search)) {
$search_fields[] = 'nomesede LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
}
}
break;
case 'sedi_azienda':
if (isset($superselect['idanagrafica'])) {
$query = "SELECT * FROM (SELECT '0' AS id, 'Sede legale' AS descrizione UNION SELECT id, CONCAT_WS(' - ', nomesede, citta) FROM an_sedi |where|) AS tab |filter| GROUP BY descrizione";
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
}
$where[] = 'idanagrafica='.prepare(setting('Azienda predefinita'));
if (!empty($search)) {
$search_fields[] = 'nomesede LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');

View File

@ -2,41 +2,89 @@
include_once __DIR__.'/../../../core.php';
switch ($resource) {
switch ($resource) {
case 'articoli':
$query = 'SELECT
mg_articoli.id,
mg_articoli.codice,
mg_articoli.descrizione,
round(mg_articoli.qta,'.setting('Cifre decimali per quantità').') AS qta,
mg_articoli.um,
mg_articoli.idiva_vendita,
mg_articoli.idconto_vendita,
mg_articoli.idconto_acquisto,
mg_articoli.prezzo_vendita,
mg_articoli.prezzo_acquisto,
categoria.`nome` AS categoria,
sottocategoria.`nome` AS sottocategoria,
co_iva.descrizione AS iva_vendita,
CONCAT(conto_vendita_categoria .numero, ".", conto_vendita_sottocategoria.numero, " ", conto_vendita_sottocategoria.descrizione) AS idconto_vendita_title,
CONCAT(conto_acquisto_categoria .numero, ".", conto_acquisto_sottocategoria.numero, " ", conto_acquisto_sottocategoria.descrizione) AS idconto_acquisto_title
FROM mg_articoli
LEFT JOIN co_iva ON mg_articoli.idiva_vendita = co_iva.id
LEFT JOIN `mg_categorie` AS categoria ON `categoria`.`id` = `mg_articoli`.`id_categoria`
LEFT JOIN `mg_categorie` AS sottocategoria ON `sottocategoria`.`id` = `mg_articoli`.`id_sottocategoria`
LEFT JOIN co_pianodeiconti3 AS conto_vendita_sottocategoria ON conto_vendita_sottocategoria.id=mg_articoli.idconto_vendita
LEFT JOIN co_pianodeiconti2 AS conto_vendita_categoria ON conto_vendita_sottocategoria.idpianodeiconti2=conto_vendita_categoria.id
LEFT JOIN co_pianodeiconti3 AS conto_acquisto_sottocategoria ON conto_acquisto_sottocategoria.id=mg_articoli.idconto_acquisto
LEFT JOIN co_pianodeiconti2 AS conto_acquisto_categoria ON conto_acquisto_sottocategoria.idpianodeiconti2=conto_acquisto_categoria.id
|where| ORDER BY mg_articoli.id_categoria ASC, mg_articoli.id_sottocategoria ASC';
// Se non ci sono sedi settate, carico tutti gli articoli
if(!isset($superselect['idsede_partenza']) && (!isset($superselect['idsede_destinazione']))){
$query = 'SELECT
mg_articoli.id,
mg_articoli.codice,
mg_articoli.descrizione,
round(mg_articoli.qta,'.setting('Cifre decimali per quantità').') AS qta,
mg_articoli.um,
mg_articoli.idiva_vendita,
mg_articoli.idconto_vendita,
mg_articoli.idconto_acquisto,
mg_articoli.prezzo_vendita,
mg_articoli.prezzo_acquisto,
categoria.`nome` AS categoria,
sottocategoria.`nome` AS sottocategoria,
co_iva.descrizione AS iva_vendita,
CONCAT(conto_vendita_categoria .numero, ".", conto_vendita_sottocategoria.numero, " ", conto_vendita_sottocategoria.descrizione) AS idconto_vendita_title,
CONCAT(conto_acquisto_categoria .numero, ".", conto_acquisto_sottocategoria.numero, " ", conto_acquisto_sottocategoria.descrizione) AS idconto_acquisto_title
FROM mg_articoli
LEFT JOIN co_iva ON mg_articoli.idiva_vendita = co_iva.id
LEFT JOIN `mg_categorie` AS categoria ON `categoria`.`id` = `mg_articoli`.`id_categoria`
LEFT JOIN `mg_categorie` AS sottocategoria ON `sottocategoria`.`id` = `mg_articoli`.`id_sottocategoria`
LEFT JOIN co_pianodeiconti3 AS conto_vendita_sottocategoria ON conto_vendita_sottocategoria.id=mg_articoli.idconto_vendita
LEFT JOIN co_pianodeiconti2 AS conto_vendita_categoria ON conto_vendita_sottocategoria.idpianodeiconti2=conto_vendita_categoria.id
LEFT JOIN co_pianodeiconti3 AS conto_acquisto_sottocategoria ON conto_acquisto_sottocategoria.id=mg_articoli.idconto_acquisto
LEFT JOIN co_pianodeiconti2 AS conto_acquisto_categoria ON conto_acquisto_sottocategoria.idpianodeiconti2=conto_acquisto_categoria.id
|where|
ORDER BY
mg_articoli.id_categoria ASC,
mg_articoli.id_sottocategoria ASC,
mg_articoli.codice ASC,
mg_articoli.descrizione ASC';
}
// Se c'è una sede settata, carico tutti gli articoli presenti in quella sede
else{
$query = 'SELECT
mg_articoli.id,
mg_articoli.codice,
mg_articoli.descrizione,
mg_articoli.um,
mg_articoli.idiva_vendita,
mg_articoli.idconto_vendita,
mg_articoli.idconto_acquisto,
mg_articoli.prezzo_vendita,
mg_articoli.prezzo_acquisto,
SUM(mg_movimenti.qta)AS qta,
categoria.`nome` AS categoria,
sottocategoria.`nome` AS sottocategoria,
co_iva.descrizione AS iva_vendita,
CONCAT(conto_vendita_categoria .numero, ".", conto_vendita_sottocategoria.numero, " ", conto_vendita_sottocategoria.descrizione) AS idconto_vendita_title,
CONCAT(conto_acquisto_categoria .numero, ".", conto_acquisto_sottocategoria.numero, " ", conto_acquisto_sottocategoria.descrizione) AS idconto_acquisto_title
FROM mg_articoli
LEFT JOIN co_iva ON mg_articoli.idiva_vendita = co_iva.id
LEFT JOIN `mg_categorie` AS categoria ON `categoria`.`id` = `mg_articoli`.`id_categoria`
LEFT JOIN `mg_categorie` AS sottocategoria ON `sottocategoria`.`id` = `mg_articoli`.`id_sottocategoria`
LEFT JOIN co_pianodeiconti3 AS conto_vendita_sottocategoria ON conto_vendita_sottocategoria.id=mg_articoli.idconto_vendita
LEFT JOIN co_pianodeiconti2 AS conto_vendita_categoria ON conto_vendita_sottocategoria.idpianodeiconti2=conto_vendita_categoria.id
LEFT JOIN co_pianodeiconti3 AS conto_acquisto_sottocategoria ON conto_acquisto_sottocategoria.id=mg_articoli.idconto_acquisto
LEFT JOIN co_pianodeiconti2 AS conto_acquisto_categoria ON conto_acquisto_sottocategoria.idpianodeiconti2=conto_acquisto_categoria.id
LEFT JOIN mg_movimenti ON mg_movimenti.idarticolo=mg_articoli.id
LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_azienda
|where|
GROUP BY
mg_articoli.id
ORDER BY
mg_articoli.id_categoria ASC,
mg_articoli.id_sottocategoria ASC,
mg_articoli.codice ASC,
mg_articoli.descrizione ASC';
}
foreach ($elements as $element) {
$filter[] = 'mg_articoli.id='.prepare($element);
}
$where[] = 'attivo = 1';
if (!empty($superselect['dir']) && $superselect['dir'] == 'entrata') {
//$where[] = '(qta > 0 OR servizio = 1)';
// Filtro articolo solo per documenti di vendita
if ($superselect['dir'] == 'entrata' && isset($superselect['idsede_partenza']) ) {
$where[] = 'idsede_azienda='.prepare($superselect['idsede_partenza']);
}
if (!empty($search)) {

View File

@ -297,51 +297,8 @@ echo '
}
echo '
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">'.tr('Questo articolo è presente nei seguenti automezzi').':</h3>
</div>
<div class="panel-body">';
// Quantità nell'automezzo
$rsa = $dbo->fetchArray('SELECT qta, (SELECT nome FROM dt_automezzi WHERE id=idautomezzo) AS nome, (SELECT targa FROM dt_automezzi WHERE id=idautomezzo) AS targa FROM mg_articoli_automezzi WHERE idarticolo='.prepare($id_record));
if (count($rsa) > 0) {
echo '
<div class="row">
<div class="col-md-12 col-lg-6">
<table class="table table-striped table-condensed table-bordered">
<tr>
<th>'.tr('Nome automezzo').'</th>
<th>'.tr('Targa').'</th>
<th>'.tr('Q.').'</th>
</tr>';
for ($i = 0; $i < count($rsa); ++$i) {
echo '
<tr>
<td>'.$rsa[$i]['nome'].'</td>
<td>'.$rsa[$i]['targa'].'</td>
<td>'.Translator::numberToLocale($rsa[$i]['qta']).' '.$rs[0]['unita_misura'].'</td>
</tr>';
}
echo '
</table>
</div>
</div>';
} else {
echo '
<div class="alert alert-info">
'.tr('Non ci sono automezzi collegati').'... '.Modules::link('Automezzi', null, tr('Collega il primo automezzo!')).'.
</div>';
}
</div>';
?>
</div>
</div>
</form>
{( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$" )}

View File

@ -41,27 +41,6 @@ function add_movimento_magazzino($id_articolo, $qta, $array = [], $descrizone =
$data = $rs_data[0]['data'];
}
// Automezzo
elseif (!empty($array['idautomezzo'])) {
$rs = $dbo->fetchArray("SELECT CONCAT_WS( ' - ', nome, targa ) AS nome FROM dt_automezzi WHERE id=".prepare($array['idautomezzo']));
$nome = $rs[0]['nome'];
if (empty($array['idintervento'])) {
$movimento = ($qta < 0) ? tr("Carico dal magazzino sull'automezzo _NAME_") : tr("Scarico nel magazzino dall'automezzo _NAME_");
}
// Automezzo legato a intervento
else {
$movimento = ($qta > 0) ? tr("Carico sull'automezzo _NAME_") : tr("Scarico dall'automezzo _NAME_");
$qta = -$qta;
}
$new = ($qta < 0 ? '+' : '').-$qta;
$dbo->query('UPDATE mg_articoli_automezzi SET qta = qta + '.$new.' WHERE idarticolo = '.prepare($id_articolo).' AND idautomezzo = '.prepare($array['idautomezzo']));
$data = date('Y-m-d');
}
// Intervento
elseif (!empty($array['idintervento'])) {
$rs_data = $dbo->fetchArray('SELECT IFNULL(MAX(orario_fine), data_richiesta) AS data, codice FROM in_interventi LEFT JOIN in_interventi_tecnici ON in_interventi.id=in_interventi_tecnici.idintervento WHERE in_interventi.id = '.prepare($array['idintervento']));
@ -104,7 +83,7 @@ function add_movimento_magazzino($id_articolo, $qta, $array = [], $descrizone =
// Movimento il magazzino solo se l'articolo non è un servizio
if ($articolo['servizio'] == 0) {
// Movimentazione effettiva
if (empty($array['idintervento']) || empty($array['idautomezzo'])) {
if (empty($array['idintervento'])) {
$dbo->query('UPDATE mg_articoli SET qta = qta + '.$new.' WHERE id = '.prepare($id_articolo));
}
@ -120,3 +99,33 @@ function add_movimento_magazzino($id_articolo, $qta, $array = [], $descrizone =
return true;
}
/**
* Funzione per aggiornare le sedi nei movimenti di magazzino.
*/
function aggiorna_sedi_movimenti($module, $id){
$dbo = database();
if($module == 'ddt'){
$rs = $dbo->fetchArray('SELECT idsede_partenza, idsede_destinazione, dir FROM dt_ddt INNER JOIN dt_tipiddt ON dt_tipiddt.id = dt_ddt.idtipoddt WHERE dt_ddt.id='.prepare($id));
$idsede_azienda = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_destinazione'] : $rs[0]['idsede_partenza'];
$idsede_controparte = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_partenza'] : $rs[0]['idsede_destinazione'];
$dbo->query('UPDATE mg_movimenti SET idsede_azienda='.prepare($idsede_azienda).', idsede_controparte='.prepare($idsede_controparte).' WHERE idddt='.prepare($id));
}elseif($module == 'documenti'){
$rs = $dbo->fetchArray('SELECT idsede_partenza, idsede_destinazione, dir FROM co_documenti INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento WHERE co_documenti.id='.prepare($id));
$idsede_azienda = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_destinazione'] : $rs[0]['idsede_partenza'];
$idsede_controparte = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_partenza'] : $rs[0]['idsede_destinazione'];
$dbo->query('UPDATE mg_movimenti SET idsede_azienda='.prepare($idsede_azienda).', idsede_controparte='.prepare($idsede_controparte).' WHERE iddocumento='.prepare($id));
}elseif($module == 'interventi'){
$rs = $dbo->fetchArray('SELECT idsede_partenza, idsede_destinazione FROM in_interventi WHERE in_interventi.id='.prepare($id));
$idsede_azienda = $rs[0]['idsede_partenza'];
$idsede_controparte = $rs[0]['idsede_destinazione'];
$dbo->query('UPDATE mg_movimenti SET idsede_azienda='.prepare($idsede_azienda).', idsede_controparte='.prepare($idsede_controparte).' WHERE idintervento='.prepare($id));
}
}

View File

@ -0,0 +1,46 @@
<?php
$sedi = $dbo->fetchArray("SELECT SUM(mg_movimenti.qta)AS qta, IF(mg_movimenti.idsede_azienda= 0,'Sede legale',(CONCAT_WS(' - ',an_sedi.nomesede,an_sedi.citta))) as sede FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_azienda WHERE mg_movimenti.idarticolo=".prepare($id_record)." GROUP BY idsede_azienda");
?>
<div class="row">
<div class="col-md-6">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title"><?php echo tr('Giacenze'); ?></h3>
</div>
<div class="panel-body">
<?php
if (empty($sedi)){
echo '<div class="alert alert-info">'.tr('Non ci sono ancora movimenti').'</div>';
} else{
?>
<table class="table table-striped table-condensed table-bordered">
<thead>
<tr>
<th width="400"><?php echo tr('Sede'); ?></th>
<th width="200"><?php echo tr('Q.tà'); ?></th>
</tr>
</thead>
<tbody>
<?php
foreach($sedi as $sede){
echo '
<tr>
<td>'.$sede['sede'].'</td>
<td class="text-right">'.Translator::numberToLocale($sede['qta']).'</td>
</tr>';
}
?>
</tbody>
</table>
<?php
}
?>
</div>
</div>
</div>
</div>

View File

@ -12,7 +12,7 @@ echo '
<div class="box-body">';
// Calcolo la quantità dai movimenti in magazzino
$rst = $dbo->fetchArray('SELECT COUNT(mg_movimenti.id) AS `row`, SUM(qta) AS qta_totale, (SELECT SUM(qta) FROM mg_movimenti WHERE idarticolo='.prepare($id_record).' AND (idintervento IS NULL OR idautomezzo = 0) AND data <= CURDATE()) AS qta_totale_attuale FROM mg_movimenti WHERE idarticolo='.prepare($id_record).' AND (idintervento IS NULL OR idautomezzo = 0)');
$rst = $dbo->fetchArray('SELECT COUNT(mg_movimenti.id) AS `row`, SUM(qta) AS qta_totale, (SELECT SUM(qta) FROM mg_movimenti WHERE idarticolo='.prepare($id_record).' AND (idintervento IS NULL) AND data <= CURDATE()) AS qta_totale_attuale FROM mg_movimenti WHERE idarticolo='.prepare($id_record).' AND (idintervento IS NULL)');
$qta_totale = $rst[0]['qta_totale'];
$qta_totale_attuale = $rst[0]['qta_totale_attuale'];
@ -65,7 +65,6 @@ if (!empty($rs2)) {
echo '
<td>'.$r['movimento'].'
'.((!empty($r['idintervento'])) ? Modules::link('Interventi', $r['idintervento']) : '').'
'.((!empty($r['idautomezzo'])) ? Modules::link('Automezzi', $r['idautomezzo']) : '').'
'.((!empty($r['idddt'])) ? (Modules::link('DDt di '.$dir, $r['idddt'], null, null, (intval($database->fetchOne('SELECT * FROM `dt_ddt` WHERE `id` ='.prepare($r['idddt'])))) ? '' : 'class="disabled"')) : '').'
'.((!empty($r['iddocumento'])) ? (Modules::link('Fatture di '.$dir, $r['iddocumento'], null, null, (intval($database->fetchOne('SELECT * FROM `co_documenti` WHERE `id` ='.prepare($r['iddocumento'])))) ? '' : 'class="disabled"')) : '').'
</td>';

View File

@ -1,156 +0,0 @@
<?php
include_once __DIR__.'/../../core.php';
switch (post('op')) {
case 'update':
$targa = post('targa');
$nome = post('nome');
$descrizione = post('descrizione');
if ($dbo->fetchNum('SELECT targa FROM dt_automezzi WHERE targa='.prepare($targa).' AND NOT id='.prepare($id_record)) == 0) {
$query = 'UPDATE dt_automezzi SET targa='.prepare($targa).', descrizione='.prepare($descrizione).', nome='.prepare($nome).' WHERE id='.prepare($id_record);
if ($dbo->query($query)) {
flash()->info(tr('Informazioni salvate correttamente!'));
}
} else {
flash()->error(tr('Esiste già un automezzo con questa targa!'));
}
break;
// Aggiunta automezzo
case 'add':
$targa = post('targa');
$nome = post('nome');
// Inserisco l'automezzo solo se non esiste un altro articolo con stesso targa
if ($dbo->fetchNum('SELECT targa FROM dt_automezzi WHERE targa='.prepare($targa)) == 0) {
$query = 'INSERT INTO dt_automezzi(targa, nome) VALUES ('.prepare($targa).', '.prepare($nome).')';
$dbo->query($query);
$id_record = $dbo->lastInsertedID();
flash()->info(tr('Aggiunto un nuovo automezzo!'));
} else {
flash()->error(tr('Esiste già un automezzo con questa targa!'));
}
break;
// Aggiunta tecnico
case 'addtech':
$idtecnico = post('idtecnico');
$data_inizio = post('data_inizio');
$data_fine = null;
// Controllo sull'effettivo inserimento di una data di fine successiva a quella di inizio
if (!empty(post('data_fine'))) {
if (new DateTime(post('data_fine')) >= new DateTime($data_inizio)) {
$data_fine = post('data_fine');
}
}
$data_fine = isset($data_fine) ? $data_fine : '0000-00-00';
// Inserisco il tecnico
$query = 'INSERT INTO dt_automezzi_tecnici(idtecnico, idautomezzo, data_inizio, data_fine) VALUES ('.prepare($idtecnico).', '.prepare($id_record).', '.prepare($data_inizio).', '.prepare($data_fine).')';
$dbo->query($query);
flash()->info(tr('Collegato un nuovo tecnico!'));
break;
// Salvataggio tecnici collegati
case 'savetech':
$errors = 0;
foreach (post('data_inizio') as $idautomezzotecnico => $data) {
$idautomezzotecnico = $idautomezzotecnico;
$data_inizio = post('data_inizio')[$idautomezzotecnico];
$data_fine = null;
// Controllo sull'effettivo inserimento di una data di fine successiva a quella di inizio
if (!empty(post('data_fine')[$idautomezzotecnico])) {
if (new DateTime(post('data_fine')[$idautomezzotecnico]) >= new DateTime($data_inizio)) {
$data_fine = post('data_fine')[$idautomezzotecnico];
}
}
$data_fine = isset($data_fine) ? $data_fine : '0000-00-00';
$query = 'UPDATE dt_automezzi_tecnici SET data_inizio='.prepare($data_inizio).', data_fine='.prepare($data_fine).' WHERE id='.prepare($idautomezzotecnico);
if (!$dbo->query($query)) {
++$errors;
}
}
if ($errors == 0) {
flash()->info(tr('Informazioni salvate correttamente!'));
} else {
flash()->error(tr('Errore durante il salvataggio del tecnico!'));
}
break;
// Eliminazione associazione con tecnico
case 'deltech':
$idautomezzotecnico = post('id');
$query = 'DELETE FROM dt_automezzi_tecnici WHERE id='.prepare($idautomezzotecnico);
if ($dbo->query($query)) {
flash()->info(tr('Tecnico rimosso!'));
}
break;
// Aggiunta quantità nell'automezzo
case 'addrow':
$idarticolo = post('idarticolo');
$qta = post('qta');
$rs = $dbo->fetchArray('SELECT id, qta FROM mg_articoli_automezzi WHERE idarticolo='.prepare($idarticolo).' AND idautomezzo='.prepare($id_record));
// Se nell'automezzo non c'è già questo articolo inserisco la scorta nell'automezzo da zero
if (empty($rs)) {
$dbo->query('INSERT INTO mg_articoli_automezzi(idarticolo, idautomezzo, qta) VALUES ('.prepare($idarticolo).', '.prepare($id_record).', 0)');
}
// Decremento la quantità dal magazzino centrale
add_movimento_magazzino($idarticolo, -$qta, ['idautomezzo' => $id_record]);
flash()->info(tr("Caricato il magazzino dell'automezzo!"));
break;
// Spostamento scorta da automezzo a magazzino generale
case 'moverow':
$idautomezzotecnico = post('idautomezzotecnico');
// Leggo la quantità del lotto
$rs = $dbo->fetchArray('SELECT qta, idarticolo FROM mg_articoli_automezzi WHERE id='.prepare($idautomezzotecnico));
if (!empty($rs)) {
// Elimino l'articolo dall'automezzo
$dbo->query('DELETE FROM mg_articoli_automezzi WHERE id='.prepare($idautomezzotecnico));
// Aggiungo la quantità al magazzino
add_movimento_magazzino($rs[0]['idarticolo'], $rs[0]['qta'], ['idautomezzo' => $id_record]);
flash()->info(tr('Articoli riportati nel magazzino centrale!'));
}
break;
case 'delete':
// per ogni articolo caricato in questo automezzo
$rs = $dbo->fetchArray('SELECT qta, idarticolo FROM mg_articoli_automezzi WHERE idautomezzo='.prepare($id_record));
for ($i = 0; $i < sizeof($rs); ++$i) {
// Ripristino la quantità nel magazzino centrale
add_movimento_magazzino($rs[$i]['idarticolo'], +$rs[$i]['qta'], ['idautomezzo' => $id_record]);
}
// Elimino tutti gli articoli dall'automezzo
$dbo->query('DELETE FROM mg_articoli_automezzi WHERE idautomezzo='.prepare($id_record));
// Elimino definitivamente l'automezzo
$dbo->query('DELETE FROM dt_automezzi WHERE id='.prepare($id_record));
flash()->info(tr('Automezzo eliminato e articoli riportati in magazzino!'));
break;
}

View File

@ -1,25 +0,0 @@
<?php
include_once __DIR__.'/../../core.php';
?><form action="" method="post" id="add-form">
<input type="hidden" name="op" value="add">
<input type="hidden" name="backto" value="record-edit">
<div class="row">
<div class="col-md-6">
{[ "type": "text", "label": "<?php echo tr('Nome'); ?>", "name": "nome", "required": 1 ]}
</div>
<div class="col-md-6">
{[ "type": "text", "label": "<?php echo tr('Targa'); ?>", "name": "targa", "required": 1, "maxlength": 10, "class": "alphanumeric-mask" ]}
</div>
</div>
<!-- PULSANTI -->
<div class="row">
<div class="col-md-12 text-right">
<button type="submit" class="btn btn-primary"><i class="fa fa-plus"></i> <?php echo tr('Aggiungi'); ?></button>
</div>
</div>
</form>

View File

@ -1,38 +0,0 @@
<?php
include_once __DIR__.'/../../core.php';
$idautomezzo = get('idautomezzo');
/*
Form di inserimento riga documento
*/
echo '
<form id="link_form" action="'.$rootdir.'/editor.php?id_module='.Modules::get('Automezzi')['id'].'&id_record='.$idautomezzo.'" method="post">
<input type="hidden" name="op" value="addrow">
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="id_record" value="'.$idautomezzo.'">';
// Seleziona articolo
echo '
<div class="col-md-8">
{[ "type": "select", "label": "'.tr('Articolo').'", "name": "idarticolo", "required": 1, "value": "'.$idarticolo.'", "ajax-source": "articoli" ]}
</div>';
// Quantità
echo '
<div class="col-md-4">
{[ "type": "number", "label": "'.tr('Q.tà su questo automezzo').'", "name": "qta", "value": "1", "decimals": "qta" ]}
</div>';
echo '
<!-- PULSANTI -->
<div class="row">
<div class="col-md-12 text-right">
<button type="submit" class="btn btn-primary pull-right"><i class="fa fa-plus"></i> '.tr('Aggiungi').'</button>
</div>
</div>
</form>';
echo '
<script src="'.$rootdir.'/lib/init.js"></script>';

View File

@ -1,59 +0,0 @@
<?php
include_once __DIR__.'/../../core.php';
$id_record = get('idautomezzo');
// Form di inserimento responsabili automezzo
echo '
<form action="'.$rootdir.'/editor.php?id_module='.Modules::get('Automezzi')['id'].'&id_record='.$id_record.'" method="post">
<input type="hidden" name="op" value="addtech">
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="id_record" value="'.$id_record.'">
<div class="row">';
// Tecnico
echo '
<div class="col-md-6">
{[ "type": "select", "label": "'.tr('Tecnico').'", "name": "idtecnico", "required": 1, "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE (descrizione=\'Tecnico\') AND deleted_at IS NULL ORDER BY ragione_sociale", "value": "'.$idtecnico.'" ]}
</div>';
// Data di partenza
echo '
<div class="col-md-3">
{[ "type": "date", "label": "'.tr('Data dal').'", "name": "data_inizio", "required": 1, "value": "-now-" ]}
</div>';
// Data di fine
echo '
<div class="col-md-3">
{[ "type": "date", "label": "'.tr('Data al').'", "name": "data_fine", "min-date": "-now-" ]}
</div>';
echo '
</div>
<!-- PULSANTI -->
<div class="row">
<div class="col-md-12 text-right">
<button type="submit" class="btn btn-primary pull-right"><i class="fa fa-plus"></i> '.tr('Aggiungi').'</button>
</div>
</div>
</form>';
echo '
<script src="'.$rootdir.'/lib/init.js"></script>';
echo '
<script type="text/javascript">
$(function () {
$("#data_inizio").on("dp.change", function (e) {
$("#data_fine").data("DateTimePicker").minDate(e.date);
if($("#data_fine").data("DateTimePicker").date() < e.date){
$("#data_fine").data("DateTimePicker").date(e.date);
}
})
});
</script>';

View File

@ -1,47 +0,0 @@
<?php
include_once __DIR__.'/../../../core.php';
$link_id = Modules::get('Automezzi')['id'];
$fields = [
'Nome' => 'nome',
'Descrizione' => 'descrizione',
'Targa' => 'targa',
];
$query = 'SELECT *';
foreach ($fields as $name => $value) {
$query .= ', '.$value." AS '".str_replace("'", "\'", $name)."'";
}
$query .= ' FROM dt_automezzi WHERE 1=0 ';
foreach ($fields as $name => $value) {
$query .= ' OR '.$value.' LIKE "%'.$term.'%"';
}
$query .= Modules::getAdditionalsQuery('Automezzi');
$rs = $dbo->fetchArray($query);
foreach ($rs as $r) {
$result = [];
$result['link'] = ROOTDIR.'/editor.php?id_module='.$link_id.'&id_record='.$r['id'];
$result['title'] = $r['nome'];
$result['category'] = 'Automezzi';
// Campi da evidenziare
$result['labels'] = [];
foreach ($fields as $name => $value) {
if (str_contains($r[$name], $term)) {
$text = str_replace($term, "<span class='highlight'>".$term.'</span>', $r[$name]);
$result['labels'][] = $name.': '.$text.'<br/>';
}
}
$results[] = $result;
}

View File

@ -1,107 +0,0 @@
<?php
include_once __DIR__.'/../../core.php';
?><form action="" method="post" id="edit-form">
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="op" value="update">
<input type="hidden" name="id_record" value="<?php echo $id_record; ?>">
<!-- DATI ARTICOLO -->
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title"><?php echo tr('Automezzo'); ?></h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-4">
{[ "type": "text", "label": "<?php echo tr('Nome'); ?>", "name": "nome", "required": 1, "value": "$nome$" ]}
</div>
<div class="col-md-4">
{[ "type": "text", "label": "<?php echo tr('Targa'); ?>", "name": "targa", "required": 1, "maxlength": 10, "class": "alphanumeric-mask", "value": "$targa$" ]}
</div>
</div>
<div class="row">
<div class="col-md-12">
{[ "type": "textarea", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "value": "$descrizione$" ]}
</div>
</div>
</div>
</div>
</form>
<!-- TECNICI + MAGAZZINO AUTOMEZZO -->
<div class="row">
<!--TECNICI -->
<div class="col-md-6">
<div class="panel panel-primary">
<div class="panel-heading">
<div class="row">
<div class="col-md-12">
<h3 class="panel-title"><?php echo tr('Tecnici responsabili automezzo'); ?></h3>
</div>
</div>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-12" >
<form action="<?php echo $rootdir; ?>/editor.php?id_module=<?php echo Modules::get('Automezzi')['id']; ?>&id_record=<?php echo $id_record; ?>" id="updatetech-form" method="post" role="form">
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="id_record" value="<?php echo $id_record; ?>">
<input type="hidden" name="op" value="">
<?php
include $docroot.'/modules/automezzi/row-list-tecnici.php';
?>
</form>
<a href="javascript:;" class="btn btn-sm btn-success pull-right" title="Aggiorna date" onclick="$('#updatetech-form input[name=op]').val('savetech'); $('#updatetech-form').submit();"><i class="fa fa-edit"></i> <?php echo tr('Salva date'); ?></a>
<div class="pull-left">
<a class="btn btn-sm btn-primary" data-href="<?php echo $rootdir; ?>/modules/automezzi/add_tecnico.php?idautomezzo=<?php echo $id_record; ?>" data-toggle="modal" data-title="Aggiungi tecnico"><i class="fa fa-plus"></i> <?php echo tr('Aggiungi tecnico'); ?></a><br>
</div>
<div class="clearfix"></div>
</div>
</div>
</div>
</div>
</div>
<!-- MAGAZZINO AUTOMEZZO -->
<div class="col-md-6">
<div class="panel panel-primary">
<div class="panel-heading">
<div class="row">
<div class="col-md-12">
<h3 class="panel-title"><?php echo tr('Magazzino automezzo'); ?></h3>
</div>
</div>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-12">
<?php
include $docroot.'/modules/automezzi/row-list-articoli.php';
?>
<div class="pull-left">
<a class="btn btn-sm btn-primary" data-href="<?php echo $rootdir; ?>/modules/automezzi/add_articolo.php?idautomezzo=<?php echo $id_record; ?>" data-toggle="modal" data-title="Aggiungi articoli"><i class="fa fa-plus"></i> <?php echo tr('Articolo magazzino'); ?></a><br>
</div>
<div class="clearfix"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
</a>

View File

@ -1,7 +0,0 @@
<?php
include_once __DIR__.'/../../core.php';
if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT * FROM dt_automezzi WHERE id='.prepare($id_record));
}

View File

@ -1,62 +0,0 @@
<?php
include_once __DIR__.'/../../core.php';
// Elenco articoli caricati sull'automezzo
$query = 'SELECT mg_articoli_automezzi.id, mg_articoli.codice AS codice, idarticolo, mg_articoli_automezzi.qta AS qta_automezzo, mg_articoli.qta AS qta_magazzino, mg_articoli.descrizione, mg_articoli.prezzo_vendita, (SELECT percentuale FROM co_iva WHERE id=mg_articoli.idiva_vendita) AS prciva_vendita FROM mg_articoli_automezzi INNER JOIN mg_articoli ON mg_articoli_automezzi.idarticolo=mg_articoli.id WHERE mg_articoli_automezzi.idautomezzo='.prepare($id_record).' AND mg_articoli_automezzi.qta > 0';
$rs2 = $dbo->fetchArray($query);
if (!empty($rs2)) {
echo '
<table class="table table-striped table-hover table-condensed">
<tr>
<th>'.tr('Articolo').'</th>
<th width="25%">'.tr('Q.').'</th>
<th width="25%">'.tr('Prezzo di vendita').'</th>
<th width="5%"></th>
</tr>';
foreach ($rs2 as $r) {
echo '
<tr>';
// Articolo
echo '
<td class="text-left">
'.Modules::link('Articoli', $r['idarticolo'], $r['codice'].' - '.$r['descrizione']).'
</td>';
// Quantità
echo '
<td class="first_cell center">
<span><big>'.Translator::numberToLocale($r['qta_automezzo']).'</big></span><br/>
<small>'.tr('Q. magazzino').': '.Translator::numberToLocale($r['qta_magazzino']).'</small><br/>
</td>';
// Prezzo di vendita
$netto = $r['prezzo_vendita'];
$iva = $r['prezzo_vendita'] / 100 * $r['prciva_vendita'];
echo '
<td class="table_cell center">
<span>'.moneyFormat($netto + $iva).'</span><br/>
<small>'.tr('Netto').': '.moneyFormat($netto).'</small><br/>
<small>'.tr('Iva').': '.moneyFormat($iva).'</small><br/>
</td>';
// Pulsanti
echo '
<td class="text-center">
<a class="btn btn-danger ask" data-backto="record-edit" data-op="moverow" data-idautomezzotecnico="'.$r['id'].'" data-msg="'.tr("Rimuovere articolo dell'automezzo?").'">
<i class="fa fa-trash"></i>
</a>
</td>
</tr>';
$tot_articoli += $r['qta_automezzo'];
}
echo '
</table>';
} else {
echo '
<p>'.tr('Nessun articolo presente').'...</p>';
}

View File

@ -1,70 +0,0 @@
<?php
include_once __DIR__.'/../../core.php';
/*
TECNICI ASSEGNATI ALL'AUTOMEZZO
*/
$q_art = 'SELECT *, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=dt_automezzi_tecnici.idtecnico) AS nometecnico FROM dt_automezzi_tecnici WHERE idautomezzo='.prepare($id_record).' ORDER BY data_inizio DESC';
$rs_art = $dbo->fetchArray($q_art);
if (!empty($rs_art)) {
echo '
<table class="table table-striped table-hover table-condensed">
<tr>
<th>'.tr('Tecnico').'</th>
<th width="25%">'.tr('dal').'</th>
<th width="25%">'.tr('al').'</th>
<th width="5%"></th>
</tr>';
foreach ($rs_art as $r) {
// Tecnico
echo '
<tr>
<td>
<input type="hidden" name="idautomezzotecnico[]" value="'.$r['id'].'">
'.$r['nometecnico'].'
</td>';
// Data di inizio
echo '
<td>
{[ "type": "date", "name": "data_inizio['.$r['id'].']", "required": 1, "value": "'.$r['data_inizio'].'" ]}
</td>';
// Data di fine
echo '
<td>
{[ "type": "date", "name": "data_fine['.$r['id'].']", "value": "'.$r['data_fine'].'", "min-date": "'.$r['data_inizio'].'" ]}
</td>';
// Pulsanti per aggiornamento date tecnici
echo '
<td>
<a class="btn btn-danger ask" data-backto="record-edit" data-op="deltech" data-id="'.$r['id'].'" data-msg="'.tr("Rimuovere il tecnico responsabile dell'automezzo?").'">
<i class="fa fa-trash"></i>
</a>
</td>
</tr>';
echo '
<script type="text/javascript">
$(function () {
$("#data_inizio'.$r['id'].'").on("dp.change", function (e) {
$("#data_fine'.$r['id'].'").data("DateTimePicker").minDate(e.date);
if($("#data_fine'.$r['id'].'").data("DateTimePicker").date() < e.date){
$("#data_fine'.$r['id'].'").data("DateTimePicker").date(e.date);
}
})
});
</script>';
}
echo '
</table>';
} else {
echo '
<p>'.tr('Nessun tecnico inserito').'...</p>';
}

View File

@ -359,7 +359,7 @@ switch (post('op')) {
$id_promemoria = $dbo->lastInsertedID();
// Copia degli articoli
$dbo->query('INSERT INTO co_promemoria_articoli(idarticolo, id_promemoria, idimpianto, idautomezzo, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, qta, um, abilita_serial) SELECT idarticolo, :id_new, idimpianto, idautomezzo, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, qta, um, abilita_serial FROM co_promemoria_articoli AS z WHERE id_promemoria = :id_old', [
$dbo->query('INSERT INTO co_promemoria_articoli(idarticolo, id_promemoria, idimpianto, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, qta, um, abilita_serial) SELECT idarticolo, :id_new, idimpianto, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, qta, um, abilita_serial FROM co_promemoria_articoli AS z WHERE id_promemoria = :id_old', [
':id_new' => $id_promemoria,
':id_old' => $p['id'],
]);

View File

@ -2,6 +2,7 @@
include_once __DIR__.'/../../core.php';
unset($_SESSION['superselect']['idsede_destinazione']);
unset($_SESSION['superselect']['idanagrafica']);
$_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];

View File

@ -76,7 +76,8 @@ switch (post('op')) {
'idanagrafica' => post('idanagrafica'),
'idspedizione' => post('idspedizione'),
'idcausalet' => post('idcausalet'),
'idsede' => post('idsede'),
'idsede_partenza' => post('idsede_partenza'),
'idsede_destinazione' => post('idsede_destinazione'),
'idvettore' => post('idvettore'),
'idporto' => post('idporto'),
'idaspettobeni' => post('idaspettobeni'),
@ -103,6 +104,8 @@ switch (post('op')) {
}
}
aggiorna_sedi_movimenti('ddt', $id_record);
flash()->info(tr('Ddt modificato correttamente!'));
}
break;
@ -133,6 +136,8 @@ switch (post('op')) {
// Ricalcolo inps, ritenuta e bollo
ricalcola_costiagg_ddt($id_record);
aggiorna_sedi_movimenti('ddt', $id_record);
flash()->info(tr('Articolo aggiunto!'));
}
break;
@ -255,6 +260,8 @@ switch (post('op')) {
ricalcola_costiagg_ddt($id_record);
aggiorna_sedi_movimenti('ddt', $id_record);
flash()->info(tr('Ordine _NUM_ aggiunto!', [
'_NUM_' => $ordine->numero,
]));
@ -279,6 +286,8 @@ switch (post('op')) {
ricalcola_costiagg_ddt($id_record, 0, 0, 0);
}
aggiorna_sedi_movimenti('ddt', $id_record);
flash()->info(tr('Articolo rimosso!'));
break;
@ -351,7 +360,7 @@ switch (post('op')) {
if (!empty($idarticolo)) {
if (!controlla_seriali('id_riga_ddt', $idriga, $old_qta, $qta, $dir)) {
flash()->error(tr('Alcuni serial number sono già stati utilizzati!'));
return;
}
}
@ -403,6 +412,7 @@ switch (post('op')) {
}
}
}
aggiorna_sedi_movimenti('ddt', $id_record);
break;
// eliminazione ddt

View File

@ -9,8 +9,12 @@ if ($module['name'] == 'Ddt di vendita') {
} else {
$dir = 'uscita';
}
unset($_SESSION['superselect']['idanagrafica']);
unset($_SESSION['superselect']['idsede_partenza']);
unset($_SESSION['superselect']['idsede_destinazione']);
$_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
$_SESSION['superselect']['idsede_partenza'] = $record['idsede_partenza'];
$_SESSION['superselect']['idsede_destinazione'] = $record['idsede_destinazione'];
?>
<form action="" method="post" id="edit-form">
@ -93,18 +97,40 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
?>
</div>
</div>
<?php
// Conteggio numero articoli ddt in uscita
$articolo=$dbo->fetchArray('SELECT mg_articoli.id FROM ((mg_articoli INNER JOIN dt_righe_ddt ON mg_articoli.id=dt_righe_ddt.idarticolo) INNER JOIN dt_ddt ON dt_ddt.id=dt_righe_ddt.idddt) WHERE dt_ddt.id='.prepare($id_record));
?>
<div class="row">
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo ($dir == 'uscita') ? tr('Fornitore') : tr('Destinatario'); ?>", "name": "idanagrafica", "required": 1, "value": "$idanagrafica$", "ajax-source": "clienti_fornitori", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
</div>
<?php
if ($dir == 'entrata'){
?>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Partenza merce') ?>", "name": "idsede_partenza", "ajax-source": "sedi_azienda", "value": "$idsede_partenza$", "readonly": "<?php echo ($record['flag_completato'] || sizeof($articolo)) ? 1 : 0 ; ?>" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Destinazione merce') ?>", "name": "idsede_destinazione", "ajax-source": "sedi", "value": "$idsede_destinazione$", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
</div>
<?php
}else{
?>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Partenza merce') ?>", "name": "idsede_partenza", "ajax-source": "sedi", "value": "$idsede_partenza$", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Destinazione merce') ?>", "name": "idsede_destinazione", "ajax-source": "sedi_azienda", "value": "$idsede_destinazione$", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
</div>
<div class="row">
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo ($dir == 'uscita') ? tr('Fornitore') : tr('Destinatario'); ?>", "name": "idanagrafica", "required": 1, "value": "$idanagrafica$", "ajax-source": "clienti_fornitori", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo ($dir == 'uscita') ? tr('Partenza merce') : tr('Destinazione merce'); ?>", "name": "idsede", "ajax-source": "sedi", "value": "$idsede$", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
</div>
</div>
<hr>
<?php
}
?>
</div>
<hr>
<div class="row">
<div class="col-md-3">
@ -242,8 +268,11 @@ include $docroot.'/modules/ddt/row-list.php';
<script>
$('#idanagrafica').change( function(){
session_set('superselect,idanagrafica', $(this).val(), 0);
$("#idsede").selectReset();
if('<?php echo $dir; ?>' == 'uscita'){
$("#idsede_partenza").selectReset();
}else{
$("#idsede_destinazione").selectReset();
}
});
</script>

View File

@ -32,6 +32,7 @@ switch (post('op')) {
$fattura = Fattura::build($anagrafica, $tipo, $data, $id_segment);
$id_record = $fattura->id;
aggiorna_sedi_movimenti('documenti', $id_record);
flash()->info(tr('Aggiunta fattura numero _NUM_!', [
'_NUM_' => $fattura->numero,
]));
@ -59,7 +60,8 @@ switch (post('op')) {
$fattura->idporto = post('idporto');
$fattura->idaspettobeni = post('idaspettobeni');
$fattura->idvettore = post('idvettore');
$fattura->idsede = post('idsede');
$fattura->idsede_partenza = post('idsede_partenza');
$fattura->idsede_destinazione = post('idsede_destinazione');
$fattura->idconto = post('idconto');
$fattura->split_payment = post('split_payment') ?: 0;
$fattura->is_fattura_conto_terzi = post('is_fattura_conto_terzi') ?: 0;
@ -116,6 +118,8 @@ switch (post('op')) {
aggiungi_movimento($id_record, $dir);
}
aggiorna_sedi_movimenti('documenti', $id_record);
flash()->info(tr('Fattura modificata correttamente!'));
}
@ -212,7 +216,7 @@ switch (post('op')) {
}
// Duplicazione intestazione
$dbo->query('INSERT INTO co_documenti(numero, numero_esterno, data, idanagrafica, idcausalet, idspedizione, idporto, idaspettobeni, idvettore, n_colli, idsede, idtipodocumento, idstatodocumento, idpagamento, idconto, idrivalsainps, idritenutaacconto, rivalsainps, iva_rivalsainps, ritenutaacconto, bollo, note, note_aggiuntive, buono_ordine, id_segment) VALUES('.prepare($numero).', '.prepare($numero_esterno).', NOW(), '.prepare($rs[0]['idanagrafica']).', '.prepare($rs[0]['idcausalet']).', '.prepare($rs[0]['idspedizione']).', '.prepare($rs[0]['idporto']).', '.prepare($rs[0]['idaspettobeni']).', '.prepare($rs[0]['idvettore']).', '.prepare($rs[0]['n_colli']).', '.prepare($rs[0]['idsede']).', '.prepare($rs[0]['idtipodocumento']).', (SELECT id FROM co_statidocumento WHERE descrizione=\'Bozza\'), '.prepare($rs[0]['idpagamento']).', '.prepare($rs[0]['idconto']).', '.prepare($rs[0]['idrivalsainps']).', '.prepare($rs[0]['idritenutaacconto']).', '.prepare($rs[0]['rivalsainps']).', '.prepare($rs[0]['iva_rivalsainps']).', '.prepare($rs[0]['ritenutaacconto']).', '.prepare($rs[0]['bollo']).', '.prepare($rs[0]['note']).', '.prepare($rs[0]['note_aggiuntive']).', '.prepare($rs[0]['buono_ordine']).', '.prepare($rs[0]['id_segment']).')');
$dbo->query('INSERT INTO co_documenti(numero, numero_esterno, data, idanagrafica, idcausalet, idspedizione, idporto, idaspettobeni, idvettore, n_colli, idsede_partenza, idsede_destinazione, idtipodocumento, idstatodocumento, idpagamento, idconto, idrivalsainps, idritenutaacconto, rivalsainps, iva_rivalsainps, ritenutaacconto, bollo, note, note_aggiuntive, buono_ordine, id_segment) VALUES('.prepare($numero).', '.prepare($numero_esterno).', NOW(), '.prepare($rs[0]['idanagrafica']).', '.prepare($rs[0]['idcausalet']).', '.prepare($rs[0]['idspedizione']).', '.prepare($rs[0]['idporto']).', '.prepare($rs[0]['idaspettobeni']).', '.prepare($rs[0]['idvettore']).', '.prepare($rs[0]['n_colli']).', '.prepare($rs[0]['idsede_partenza']).', '.prepare($rs[0]['idsede_destinazione']).', '.prepare($rs[0]['idtipodocumento']).', (SELECT id FROM co_statidocumento WHERE descrizione=\'Bozza\'), '.prepare($rs[0]['idpagamento']).', '.prepare($rs[0]['idconto']).', '.prepare($rs[0]['idrivalsainps']).', '.prepare($rs[0]['idritenutaacconto']).', '.prepare($rs[0]['rivalsainps']).', '.prepare($rs[0]['iva_rivalsainps']).', '.prepare($rs[0]['ritenutaacconto']).', '.prepare($rs[0]['bollo']).', '.prepare($rs[0]['note']).', '.prepare($rs[0]['note_aggiuntive']).', '.prepare($rs[0]['buono_ordine']).', '.prepare($rs[0]['id_segment']).')');
$id_record = $dbo->lastInsertedID();
// TODO: sistemare la duplicazione delle righe generiche e degli articoli, ignorando interventi, ddt, ordini, preventivi
@ -221,13 +225,14 @@ switch (post('op')) {
if (!empty($riga['idarticolo'])) {
add_articolo_infattura($id_record, $riga['idarticolo'], $riga['descrizione'], $riga['idiva'], $riga['qta'], $riga['subtotale'], $riga['sconto'], $riga['sconto_unitario'], $riga['tipo_sconto'], $riga['idintervento'], $riga['idconto'], $riga['um']);
} else {
$dbo->query('INSERT INTO co_righe_documenti(iddocumento, idordine, idddt, idintervento, idarticolo, idpreventivo, idcontratto, is_descrizione, idtecnico, idagente, idautomezzo, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, idritenutaacconto, ritenutaacconto, idrivalsainps, rivalsainps, um, qta, `order`) VALUES('.prepare($id_record).', 0, 0, 0, '.prepare($riga['idarticolo']).', '.prepare($riga['idpreventivo']).', '.prepare($riga['idcontratto']).', '.prepare($riga['is_descrizione']).', '.prepare($riga['idtecnico']).', '.prepare($riga['idagente']).', '.prepare($riga['idautomezzo']).', '.prepare($riga['idconto']).', '.prepare($riga['idiva']).', '.prepare($riga['desc_iva']).', '.prepare($riga['iva']).', '.prepare($riga['iva_indetraibile']).', '.prepare($riga['descrizione']).', '.prepare($riga['subtotale']).', '.prepare($riga['sconto']).', '.prepare($riga['sconto_unitario']).', '.prepare($riga['tipo_sconto']).', '.prepare($riga['idritenutaacconto']).', '.prepare($riga['ritenutaacconto']).', '.prepare($riga['idrivalsainps']).', '.prepare($riga['rivalsainps']).', '.prepare($riga['um']).', '.prepare($riga['qta']).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))');
$dbo->query('INSERT INTO co_righe_documenti(iddocumento, idordine, idddt, idintervento, idarticolo, idpreventivo, idcontratto, is_descrizione, idtecnico, idagente, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, idritenutaacconto, ritenutaacconto, idrivalsainps, rivalsainps, um, qta, `order`) VALUES('.prepare($id_record).', 0, 0, 0, '.prepare($riga['idarticolo']).', '.prepare($riga['idpreventivo']).', '.prepare($riga['idcontratto']).', '.prepare($riga['is_descrizione']).', '.prepare($riga['idtecnico']).', '.prepare($riga['idagente']).', '.prepare($riga['idconto']).', '.prepare($riga['idiva']).', '.prepare($riga['desc_iva']).', '.prepare($riga['iva']).', '.prepare($riga['iva_indetraibile']).', '.prepare($riga['descrizione']).', '.prepare($riga['subtotale']).', '.prepare($riga['sconto']).', '.prepare($riga['sconto_unitario']).', '.prepare($riga['tipo_sconto']).', '.prepare($riga['idritenutaacconto']).', '.prepare($riga['ritenutaacconto']).', '.prepare($riga['idrivalsainps']).', '.prepare($riga['rivalsainps']).', '.prepare($riga['um']).', '.prepare($riga['qta']).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))');
}
}
// Ricalcolo inps, ritenuta e bollo (se la fattura non è stata pagata)
ricalcola_costiagg_fattura($id_record);
aggiorna_sedi_movimenti('documenti', $id_record);
flash()->info(tr('Fattura duplicata correttamente!'));
}
@ -308,6 +313,7 @@ switch (post('op')) {
$articolo->save();
aggiorna_sedi_movimenti('documenti', $id_record);
if (post('idriga') != null) {
flash()->info(tr('Articolo modificato!'));
} else {
@ -480,7 +486,8 @@ switch (post('op')) {
} else {
ricalcola_costiagg_fattura($id_record);
}
aggiorna_sedi_movimenti('documenti', $id_record);
flash()->info(tr('Articolo rimosso!'));
}
break;
@ -771,6 +778,7 @@ switch (post('op')) {
$ordine->save();
ricalcola_costiagg_fattura($id_record);
aggiorna_sedi_movimenti('documenti', $id_record);
flash()->info(tr('Ordine _NUM_ aggiunto!', [
'_NUM_' => $ordine->numero,
@ -838,6 +846,7 @@ switch (post('op')) {
$ddt->save();
ricalcola_costiagg_fattura($id_record);
aggiorna_sedi_movimenti('documenti', $id_record);
flash()->info(tr('DDT _NUM_ aggiunto!', [
'_NUM_' => $ddt->numero,
@ -910,6 +919,8 @@ switch (post('op')) {
}
ricalcola_costiagg_fattura($id_record);
aggiorna_sedi_movimenti('documenti', $id_record);
flash()->info(tr('Preventivo _NUM_ aggiunto!', [
'_NUM_' => $preventivo->numero,
@ -982,6 +993,8 @@ switch (post('op')) {
}
ricalcola_costiagg_fattura($id_record);
aggiorna_sedi_movimenti('documenti', $id_record);
flash()->info(tr('Contratto _NUM_ aggiunto!', [
'_NUM_' => $contratto->numero,
@ -1002,7 +1015,8 @@ switch (post('op')) {
$nota->idconto = $fattura->idconto;
$nota->idpagamento = $fattura->idpagamento;
$nota->idbanca = $fattura->idbanca;
$nota->idsede = $fattura->idsede;
$nota->idsede_partenza = $fattura->idsede_partenza;
$nota->idsede_destinazione = $fattura->idsede_destinazione;
$nota->save();
$righe = $fattura->getRighe();
@ -1028,6 +1042,7 @@ switch (post('op')) {
}
$id_record = $nota->id;
aggiorna_sedi_movimenti('documenti', $id_record);
break;
@ -1056,10 +1071,12 @@ if (get('op') == 'nota_addebito') {
$nota->idconto = $fattura->idconto;
$nota->idpagamento = $fattura->idpagamento;
$nota->idbanca = $fattura->idbanca;
$nota->idsede = $fattura->idsede;
$nota->idsede_partenza = $fattura->idsede_partenza;
$nota->idsede_destinazione = $fattura->idsede_destinazione;
$nota->save();
$id_record = $nota->id;
aggiorna_sedi_movimenti('documenti', $id_record);
}
// Aggiornamento stato dei ddt presenti in questa fattura in base alle quantità totali evase

View File

@ -8,6 +8,11 @@ $rs = $dbo->fetchArray('SELECT co_tipidocumento.descrizione, dir FROM co_tipidoc
$dir = $rs[0]['dir'];
$tipodoc = $rs[0]['descrizione'];
unset($_SESSION['superselect']['idanagrafica']);
unset($_SESSION['superselect']['idsede_partenza']);
unset($_SESSION['superselect']['idsede_destinazione']);
$_SESSION['superselect']['idsede_partenza'] = $record['idsede_partenza'];
$_SESSION['superselect']['idsede_destinazione'] = $record['idsede_destinazione'];
$_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
$_SESSION['superselect']['ddt'] = $dir;
$_SESSION['superselect']['split_payment'] = $record['split_payment'];
@ -88,7 +93,7 @@ if ($dir == 'entrata') {
{[ "type": "text", "label": "<?php echo $label; ?>", "name": "numero_esterno", "class": "text-center", "value": "$numero_esterno$" ]}
</div>
<div class="col-md-3">
<div class="col-md-2">
{[ "type": "date", "label": "<?php echo tr('Data emissione'); ?>", "name": "data", "required": 1, "value": "$data$" ]}
</div>
@ -103,12 +108,20 @@ if (empty($record['is_fiscale'])) {
}
?>
<div class="col-md-3">
<!-- TODO: Rimuovere possibilità di selezionare lo stato pagato obbligando l'utente ad aggiungere il movimento in prima nota -->
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatodocumento", "required": 1, "values": "query=<?php echo $query; ?>", "value": "$idstatodocumento$", "class": "unblockable", "extra": " onchange = \"if ($('#idstatodocumento option:selected').text()=='Pagato' || $('#idstatodocumento option:selected').text()=='Parzialmente pagato' ){if( confirm('<?php echo tr('Sicuro di voler impostare manualmente la fattura come pagata senza aggiungere il movimento in prima nota?'); ?>') ){ return true; }else{ $('#idstatodocumento').selectSet(<?php echo $record['idstatodocumento']; ?>); }}\" " ]}
<?php if ($dir == 'uscita') {
?>
<div class="col-md-2">
{[ "type": "date", "label": "<?php echo tr('Data registrazione'); ?>", "name": "data_registrazione", "required": 0, "value": "$data_registrazione$" ]}
</div>
<div class="col-md-2">
{[ "type": "date", "label": "<?php echo tr('Data competenza'); ?>", "name": "data_competenza", "required": 0, "value": "$data_competenza$" ]}
</div>
<?php
} ?>
<div class="col-md-3">
<?php
if ($dir == 'entrata') {
@ -137,24 +150,36 @@ if (empty($record['is_fiscale'])) {
}
?>
</div>
<?php
// Conteggio numero articoli fatture
$articolo=$dbo->fetchArray('SELECT mg_articoli.id FROM ((mg_articoli INNER JOIN co_righe_documenti ON mg_articoli.id=co_righe_documenti.idarticolo) INNER JOIN co_documenti ON co_documenti.id=co_righe_documenti.iddocumento) WHERE co_documenti.id='.prepare($id_record));
if ($dir == 'uscita'){
?>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Riferimento sede'); ?>", "name": "idsede", "ajax-source": "sedi", "placeholder": "Sede legale", "value": "$idsede$" ]}
{[ "type": "select", "label": "<?php echo tr('Partenza merce'); ?>", "name": "idsede_partenza", "ajax-source": "sedi", "placeholder": "Sede legale", "value": "$idsede_partenza$"]}
</div>
<?php if ($dir == 'uscita') {
?>
<div class="col-md-3">
{[ "type": "date", "label": "<?php echo tr('Data registrazione'); ?>", "name": "data_registrazione", "required": 0, "value": "$data_registrazione$" ]}
</div>
<div class="col-md-3">
{[ "type": "date", "label": "<?php echo tr('Data competenza'); ?>", "name": "data_competenza", "required": 0, "value": "$data_competenza$" ]}
{[ "type": "select", "label": "<?php echo tr('Destinazione merce') ?>", "name": "idsede_destinazione", "ajax-source": "sedi_azienda", "value": "$idsede_destinazione$", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
</div>
<?php
}else{
?>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Partenza merce'); ?>", "name": "idsede_partenza", "ajax-source": "sedi_azienda", "placeholder": "Sede legale", "value": "$idsede_partenza$", "readonly": "<?php echo (sizeof($articolo)) ? 1 : 0 ; ?>" ]}
</div>
<?php
} ?>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Destinazione merce') ?>", "name": "idsede_destinazione", "ajax-source": "sedi", "value": "$idsede_destinazione$", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
</div>
<?php
}
?>
<div class="col-md-3">
<!-- TODO: Rimuovere possibilità di selezionare lo stato pagato obbligando l'utente ad aggiungere il movimento in prima nota -->
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatodocumento", "required": 1, "values": "query=<?php echo $query; ?>", "value": "$idstatodocumento$", "class": "unblockable", "extra": " onchange = \"if ($('#idstatodocumento option:selected').text()=='Pagato' || $('#idstatodocumento option:selected').text()=='Parzialmente pagato' ){if( confirm('<?php echo tr('Sicuro di voler impostare manualmente la fattura come pagata senza aggiungere il movimento in prima nota?'); ?>') ){ return true; }else{ $('#idstatodocumento').selectSet(<?php echo $record['idstatodocumento']; ?>); }}\" " ]}
</div>
<?php if ($dir == 'entrata') {
?>
@ -604,8 +629,8 @@ echo '
<script type="text/javascript">
$("#idanagrafica").change(function(){
session_set("superselect,idanagrafica", $(this).val(), 0);
$("#idsede").selectReset();
$("#idsede_destinazione").selectReset();
});
$("#ricalcola_scadenze").click(function(){

View File

@ -83,8 +83,12 @@ class Fattura extends Document
$model->id_segment = $id_segment;
$model->idconto = $id_conto;
$model->idsede = $id_sede;
if($dir == 'entrata'){
$model->idsede_destinazione = $id_sede;
}else{
$model->idsede_partenza = $id_sede;
}
$model->addebita_bollo = setting('Addebita marca da bollo al cliente');
$id_ritenuta_contributi = ($tipo_documento->dir == 'entrata') ? setting('Ritenuta contributi') : null;
@ -102,7 +106,7 @@ class Fattura extends Document
}
$model->save();
return $model;
}

View File

@ -34,8 +34,8 @@ switch (post('op')) {
$intervento->idtipointervento = post('idtipointervento');
$intervento->idstatointervento = post('idstatointervento');
$intervento->idsede = post('idsede');
$intervento->idautomezzo = post('idautomezzo');
$intervento->idsede_partenza = post('idsede_partenza');
$intervento->idsede_destinazione = post('idsede_destinazione');
$intervento->id_preventivo = post('idpreventivo');
$intervento->id_contratto = $idcontratto;
@ -59,7 +59,7 @@ switch (post('op')) {
flash()->warning(tr("Errore nell'invio della notifica"));
}
}
aggiorna_sedi_movimenti('interventi', $id_record);
flash()->info(tr('Informazioni salvate correttamente!'));
break;
@ -79,6 +79,8 @@ switch (post('op')) {
$intervento = Intervento::build($anagrafica, $tipo, $stato, $data_richiesta);
$id_record = $intervento->id;
aggiorna_sedi_movimenti('interventi', $id_record);
flash()->info(tr('Aggiunto nuovo intervento!'));
// Informazioni di base
@ -86,16 +88,16 @@ switch (post('op')) {
$idcontratto = post('idcontratto');
$idcontratto_riga = post('idcontratto_riga');
$idtipointervento = post('idtipointervento');
$idsede = post('idsede');
$idsede_partenza = post('idsede_partenza');
$idsede_destinazione = post('idsede_destinazione');
$richiesta = post('richiesta');
$idautomezzo = null;
if (post('idclientefinale')) {
$intervento->idclientefinale = post('idclientefinale');
}
if (post('idsede')) {
$intervento->idsede = post('idsede');
if (post('idsede_destinazione')) {
$intervento->idsede_destinazione = post('idsede_destinazione');
}
$intervento->id_preventivo = post('idpreventivo');
@ -112,14 +114,14 @@ switch (post('op')) {
'idtipointervento' => $idtipointervento,
'data_richiesta' => $data_richiesta,
'richiesta' => $richiesta,
'idsede' => $idsede ?: 0,
'idsede_destinazione' => $idsede_destinazione ?: 0,
], ['idcontratto' => $idcontratto, 'id' => $idcontratto_riga]);
//copio le righe dal promemoria all'intervento
$dbo->query('INSERT INTO in_righe_interventi (descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,idintervento,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,'.$id_record.',sconto,sconto_unitario,tipo_sconto FROM co_promemoria_righe WHERE id_promemoria = '.$idcontratto_riga);
//copio gli articoli dal promemoria all'intervento
$dbo->query('INSERT INTO mg_articoli_interventi (idarticolo, idintervento,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$id_record.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto FROM co_promemoria_articoli WHERE id_promemoria = '.$idcontratto_riga);
$dbo->query('INSERT INTO mg_articoli_interventi (idarticolo, idintervento,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$id_record.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva, qta, um, abilita_serial, idimpianto FROM co_promemoria_articoli WHERE id_promemoria = '.$idcontratto_riga);
// Copia degli allegati
$alleagti = Uploads::copy([
@ -138,7 +140,7 @@ switch (post('op')) {
// Decremento la quantità per ogni articolo copiato
$rs_articoli = $dbo->fetchArray('SELECT * FROM mg_articoli_interventi WHERE idintervento = '.$id_record.' ');
foreach ($rs_articoli as $rs_articolo) {
add_movimento_magazzino($rs_articolo['idarticolo'], -$rs_articolo['qta'], ['idautomezzo' => $rs_articolo['idautomezzo'], 'idintervento' => $id_record]);
add_movimento_magazzino($rs_articolo['idarticolo'], -$rs_articolo['qta'], ['idintervento' => $id_record]);
}
}
@ -183,7 +185,7 @@ switch (post('op')) {
flash()->clearMessage('info');
flash()->clearMessage('warning');
}
aggiorna_sedi_movimenti('interventi', $id_record);
break;
@ -201,15 +203,14 @@ switch (post('op')) {
Riporto in magazzino gli articoli presenti nell'intervento in cancellazine
*/
// Leggo la quantità attuale nell'intervento
$q = 'SELECT qta, idautomezzo, idarticolo FROM mg_articoli_interventi WHERE idintervento='.prepare($id_record);
$q = 'SELECT qta, idarticolo FROM mg_articoli_interventi WHERE idintervento='.prepare($id_record);
$rs = $dbo->fetchArray($q);
for ($i = 0; $i < count($rs); ++$i) {
$qta = $rs[$i]['qta'];
$idautomezzo = $rs[$i]['idautomezzo'];
$idarticolo = $rs[$i]['idarticolo'];
add_movimento_magazzino($idarticolo, $qta, ['idautomezzo' => $idautomezzo, 'idintervento' => $id_record]);
add_movimento_magazzino($idarticolo, $qta, ['idintervento' => $id_record]);
}
// Eliminazione associazioni tra interventi e contratti
@ -278,7 +279,8 @@ switch (post('op')) {
$iva = (($prezzo_vendita * $qta) - $sconto) * $rs_iva[0]['percentuale'] / 100;
$dbo->query('INSERT INTO in_righe_interventi(descrizione, qta, um, prezzo_vendita, prezzo_acquisto, idiva, desc_iva, iva, sconto, sconto_unitario, tipo_sconto, idintervento) VALUES ('.prepare($descrizione).', '.prepare($qta).', '.prepare($um).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($id_record).')');
aggiorna_sedi_movimenti('interventi', $id_record);
break;
case 'editriga':
@ -318,7 +320,8 @@ switch (post('op')) {
' sconto_unitario='.prepare($sconto_unitario).','.
' tipo_sconto='.prepare($tipo_sconto).
' WHERE id='.prepare($idriga));
aggiorna_sedi_movimenti('interventi', $id_record);
break;
case 'delriga':
@ -358,20 +361,18 @@ switch (post('op')) {
$idriga = post('idriga');
$idarticolo = post('idarticolo');
$idimpianto = post('idimpianto');
$idautomezzo = post('idautomezzo');
$idarticolo_originale = post('idarticolo_originale');
// Leggo la quantità attuale nell'intervento
$q = 'SELECT qta, idautomezzo, idimpianto FROM mg_articoli_interventi WHERE idarticolo='.prepare($idarticolo_originale).' AND idintervento='.prepare($id_record);
$q = 'SELECT qta, idimpianto FROM mg_articoli_interventi WHERE idarticolo='.prepare($idarticolo_originale).' AND idintervento='.prepare($id_record);
$rs = $dbo->fetchArray($q);
$old_qta = $rs[0]['qta'];
$idimpianto = $rs[0]['idimpianto'];
$idautomezzo = $rs[0]['idautomezzo'];
$serials = array_column($dbo->select('mg_prodotti', 'serial', ['id_riga_intervento' => $idriga]), 'serial');
add_movimento_magazzino($idarticolo_originale, $old_qta, ['idautomezzo' => $idautomezzo, 'idintervento' => $id_record]);
add_movimento_magazzino($idarticolo_originale, $old_qta, ['idintervento' => $id_record]);
// Elimino questo articolo dall'intervento
$dbo->query('DELETE FROM mg_articoli_interventi WHERE id='.prepare($idriga));
@ -381,12 +382,12 @@ switch (post('op')) {
/* Ricollego l'articolo modificato all'intervento */
/* ci può essere il caso in cui cambio idarticolo e anche qta */
// no break
case 'addarticolo':
$originale = ArticoloOriginale::find(post('idarticolo'));
$intervento = Intervento::find($id_record);
$articolo = Articolo::build($intervento, $originale, post('idautomezzo'));
$articolo = Articolo::build($intervento, $originale);
$articolo->qta = post('qta');
$articolo->descrizione = post('descrizione');
@ -397,12 +398,11 @@ switch (post('op')) {
$articolo->sconto_unitario = post('sconto');
$articolo->tipo_sconto = post('tipo_sconto');
$articolo->id_iva = post('idiva');
$articolo->save();
// Aggiorno l'automezzo dell'intervento
$dbo->query('UPDATE in_interventi SET idautomezzo='.prepare(post('idautomezzo')).' WHERE id='.prepare($id_record));
aggiorna_sedi_movimenti('interventi', $id_record);
if (!empty($serials)) {
if ($old_qta > $qta) {
$serials = array_slice($serials, 0, $qta);
@ -422,14 +422,13 @@ switch (post('op')) {
// Riporto la merce nel magazzino
if (!empty($idriga) && !empty($id_record)) {
// Leggo la quantità attuale nell'intervento
$q = 'SELECT qta, idautomezzo, idarticolo, idimpianto FROM mg_articoli_interventi WHERE id='.prepare($idriga);
$q = 'SELECT qta, idarticolo, idimpianto FROM mg_articoli_interventi WHERE id='.prepare($idriga);
$rs = $dbo->fetchArray($q);
$qta = $rs[0]['qta'];
$idarticolo = $rs[0]['idarticolo'];
$idimpianto = $rs[0]['idimpianto'];
$idautomezzo = $rs[0]['idautomezzo'];
add_movimento_magazzino($idarticolo, $qta, ['idautomezzo' => $idautomezzo, 'idintervento' => $id_record]);
add_movimento_magazzino($idarticolo, $qta, ['idintervento' => $id_record]);
// Elimino questo articolo dall'intervento
$dbo->query('DELETE FROM mg_articoli_interventi WHERE id='.prepare($idriga).' AND idintervento='.prepare($id_record));
@ -440,7 +439,7 @@ switch (post('op')) {
// Elimino i seriali utilizzati dalla riga
$dbo->query('DELETE FROM `mg_prodotti` WHERE id_articolo = '.prepare($idarticolo).' AND id_riga_intervento = '.prepare($id_record));
}
aggiorna_sedi_movimenti('interventi', $id_record);
break;
case 'add_serial':
@ -455,7 +454,7 @@ switch (post('op')) {
}
$dbo->sync('mg_prodotti', ['id_riga_intervento' => $idriga, 'dir' => 'entrata', 'id_articolo' => $idarticolo], ['serial' => $serials]);
aggiorna_sedi_movimenti('interventi', $id_record);
break;
case 'firma':

View File

@ -11,7 +11,6 @@ $gruppi = Auth::user()['gruppo'];
$can_edit_prezzi = (in_array('Amministratori', $gruppi)) || (setting('Mostra i prezzi al tecnico') == 1 && (in_array('Tecnici', $gruppi)));
$idriga = get('idriga');
$idautomezzo = (get('idautomezzo') == 'undefined') ? '' : get('idautomezzo');
// Lettura idanagrafica cliente e percentuale di sconto/rincaro in base al listino
$rs = $dbo->fetchArray('SELECT idanagrafica FROM in_interventi WHERE id='.prepare($id_record));
@ -58,8 +57,6 @@ if (empty($idriga)) {
$sconto_unitario = $rsr[0]['sconto_unitario'];
$tipo_sconto = $rsr[0]['tipo_sconto'];
$idautomezzo = $rsr[0]['idautomezzo'];
$idimpianto = $rsr[0]['idimpianto'];
}
@ -69,7 +66,6 @@ if (empty($idriga)) {
echo '
<form id="add_form" action="'.$rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'" method="post">
<input type="hidden" name="op" value="'.$op.'">
<input type="hidden" id="idautomezzo" name="idautomezzo" value="'.$idautomezzo.'">
<input type="hidden" name="idriga" value="'.$idriga.'">';
if (!empty($idarticolo)) {

View File

@ -29,7 +29,6 @@ switch ($resource) {
'idstatointervento' => $data['id_stato_intervento'],
'idtipointervento' => $data['id_tipo_intervento'],
'idsede' => 0,
'idautomezzo' => 0,
'codice' => $codice,
'data_richiesta' => $data['data_richiesta'],
@ -63,7 +62,7 @@ switch ($resource) {
$originale = ArticoloOriginale::find($data['id_articolo']);
$intervento = Intervento::find($data['id_intervento']);
$articolo = Articolo::build($intervento, $originale, $data['id_automezzo']);
$articolo = Articolo::build($intervento, $originale);
$articolo->qta = $data['qta'];
$articolo->um = $data['um'];

View File

@ -57,7 +57,6 @@ switch ($resource) {
`in_interventi`.`descrizione`,
`in_interventi`.`idtipointervento`,
`in_interventi`.`idanagrafica`,
`in_interventi`.`idautomezzo`,
`in_interventi`.`idsede`,
`in_interventi`.`idstatointervento`,
`in_interventi`.`informazioniaggiuntive`,
@ -114,7 +113,7 @@ switch ($resource) {
// Elenco articoli dell'intervento per l'applicazione
case 'articoli_intervento':
$query = 'SELECT id, idarticolo AS id_articolo, idintervento AS id_intervento, IF(idautomezzo != 0, idautomezzo, NULL) AS id_automezzo, qta, created_at as data FROM mg_articoli_interventi WHERE `idintervento` = :id_intervento';
$query = 'SELECT id, idarticolo AS id_articolo, idintervento AS id_intervento, qta, created_at as data FROM mg_articoli_interventi WHERE `idintervento` = :id_intervento';
$parameters = [
':id_intervento' => $request['id_intervento'],

View File

@ -3,7 +3,12 @@
include_once __DIR__.'/../../core.php';
unset($_SESSION['superselect']['idanagrafica']);
unset($_SESSION['superselect']['idsede_partenza']);
unset($_SESSION['superselect']['idsede_destinazione']);
$_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
$_SESSION['superselect']['idsede_partenza'] = $record['idsede_partenza'];
$_SESSION['superselect']['idsede_partenza'];
$_SESSION['superselect']['idsede_destinazione'] = $record['idsede_destinazione'];
?><form action="" method="post" id="edit-form">
<input type="hidden" name="op" value="update">
@ -27,7 +32,7 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
</div>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Sede'); ?>", "name": "idsede","value": "$idsede$", "ajax-source": "sedi", "placeholder": "Sede legale", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
{[ "type": "select", "label": "<?php echo tr('Sede destinazione'); ?>", "name": "idsede_destinazione","value": "$idsede_destinazione$", "ajax-source": "sedi", "placeholder": "Sede legale", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
</div>
<div class="col-md-3">
@ -109,10 +114,6 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
<div class="col-md-4">
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatointervento", "required": 1, "values": "query=SELECT idstatointervento AS id, descrizione, colore AS _bgcolor_ FROM in_statiintervento WHERE deleted_at IS NULL", "value": "$idstatointervento$" ]}
</div>
<div class="col-md-4">
{[ "type": "select", "label": "<?php echo tr('Automezzo'); ?>", "name": "idautomezzo", "values": "query=SELECT id, CONCAT_WS( ')', CONCAT_WS( ' (', CONCAT_WS( ', ', nome, descrizione), targa ), '' ) AS descrizione FROM dt_automezzi", "help": "<?php echo tr('Se selezionato i materiali verranno presi prima dall&rsquo;automezzo e poi dal magazzino centrale.'); ?>", "value": "$idautomezzo$", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
</div>
</div>
@ -211,14 +212,22 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
</div>
</div>
<?php
// Conteggio numero articoli intervento per eventuale blocco della sede di partenza
$articoli = $dbo->fetchArray('SELECT mg_articoli_interventi.id FROM mg_articoli_interventi INNER JOIN in_interventi ON in_interventi.id=mg_articoli_interventi.idintervento WHERE in_interventi.id='.prepare($id_record))
?>
<!-- ARTICOLI -->
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title"><?php echo tr('Materiale utilizzato'); ?></h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Partenza merce') ?>", "name": "idsede_partenza", "ajax-source": "sedi_azienda", "value": "$idsede_partenza$", "readonly": "<?php echo ($record['flag_completato'] || sizeof($articoli)) ? 1 : 0 ; ?>" ]}
</div>
</div>
<div id="articoli">
<?php
if (file_exists($docroot.'/modules/interventi/custom/ajax_articoli.php')) {
@ -231,7 +240,7 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
<?php if (!$record['flag_completato']) {
?>
<button type="button" class="btn btn-primary" onclick="launch_modal( '<?php echo tr('Aggiungi articolo'); ?>', '<?php echo $rootdir; ?>/modules/interventi/add_articolo.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>&idriga=0&idautomezzo='+$('#idautomezzo').find(':selected').val(), 1);"><i class="fa fa-plus"></i> <?php echo tr('Aggiungi articolo'); ?>...</button>
<button type="button" class="btn btn-primary" onclick="launch_modal( '<?php echo tr('Aggiungi articolo'); ?>', '<?php echo $rootdir; ?>/modules/interventi/add_articolo.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>&idriga=0', 1);"><i class="fa fa-plus"></i> <?php echo tr('Aggiungi articolo'); ?>...</button>
<?php
} ?>
</div>

View File

@ -10,7 +10,7 @@ if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT *,
(SELECT tipo FROM an_anagrafiche WHERE idanagrafica = in_interventi.idanagrafica) AS tipo_anagrafica,
(SELECT completato FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS flag_completato,
IF((in_interventi.idsede = 0), (SELECT idzona FROM an_anagrafiche WHERE idanagrafica = in_interventi.idanagrafica), (SELECT idzona FROM an_sedi WHERE id = in_interventi.idsede)) AS idzona,
IF((in_interventi.idsede_destinazione = 0), (SELECT idzona FROM an_anagrafiche WHERE idanagrafica = in_interventi.idanagrafica), (SELECT idzona FROM an_sedi WHERE id = in_interventi.idsede_destinazione)) AS idzona,
(SELECT colore FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS colore,
in_interventi.id_preventivo as idpreventivo,
in_interventi.id_contratto as idcontratto

View File

@ -18,11 +18,10 @@ class Articolo extends Article
*
* @param Intervento $intervento
* @param Original $articolo
* @param int $id_automezzo
*
* @return self
*/
public static function build(Intervento $intervento, Original $articolo, $id_automezzo = null)
public static function build(Intervento $intervento, Original $articolo)
{
$model = parent::build($intervento, $articolo);
@ -38,49 +37,27 @@ class Articolo extends Article
public function movimenta($qta)
{
$articolo = $this->articolo;
$id_automezzo = $this->intervento->idautomezzo;
$dbo = database();
$automezzo_carico = $dbo->fetchNum('SELECT qta FROM mg_articoli_automezzi WHERE qta > 0 AND idarticolo = '.prepare($articolo->id).' AND idautomezzo = '.prepare($id_automezzo)) != 0;
// Movimento l'articolo
if (!empty($id_automezzo) && $automezzo_carico) {
$rs = $dbo->fetchArray("SELECT CONCAT_WS(' - ', nome, targa) AS nome FROM dt_automezzi WHERE id=".prepare($id_automezzo));
$nome = $rs[0]['nome'];
$intervento = $this->intervento;
$descrizione = ($qta < 0) ? tr("Carico sull'automezzo _NAME_", [
'_NAME_' => $nome,
]) : tr("Scarico dall'automezzo _NAME_", [
'_NAME_' => $nome,
]);
$numero = $intervento->codice;
$data = database()->fetchOne('SELECT MAX(orario_fine) AS data FROM in_interventi_tecnici WHERE idintervento = :id_intervento', [
':id_intervento' => $intervento->id,
])['data'];
$dbo->query('UPDATE mg_articoli_automezzi SET qta = qta - '.$qta.' WHERE idarticolo = '.prepare($articolo->id).' AND idautomezzo = '.prepare($id_automezzo));
$data = date('Y-m-d');
$data = $data ?: $intervento->data_richiesta;
$articolo->registra(-$qta, $descrizione, $data, false, [
'idautomezzo' => $id_automezzo,
'idintervento' => $this->idintervento,
]);
} else {
$intervento = $this->intervento;
$descrizione = ($qta < 0) ? tr('Ripristino articolo da intervento _NUM_', [
'_NUM_' => $numero,
]) : tr('Scarico magazzino per intervento _NUM_', [
'_NUM_' => $numero,
]);
$numero = $intervento->codice;
$data = database()->fetchOne('SELECT MAX(orario_fine) AS data FROM in_interventi_tecnici WHERE idintervento = :id_intervento', [
':id_intervento' => $intervento->id,
])['data'];
$data = $data ?: $intervento->data_richiesta;
$descrizione = ($qta < 0) ? tr('Ripristino articolo da intervento _NUM_', [
'_NUM_' => $numero,
]) : tr('Scarico magazzino per intervento _NUM_', [
'_NUM_' => $numero,
]);
$articolo->movimenta(-$qta, $descrizione, $data, false, [
'idintervento' => $intervento->id,
]);
}
$articolo->movimenta(-$qta, $descrizione, $data, false, [
'idintervento' => $intervento->id,
]);
}
public function getDirection()

View File

@ -1,9 +1,12 @@
<?php
include_once __DIR__.'/../../core.php';
unset($_SESSION['superselect']['idsede_partenza']);
unset($_SESSION['superselect']['idsede_destinazione']);
unset($_SESSION['superselect']['idanagrafica']);
$_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
?><form action="" method="post" id="edit-form">
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="op" value="update">

View File

@ -119,7 +119,7 @@ switch ($operazione) {
$dbo->query('INSERT INTO co_promemoria_righe (descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva, desc_iva,iva,id_promemoria,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva, desc_iva,iva,'.$idriga.',sconto,sconto_unitario,tipo_sconto FROM co_promemoria_righe WHERE id_promemoria = '.$id_record.' ');
// copio righe articoli nel nuovo promemoria
$dbo->query('INSERT INTO co_promemoria_articoli (idarticolo, id_promemoria,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$idriga.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto FROM co_promemoria_articoli WHERE id_promemoria = '.$id_record.' ');
$dbo->query('INSERT INTO co_promemoria_articoli (idarticolo, id_promemoria,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$idriga.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva, qta, um, abilita_serial, idimpianto FROM co_promemoria_articoli WHERE id_promemoria = '.$id_record.' ');
// Copia degli allegati
Uploads::copy([
@ -159,7 +159,6 @@ switch ($operazione) {
'idstatointervento' => $idstatointervento,
'idtipointervento' => $idtipointervento,
'idsede' => $idsede ?: 0,
'idautomezzo' => $idautomezzo ?: 0,
'codice' => $codice,
'data_richiesta' => $data_richiesta,
@ -182,7 +181,7 @@ switch ($operazione) {
$dbo->query('INSERT INTO in_righe_interventi (descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,idintervento,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,'.$idintervento.',sconto,sconto_unitario,tipo_sconto FROM co_promemoria_righe WHERE id_promemoria = '.$id_record.' ');
// copio gli articoli dal promemoria all'intervento
$dbo->query('INSERT INTO mg_articoli_interventi (idarticolo, idintervento,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$idintervento.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto FROM co_promemoria_articoli WHERE id_promemoria = '.$id_record.' ');
$dbo->query('INSERT INTO mg_articoli_interventi (idarticolo, idintervento,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$idintervento.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva, qta, um, abilita_serial, idimpianto FROM co_promemoria_articoli WHERE id_promemoria = '.$id_record.' ');
// Copia degli allegati
Uploads::copy([
@ -196,7 +195,7 @@ switch ($operazione) {
// Decremento la quantità per ogni articolo copiato
$rs_articoli = $dbo->fetchArray('SELECT * FROM mg_articoli_interventi WHERE idintervento = '.$idintervento.' ');
foreach ($rs_articoli as $rs_articolo) {
add_movimento_magazzino($rs_articolo['idarticolo'], -$rs_articolo['qta'], ['idautomezzo' => $rs_articolo['idautomezzo'], 'idintervento' => $idintervento]);
add_movimento_magazzino($rs_articolo['idarticolo'], -$rs_articolo['qta'], ['idintervento' => $idintervento]);
}
// Collego gli impianti del promemoria all' intervento appena inserito
@ -235,7 +234,7 @@ switch ($operazione) {
$idimpianto = post('idimpianto');
// Leggo la quantità attuale nell'intervento
$q = 'SELECT qta, idautomezzo, idimpianto FROM co_promemoria_articoli WHERE id='.prepare($idriga);
$q = 'SELECT qta, idimpianto FROM co_promemoria_articoli WHERE id='.prepare($idriga);
$rs = $dbo->fetchArray($q);
$old_qta = $rs[0]['qta'];
$idimpianto = $rs[0]['idimpianto'];
@ -247,7 +246,6 @@ switch ($operazione) {
case 'addarticolo':
$idarticolo = post('idarticolo');
// $idautomezzo = post('idautomezzo');
$descrizione = post('descrizione');
$idimpianto = post('idimpianto');
$qta = post('qta');
@ -271,7 +269,7 @@ switch ($operazione) {
$iva = (($prezzo_vendita * $qta) - $sconto) * $rs_iva[0]['percentuale'] / 100;
// Aggiunto il collegamento fra l'articolo e l'intervento
$idriga = $dbo->query('INSERT INTO co_promemoria_articoli(idarticolo, id_promemoria, idimpianto, idautomezzo, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, qta, um, abilita_serial) VALUES ('.prepare($idarticolo).', '.prepare($id_record).', '.(empty($idimpianto) ? 'NULL' : prepare($idimpianto)).', '.prepare($idautomezzo).', '.prepare($descrizione).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($qta).', '.prepare($um).', '.prepare($rsart[0]['abilita_serial']).')');
$idriga = $dbo->query('INSERT INTO co_promemoria_articoli(idarticolo, id_promemoria, idimpianto, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, qta, um, abilita_serial) VALUES ('.prepare($idarticolo).', '.prepare($id_record).', '.(empty($idimpianto) ? 'NULL' : prepare($idimpianto)).', '.prepare($descrizione).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($qta).', '.prepare($um).', '.prepare($rsart[0]['abilita_serial']).')');
break;

View File

@ -8,7 +8,6 @@ $plugin = Plugins::get($id_plugin);
$show_prezzi = Auth::user()['gruppo'] != 'Tecnici' || (Auth::user()['gruppo'] == 'Tecnici' && setting('Mostra i prezzi al tecnico'));
$idriga = get('idriga');
//$idautomezzo = (get('idautomezzo') == 'undefined') ? '' : get('idautomezzo');
// Lettura idanagrafica cliente e percentuale di sconto/rincaro in base al listino
$rs = $dbo->fetchArray('SELECT idanagrafica FROM co_contratti WHERE id='.prepare($id_record));
@ -57,8 +56,6 @@ if (empty($idriga)) {
$sconto_unitario = $rsr[0]['sconto_unitario'];
$tipo_sconto = $rsr[0]['tipo_sconto'];
$idautomezzo = $rsr[0]['idautomezzo'];
$idimpianto = $rsr[0]['idimpianto'];
$idcontratto_riga = $rsr[0]['id_promemoria'];
}

View File

@ -29,8 +29,8 @@ if (empty($records[0]['numero_esterno'])) {
// Leggo i dati della destinazione (se 0=sede legale, se!=altra sede da leggere da tabella an_sedi)
$destinazione = '';
if (!empty($records[0]['idsede'])) {
$rsd = $dbo->fetchArray('SELECT (SELECT codice FROM an_anagrafiche WHERE idanagrafica=an_sedi.idanagrafica) AS codice, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=an_sedi.idanagrafica) AS ragione_sociale, nomesede, indirizzo, indirizzo2, cap, citta, provincia, piva, codice_fiscale FROM an_sedi WHERE idanagrafica='.prepare($id_cliente).' AND id='.prepare($records[0]['idsede']));
if (!empty($records[0]['idsede_destinazione'])) {
$rsd = $dbo->fetchArray('SELECT (SELECT codice FROM an_anagrafiche WHERE idanagrafica=an_sedi.idanagrafica) AS codice, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=an_sedi.idanagrafica) AS ragione_sociale, nomesede, indirizzo, indirizzo2, cap, citta, provincia, piva, codice_fiscale FROM an_sedi WHERE idanagrafica='.prepare($id_cliente).' AND id='.prepare($records[0]['idsede_destinazione']));
if (!empty($rsd[0]['nomesede'])) {
$destinazione .= $rsd[0]['nomesede'].'<br/>';

View File

@ -48,30 +48,29 @@ $fattura_accompagnatoria = ($record['tipo_doc'] == 'Fattura accompagnatoria di v
$tipo_doc = ($fattura_accompagnatoria) ? 'Fattura accompagnatoria di vendita' : $tipo_doc;
// Leggo i dati della destinazione (se 0=sede legale, se!=altra sede da leggere da tabella an_sedi)
$rsd = $dbo->fetchArray('SELECT (SELECT codice FROM an_anagrafiche WHERE idanagrafica=an_sedi.idanagrafica) AS codice, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=an_sedi.idanagrafica) AS ragione_sociale, nomesede, indirizzo, indirizzo2, cap, citta, provincia, piva, codice_fiscale FROM an_sedi WHERE idanagrafica='.prepare($id_cliente).(!empty($record['idsede']) ? ' AND id='.prepare($record['idsede']) : ''));
$destinazione = '';
if (!empty($rsd[0]['nomesede'])) {
$destinazione .= $rsd[0]['nomesede'].'<br/>';
}
if (!empty($rsd[0]['indirizzo'])) {
$destinazione .= $rsd[0]['indirizzo'].'<br/>';
}
if (!empty($rsd[0]['indirizzo2'])) {
$destinazione .= $rsd[0]['indirizzo2'].'<br/>';
}
if (!empty($rsd[0]['cap'])) {
$destinazione .= $rsd[0]['cap'].' ';
}
if (!empty($rsd[0]['citta'])) {
$destinazione .= $rsd[0]['citta'];
}
if (!empty($rsd[0]['provincia'])) {
$destinazione .= ' ('.$rsd[0]['provincia'].')';
}
$id_sede = 0;
if (!empty($record['idsede_destinazione'])) {
$rsd = $dbo->fetchArray('SELECT (SELECT codice FROM an_anagrafiche WHERE idanagrafica=an_sedi.idanagrafica) AS codice, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=an_sedi.idanagrafica) AS ragione_sociale, nomesede, indirizzo, indirizzo2, cap, citta, provincia, piva, codice_fiscale FROM an_sedi WHERE idanagrafica='.prepare($id_cliente).' AND id='.prepare($record['idsede_destinazione']));
if (!empty($rsd[0]['nomesede'])) {
$destinazione .= $rsd[0]['nomesede'].'<br/>';
}
if (!empty($rsd[0]['indirizzo'])) {
$destinazione .= $rsd[0]['indirizzo'].'<br/>';
}
if (!empty($rsd[0]['indirizzo2'])) {
$destinazione .= $rsd[0]['indirizzo2'].'<br/>';
}
if (!empty($rsd[0]['cap'])) {
$destinazione .= $rsd[0]['cap'].' ';
}
if (!empty($rsd[0]['citta'])) {
$destinazione .= $rsd[0]['citta'];
}
if (!empty($rsd[0]['provincia'])) {
$destinazione .= ' ('.$rsd[0]['provincia'].')';
}
}
// Sostituzioni specifiche
$custom = [
'tipo_doc' => Stringy\Stringy::create($tipo_doc)->toUpperCase(),

View File

@ -52,7 +52,7 @@ include_once $docroot.'/templates/pdfgen_variables.php';
// LEFT OUTER JOIN mg_categorie ON (mg_categorie.id=mg_articoli.id_categoria AND mg_categorie.parent = 0) OR (mg_categorie.id=mg_articoli.id_sottocategoria AND mg_categorie.parent = 1)
$period_end = $_SESSION['period_end'];
$query = 'SELECT *, mg_articoli.id AS id_articolo, (SELECT nome FROM mg_categorie WHERE mg_categorie.parent = 0 AND mg_categorie.id = mg_articoli.id_categoria) AS categoria, (SELECT nome FROM mg_categorie WHERE mg_categorie.parent = 1 AND mg_categorie.id = mg_articoli.id_sottocategoria) AS subcategoria, (SELECT SUM(qta) FROM mg_movimenti WHERE mg_movimenti.idarticolo=mg_articoli.id AND (mg_movimenti.idintervento IS NULL OR mg_movimenti.idautomezzo = 0) AND data <= '.prepare($period_end).' ) AS qta FROM mg_articoli WHERE 1=1 '.$add_where.' HAVING 2=2 AND qta > 0 '.$add_having.' ORDER BY codice ASC';
$query = 'SELECT *, mg_articoli.id AS id_articolo, (SELECT nome FROM mg_categorie WHERE mg_categorie.parent = 0 AND mg_categorie.id = mg_articoli.id_categoria) AS categoria, (SELECT nome FROM mg_categorie WHERE mg_categorie.parent = 1 AND mg_categorie.id = mg_articoli.id_sottocategoria) AS subcategoria, (SELECT SUM(qta) FROM mg_movimenti WHERE mg_movimenti.idarticolo=mg_articoli.id AND (mg_movimenti.idintervento IS NULL) AND data <= '.prepare($period_end).' ) AS qta FROM mg_articoli WHERE 1=1 '.$add_where.' HAVING 2=2 AND qta > 0 '.$add_having.' ORDER BY codice ASC';
$rs = $dbo->fetchArray($query);
$totrows = sizeof($rs);

63
update/2_4_10.php Normal file
View File

@ -0,0 +1,63 @@
<?php
include("../core.php");
// Spostamento automezzi su sedi
$automezzi = $dbo->fetchArray('SELECT * FROM dt_automezzi');
foreach($automezzi as $automezzo){
$nomesede = [];
( !empty($automezzo['nome']) ) ? $nomesede[] = $automezzo['nome'] : null;
( !empty($automezzo['descrizione']) ) ? $nomesede[] = $automezzo['descrizione'] : null;
( !empty($automezzo['targa']) ) ? $nomesede[] = $automezzo['targa'] : null;
$dbo->insert(
'an_sedi',
[
'nomesede' => implode( ' - ', $nomesede ),
'idanagrafica' => setting('Azienda predefinita')
]
);
$idsede = $dbo->lastInsertedId();
// Aggiornamento sede di partenza su
$dbo->update(
'in_interventi',
[
'idsede_partenza' => $idsede,
],[
'idautomezzo' => $automezzo['id']
]
);
}
// Aggiornamento della sede azienda nei movimenti degli interventi
$dbo->query('UPDATE mg_movimenti SET idsede_azienda=(SELECT idsede_partenza FROM in_interventi WHERE in_interventi.id=mg_movimenti.idintervento) WHERE idintervento IS NOT NULL');
// Cancellazione idautomezzo da mg_movimenti e in_interventi
$dbo->query('ALTER TABLE in_interventi DROP idautomezzo');
$dbo->query('ALTER TABLE mg_movimenti DROP idautomezzo');
$dbo->query('ALTER TABLE co_promemoria_articoli DROP idautomezzo');
$dbo->query('ALTER TABLE co_righe_documenti DROP idautomezzo');
$dbo->query('ALTER TABLE mg_articoli_interventi DROP idautomezzo');
// Eliminazione tabelle degli automezzi non più usate
$dbo->query('DROP TABLE mg_articoli_automezzi');
$dbo->query('DROP TABLE dt_automezzi');
$dbo->query('DROP TABLE dt_automezzi_tecnici');
$dbo->query('DELETE FROM zz_modules WHERE name="Automezzi"');
// File e cartelle deprecate
$files = [
'modules/automezzi',
];
foreach ($files as $key => $value) {
$files[$key] = realpath(DOCROOT.'/'.$value);
}
delete($files);

61
update/2_4_10.sql Normal file
View File

@ -0,0 +1,61 @@
--
-- Aggiunta nuovi campi per tracciamento sedi
--
ALTER TABLE `mg_movimenti` ADD `idsede_azienda` INT NOT NULL AFTER `idautomezzo`, ADD `idsede_controparte` INT NOT NULL AFTER `idsede_azienda`;
--
-- Creazione plugin Giacenze
--
INSERT INTO `zz_plugins` (`id`, `name`, `title`, `idmodule_from`, `idmodule_to`, `position`, `script`, `enabled`, `default`, `order`, `compatibility`, `version`, `options2`, `options`, `directory`, `help`) VALUES (NULL, 'Giacenze', 'Giacenze', (SELECT id FROM zz_modules WHERE name='Articoli'), (SELECT id FROM zz_modules WHERE name='Articoli'), 'tab', 'articoli.giacenze.php', '1', '0', '0', '', '', NULL, NULL, '', '');
-- Aggiornamento nomi dei campi sede per ddt
ALTER TABLE `dt_ddt` CHANGE `idsede` `idsede_partenza` INT(11) NOT NULL;
ALTER TABLE `dt_ddt` ADD `idsede_destinazione` INT NULL AFTER `idsede_partenza`;
-- Aggiornamento idsede_destinazione per i ddt di vendita
UPDATE `dt_ddt` SET `idsede_destinazione`=`idsede_partenza` WHERE `idtipoddt` IN (SELECT id FROM dt_tipiddt WHERE dir="entrata");
UPDATE `dt_ddt` SET `idsede_partenza`=0 WHERE `idtipoddt` IN (SELECT id FROM dt_tipiddt WHERE dir="entrata");
UPDATE `dt_ddt` SET `idsede_destinazione`=0 WHERE `idtipoddt` IN (SELECT id FROM dt_tipiddt WHERE dir="uscita");
UPDATE `zz_modules` SET `options`='SELECT |select| FROM (((((((`dt_ddt` INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id`) LEFT OUTER JOIN `dt_righe_ddt` ON `dt_ddt`.`id` = `dt_righe_ddt`.`idddt`) LEFT OUTER JOIN `dt_causalet` ON `dt_ddt`.`idcausalet` = `dt_causalet`.`id`) LEFT OUTER JOIN `dt_spedizione` ON `dt_ddt`.`idspedizione` = `dt_spedizione`.`id`) LEFT OUTER JOIN `an_anagrafiche` `vettori` ON `dt_ddt`.`idvettore` = `vettori`.`idanagrafica`) LEFT OUTER JOIN `an_anagrafiche` AS `destinatari` ON `dt_ddt`.`idanagrafica` = `destinatari`.`idanagrafica`) LEFT OUTER JOIN an_sedi AS sedi ON `dt_ddt`.`idsede_partenza` = `sedi`.`id`) LEFT OUTER JOIN an_sedi AS sedi_destinazione ON dt_ddt.idsede_destinazione = sedi_destinazione.id WHERE 1=1 AND `dir` = ''entrata'' |date_period(`data`)| GROUP BY dt_ddt.id HAVING 2=2 ORDER BY `data` DESC, CAST(`numero_esterno` AS UNSIGNED) DESC,`dt_ddt`.created_at DESC' WHERE name="Ddt di vendita";
UPDATE `zz_modules` SET `options`='SELECT |select| FROM (((((((`dt_ddt` INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id`) LEFT OUTER JOIN `dt_righe_ddt` ON `dt_ddt`.`id` = `dt_righe_ddt`.`idddt`) LEFT OUTER JOIN `dt_causalet` ON `dt_ddt`.`idcausalet` = `dt_causalet`.`id`) LEFT OUTER JOIN `dt_spedizione` ON `dt_ddt`.`idspedizione` = `dt_spedizione`.`id`) LEFT OUTER JOIN `an_anagrafiche` `vettori` ON `dt_ddt`.`idvettore` = `vettori`.`idanagrafica`) LEFT OUTER JOIN `an_anagrafiche` AS `destinatari` ON `dt_ddt`.`idanagrafica` = `destinatari`.`idanagrafica`) LEFT OUTER JOIN `an_sedi` AS sedi ON `dt_ddt`.`idsede_partenza` = sedi.`id`) LEFT OUTER JOIN an_sedi AS sedi_destinazione ON dt_ddt.idsede_destinazione = sedi_destinazione.id WHERE 1=1 AND `dir` = ''uscita'' |date_period(`data`)| GROUP BY dt_ddt.id HAVING 2=2 ORDER BY `data` DESC, CAST(`numero_esterno` AS UNSIGNED) DESC,`dt_ddt`.created_at DESC' WHERE name="Ddt di acquisto";
-- Aggiornamento nomi dei campi sede per co_documenti
ALTER TABLE `co_documenti` ADD `idsede_destinazione` INT NOT NULL AFTER `idsede`;
ALTER TABLE `co_documenti` CHANGE `idsede` `idsede_partenza` INT(11) NOT NULL;
-- Aggiornamento idsede su co_documenti come ddt
UPDATE `co_documenti` SET `idsede_destinazione`=`idsede_partenza` WHERE `idtipodocumento` IN (SELECT id FROM co_tipidocumento WHERE dir="entrata");
UPDATE `co_documenti` SET `idsede_partenza`=0 WHERE `idtipodocumento` IN (SELECT id FROM co_tipidocumento WHERE dir="entrata");
UPDATE `co_documenti` SET `idsede_destinazione`=0 WHERE `idtipodocumento` IN (SELECT id FROM co_tipidocumento WHERE dir="uscita");
-- Rinomino idsede in in_interventi in idsede_destinazione
ALTER TABLE `in_interventi` CHANGE `idsede` `idsede_destinazione` INT(11) NOT NULL;
-- Creazione idsede_partenza in_interventi
ALTER TABLE `in_interventi` ADD `idsede_partenza` INT NOT NULL AFTER `prezzo_ore_unitario`;
-- Aggiunta sede destinazione ddt uscita
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES ('0', (SELECT id FROM zz_modules WHERE name='Ddt di vendita'), 'Sede destinazione', 'IF(`dt_ddt`.`idsede_destinazione`=0, \'Sede legale\',CONCAT_WS(\' - \', sedi_destinazione.nomesede,sedi_destinazione.citta))', '5', '1', '0', '0', '', '', '1', '0', '0');
-- Aggiunta sede destinazione ddt in entrata
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES ('0', (SELECT id FROM zz_modules WHERE name='Ddt di acquisto'), 'Sede destinazione', 'IF(`dt_ddt`.`idsede_destinazione`=0, \'Sede legale\',CONCAT_WS(\' - \', sedi_destinazione.nomesede,sedi_destinazione.citta))', '5', '1', '0', '1', '', '', '1', '0', '0');
-- Update sede -> sede partenza ddt in uscita
UPDATE zz_views SET query='IF(dt_ddt.idsede_partenza=0, "Sede legale",CONCAT_WS(" - ", sedi.nomesede,sedi.citta))', name='Sede partenza' WHERE id_module=(SELECT id FROM zz_modules WHERE name="Ddt di vendita") AND name= "sede";
-- Update sede -> sede partenza ddt in entrata
UPDATE zz_views SET query='IF(`dt_ddt`.`idsede_partenza`=0, "Sede legale",CONCAT_WS(" - ", sedi.nomesede,sedi.citta))', name="Sede partenza" WHERE id_module=(SELECT id FROM zz_modules WHERE name="Ddt di acquisto") AND name= "sede";
-- Aggiornamento idsede_destinazione sui movimenti degli articoli inseriti sulle attività
UPDATE `mg_movimenti` SET `idsede_controparte` = (SELECT `idsede_destinazione` FROM `in_interventi` WHERE `in_interventi`.`id` = `mg_movimenti`.`idintervento`) WHERE `idintervento` IS NOT NULL;
-- Aggiorno idsede_azienda e controparte per ddt
UPDATE `mg_movimenti` SET `idsede_controparte` (SELECT `idsede_destinazione` FROM `dt_ddt` WHERE `dt_ddt`.`id` = `mg_movimenti`.`idddt`) WHERE `idddt`!=0;
UPDATE `mg_movimenti` SET `idsede_azienda` (SELECT `idsede_partenza` FROM `dt_ddt` WHERE `dt_ddt`.`id` = `mg_movimenti`.`idddt`) WHERE `idddt`!=0;
-- Aggiorno idsede_azienda e controparte per documenti
UPDATE `mg_movimenti` SET `idsede_controparte` (SELECT `idsede_destinazione` FROM `co_documenti` WHERE `co_documenti`.`id` = `mg_movimenti`.`iddocumento`) WHERE `iddocumento`!=0;
UPDATE `mg_movimenti` SET `idsede_azienda` (SELECT `idsede_destinazione` FROM `co_documenti` WHERE `co_documenti`.`id` = `mg_movimenti`.`iddocumento`) WHERE `iddocumento`!=0;

View File

@ -40,8 +40,6 @@ return [
'co_statipreventivi',
'co_tipidocumento',
'dt_aspettobeni',
'dt_automezzi',
'dt_automezzi_tecnici',
'dt_causalet',
'dt_ddt',
'dt_porto',
@ -64,7 +62,6 @@ return [
'in_tipiintervento',
'in_vociservizio',
'mg_articoli',
'mg_articoli_automezzi',
'mg_articoli_interventi',
'mg_categorie',
'mg_listini',