diff --git a/modules/modelli_primanota/edit.php b/modules/modelli_primanota/edit.php
index b364dc12d..39fca21dc 100644
--- a/modules/modelli_primanota/edit.php
+++ b/modules/modelli_primanota/edit.php
@@ -11,8 +11,11 @@ include_once __DIR__.'/../../core.php';
-
- {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$descrizione$" ]}
+
+ {[ "type": "text", "label": "", "name": "nome", "required": 1, "value": "$nome$" ]}
+
+
+ {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$descrizione$" ]}
@@ -52,7 +55,7 @@ for ($i = 0; $i < 10; ++$i) {
echo '
- {[ "type": "select", "name": "idconto['.$i.']", "value": "'.$rs[$i]['idconto'].'", "ajax-source": "conti", "required": "'.$required.'" ]}
+ {[ "type": "select", "name": "idconto['.$i.']", "value": "'.$rs[$i]['idconto'].'", "ajax-source": "conti-modelliprimanota", "required": "'.$required.'" ]}
|
';
}
@@ -80,6 +83,50 @@ echo '
+
+
+
';
+
+if (!empty($variables)) {
+ echo '
+
'.tr("Puoi utilizzare le seguenti sequenze di testo all'interno del campo causale, verranno sostituite in fase generazione prima nota dalla fattura.").':
+
';
+
+ foreach ($variables as $variable => $value) {
+ echo '
+ {'.$variable.'}
';
+ }
+
+ echo '
+
';
+} else {
+ echo '
+
'.tr('Non sono state definite variabili da utilizzare nel template').'.
';
+}
+
+echo '
+
+
';
+?>
+
+
+
+
+
diff --git a/modules/modelli_primanota/init.php b/modules/modelli_primanota/init.php
index eb2888a22..8903f4738 100644
--- a/modules/modelli_primanota/init.php
+++ b/modules/modelli_primanota/init.php
@@ -1,7 +1,5 @@
fetchOne('SELECT * FROM co_movimenti_modelli WHERE id='.prepare($id_record));
+ $record = $dbo->fetchOne('SELECT * FROM co_movimenti_modelli WHERE idmastrino='.prepare($id_record));
}
diff --git a/modules/ordini/actions.php b/modules/ordini/actions.php
index 3d557a40f..f1f4d6bb2 100644
--- a/modules/ordini/actions.php
+++ b/modules/ordini/actions.php
@@ -220,6 +220,7 @@ switch (post('op')) {
flash()->info(tr('Riga rimossa!'));
}
+
break;
case 'manage_sconto':
@@ -229,8 +230,6 @@ switch (post('op')) {
$sconto = Sconto::build($ordine);
}
- $sconto->qta = 1;
-
$sconto->descrizione = post('descrizione');
$sconto->id_iva = post('idiva');
diff --git a/modules/partitario/ajax/select.php b/modules/partitario/ajax/select.php
index 227e61b30..874040a3a 100644
--- a/modules/partitario/ajax/select.php
+++ b/modules/partitario/ajax/select.php
@@ -84,4 +84,57 @@ switch ($resource) {
}
break;
+
+ case 'conti-modelliprimanota':
+ $query = 'SELECT co_pianodeiconti2.* FROM co_pianodeiconti2 LEFT JOIN co_pianodeiconti3 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id |where| GROUP BY co_pianodeiconti2.id';
+
+ if ($search != '') {
+ $wh = 'WHERE (co_pianodeiconti3.descrizione LIKE '.prepare('%'.$search.'%')." OR CONCAT( co_pianodeiconti2.numero, '.', co_pianodeiconti3.numero ) LIKE ".prepare('%'.$search.'%').')';
+ } else {
+ $wh = '';
+ }
+ $query = str_replace('|where|', $wh, $query);
+
+ $rs = $dbo->fetchArray($query);
+ foreach ($rs as $r) {
+ $results[] = ['text' => $r['numero'].' '.$r['descrizione'], 'children' => []];
+
+ $subquery = 'SELECT co_pianodeiconti3.* FROM co_pianodeiconti3 INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id |where|';
+
+ $where = [];
+ $filter = [];
+ $search_fields = [];
+
+ foreach ($elements as $element) {
+ $filter[] = 'co_pianodeiconti3.id='.prepare($element);
+ }
+ if (!empty($filter)) {
+ $where[] = '('.implode(' OR ', $filter).')';
+ }
+
+ $where[] = 'idpianodeiconti2='.prepare($r['id']);
+
+ if (!empty($search)) {
+ $search_fields[] = '(co_pianodeiconti3.descrizione LIKE '.prepare('%'.$search.'%')." OR CONCAT(co_pianodeiconti2.numero, '.', co_pianodeiconti3.numero) LIKE ".prepare('%'.$search.'%').')';
+ }
+ if (!empty($search_fields)) {
+ $where[] = '('.implode(' OR ', $search_fields).')';
+ }
+
+ $wh = '';
+ if (count($where) != 0) {
+ $wh = 'WHERE '.implode(' AND ', $where);
+ }
+ $subquery = str_replace('|where|', $wh, $subquery);
+
+ $rs2 = $dbo->fetchArray($subquery);
+ foreach ($rs2 as $r2) {
+ $results[count($results) - 1]['children'][] = ['id' => $r2['id'], 'text' => $r['numero'].'.'.$r2['numero'].' '.$r2['descrizione']];
+ }
+
+ $results[] = ['text' => 'Conto cliente/fornitore fattura', 'children' => []];
+ $results[count($results) - 1]['children'][] = ['id' => '-1', 'text' => '{Conto cliente/fornitore fattura}'];
+ }
+
+ break;
}
diff --git a/modules/preventivi/actions.php b/modules/preventivi/actions.php
index 910c13320..7467a43b5 100644
--- a/modules/preventivi/actions.php
+++ b/modules/preventivi/actions.php
@@ -32,7 +32,7 @@ switch (post('op')) {
$idstato = post('idstato');
$nome = post('nome');
$idanagrafica = post('idanagrafica');
- $idsede = post('idsede');
+ $idsede = post('idsede');
$idagente = post('idagente');
$idreferente = post('idreferente');
$idpagamento = post('idpagamento');
@@ -70,7 +70,7 @@ switch (post('op')) {
$query = 'UPDATE co_preventivi SET idstato='.prepare($idstato).','.
' nome='.prepare($nome).','.
' idanagrafica='.prepare($idanagrafica).','.
- ' idsede='.prepare($idsede).','.
+ ' idsede='.prepare($idsede).','.
' idagente='.prepare($idagente).','.
' idreferente='.prepare($idreferente).','.
' idpagamento='.prepare($idpagamento).','.
@@ -116,9 +116,9 @@ switch (post('op')) {
$dbo->query('UPDATE tmp SET idpreventivo = '.prepare($id_record));
$dbo->query('INSERT INTO co_righe_preventivi SELECT NULL,tmp.* FROM tmp');
$dbo->query('DROP TEMPORARY TABLE tmp');
-
- //Azzero eventuale quantità evasa
- $dbo->query('UPDATE co_righe_preventivi SET qta_evasa=0 WHERE id='.prepare($id_record));
+
+ //Azzero eventuale quantità evasa
+ $dbo->query('UPDATE co_righe_preventivi SET qta_evasa=0 WHERE id='.prepare($id_record));
flash()->info(tr('Preventivo duplicato correttamente!'));
@@ -243,8 +243,6 @@ switch (post('op')) {
$sconto = Sconto::build($preventivo);
}
- $sconto->qta = 1;
-
$sconto->descrizione = post('descrizione');
$sconto->id_iva = post('idiva');
@@ -371,7 +369,6 @@ switch (post('op')) {
'sconto' => $rs_righe_preventivo[$i]['sconto'],
'sconto_unitario' => $rs_righe_preventivo[$i]['sconto_unitario'],
'tipo_sconto' => $rs_righe_preventivo[$i]['tipo_sconto'],
- 'sconto_globale' => $rs_righe_preventivo[$i]['sconto_globale'],
'um' => $rs_righe_preventivo[$i]['um'],
'qta' => $rs_righe_preventivo[$i]['qta'],
'order' => $rs_righe_preventivo[$i]['order'],
diff --git a/modules/primanota/actions.php b/modules/primanota/actions.php
index 3ae5c2e3f..097a4c8eb 100644
--- a/modules/primanota/actions.php
+++ b/modules/primanota/actions.php
@@ -9,6 +9,7 @@ switch (post('op')) {
$data = post('data');
$idmastrino = get_new_idmastrino();
$descrizione = post('descrizione');
+ $insoluto = post('insoluto');
// Lettura info fattura
$query = 'SELECT *, co_documenti.note, co_documenti.idpagamento, co_documenti.id AS iddocumento, co_statidocumento.descrizione AS `stato`, co_tipidocumento.descrizione AS `descrizione_tipodoc` FROM ((co_documenti LEFT OUTER JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id) INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='.prepare($iddocumento);
@@ -42,9 +43,12 @@ switch (post('op')) {
}
}
- // Inserisco nello scadenziario il totale pagato
- if ($totale_pagato != 0) {
+ if ($totale_pagato != 0 && empty($insoluto)) {
+ // Inserisco nello scadenziario il totale pagato
aggiorna_scadenziario($iddocumento, abs($totale_pagato), $data);
+ } elseif (!empty($insoluto)) {
+ //Rimuovo dallo scadenzario l'insoluto
+ aggiorna_scadenziario($iddocumento, -abs($totale_pagato), $data);
}
// Se non va a buon fine qualcosa elimino il mastrino per non lasciare incongruenze nel db
@@ -61,8 +65,10 @@ switch (post('op')) {
// Aggiorno lo stato della fattura
if (abs($rs[0]['tot_pagato']) == abs($rs[0]['tot_da_pagare'])) {
$dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Pagato') WHERE id=".prepare($iddocumento));
- } else {
+ } elseif (abs($rs[0]['tot_pagato']) != abs($rs[0]['tot_da_pagare']) && abs($rs[0]['tot_pagato']) != '0') {
$dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Parzialmente pagato') WHERE id=".prepare($iddocumento));
+ } else {
+ $dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Emessa') WHERE id=".prepare($iddocumento));
}
// Aggiorno lo stato dei preventivi collegati alla fattura se ce ne sono
@@ -101,7 +107,7 @@ switch (post('op')) {
for ($i = 0; $i < sizeof(post('idconto')); ++$i) {
$idconto = post('idconto')[$i];
- $query = 'INSERT INTO co_movimenti_modelli(idmastrino, descrizione, idconto) VALUES('.prepare($idmastrino).', '.prepare($descrizione).', '.prepare($idconto).')';
+ $query = 'INSERT INTO co_movimenti_modelli(idmastrino, nome, descrizione, idconto) VALUES('.prepare($idmastrino).', '.prepare($descrizione).', '.prepare($descrizione).', '.prepare($idconto).')';
$dbo->query($query);
}
}
diff --git a/modules/primanota/add.php b/modules/primanota/add.php
index e9810794a..c70711922 100644
--- a/modules/primanota/add.php
+++ b/modules/primanota/add.php
@@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php';
?>