Aggiunta tabella co_statipreventivi_lang
This commit is contained in:
parent
17e004f0f7
commit
fe6677e760
|
@ -52,20 +52,24 @@ $righe = $dbo->fetchArray(
|
|||
|
||||
$ultimo_prezzo_preventivo = $dbo->fetchArray(
|
||||
'SELECT
|
||||
co_righe_contratti.idarticolo,
|
||||
co_righe_preventivi.prezzo_unitario,
|
||||
DATE(co_righe_preventivi.updated_at) AS updated_at
|
||||
FROM
|
||||
co_preventivi
|
||||
INNER JOIN co_righe_preventivi ON co_righe_preventivi.idpreventivo = co_preventivi.id
|
||||
INNER JOIN mg_articoli ON mg_articoli.id = co_righe_preventivi.idarticolo
|
||||
INNER JOIN co_righe_contratti ON co_righe_contratti.idarticolo = mg_articoli.id
|
||||
WHERE
|
||||
co_preventivi.idanagrafica ='.prepare($id_anagrafica).' AND co_righe_contratti.idarticolo ='.prepare($riga['idarticolo']).' AND co_preventivi.idstato NOT IN (SELECT id FROM co_statipreventivi WHERE descrizione = "Bozza" OR descrizione = "In attesa di conferma" OR descrizione = "Rifiutato")
|
||||
GROUP BY
|
||||
mg_articoli.id, co_righe_preventivi.id
|
||||
ORDER BY
|
||||
updated_at DESC'
|
||||
`co_righe_contratti`.`idarticolo`,
|
||||
`co_righe_preventivi`.`prezzo_unitario`,
|
||||
DATE(`co_righe_preventivi`.`updated_at`) AS updated_at
|
||||
FROM
|
||||
`co_preventivi`
|
||||
INNER JOIN `co_righe_preventivi` ON `co_righe_preventivi`.`idpreventivo` = `co_preventivi`.`id`
|
||||
INNER JOIN `mg_articoli` ON `mg_articoli`.`id` = `co_righe_preventivi`.`idarticolo`
|
||||
INNER JOIN `co_righe_contratti` ON `co_righe_contratti`.`idarticolo` = `mg_articoli`.`id`
|
||||
LEFT JOIN `co_statipreventivi` ON `co_statipreventivi`.`id` = `co_preventivi`.`idstato`
|
||||
LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi_lang`.`id_record` = `co_statipreventivi`.`id` AND `co_statipreventivi_lang`.`id_lang` = '.prepare(setting('Lingua')).')
|
||||
WHERE
|
||||
`co_preventivi`.`idanagrafica` ='.prepare($id_anagrafica).' AND
|
||||
`co_righe_contratti`.`idarticolo` ='.prepare($riga['idarticolo']).' AND
|
||||
`co_statipreventivi_lang`.`name` NOT IN ("Bozza", "In attesa di conferma", "Rifiutato")
|
||||
GROUP BY
|
||||
`mg_articoli`.`id`, `co_righe_preventivi`.`id`
|
||||
ORDER BY
|
||||
`updated_at` DESC'
|
||||
)[0];
|
||||
|
||||
$ultimo_prezzo_vendita = $dbo->fetchArray(
|
||||
|
|
|
@ -123,22 +123,25 @@ switch (filter('op')) {
|
|||
if (setting('Visualizza informazioni aggiuntive sul calendario')) {
|
||||
// # Box allDay preventivi
|
||||
$query = 'SELECT
|
||||
co_preventivi.id,
|
||||
co_preventivi.nome,
|
||||
co_preventivi.numero,
|
||||
co_preventivi.data_accettazione,
|
||||
co_preventivi.data_conclusione,
|
||||
co_statipreventivi.is_pianificabile,
|
||||
co_statipreventivi.descrizione as stato,
|
||||
co_statipreventivi.is_completato,
|
||||
(SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica = co_preventivi.idanagrafica) AS cliente,
|
||||
(SELECT id FROM zz_files WHERE id_record = co_preventivi.id AND id_module = '.prepare($modulo_preventivi->id).' LIMIT 1) AS have_attachments
|
||||
FROM co_preventivi
|
||||
LEFT JOIN co_statipreventivi ON co_preventivi.idstato = co_statipreventivi.id
|
||||
`co_preventivi`.`id`,
|
||||
`co_preventivi`.`nome`,
|
||||
`co_preventivi`.`numero`,
|
||||
`co_preventivi`.`data_accettazione`,
|
||||
`co_preventivi`.`data_conclusione`,
|
||||
`co_statipreventivi`.`is_pianificabile`,
|
||||
`co_statipreventivi_lang`.`name` as stato,
|
||||
`co_statipreventivi`.`is_completato`,
|
||||
`an_anagrafiche`. `ragione_sociale` AS cliente,
|
||||
`zz_files`.`id` AS have_attachments
|
||||
FROM `co_preventivi`
|
||||
INNER JOIN `an_anagrafiche` ON `co_preventivi`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
|
||||
LEFT JOIN `zz_files` ON `zz_files`.`id_record` = `co_preventivi`.`id` AND `zz_files`.`id_module` = '.prepare($modulo_preventivi->id).'
|
||||
LEFT JOIN `co_statipreventivi` ON `co_preventivi`.`idstato` = `co_statipreventivi`.`id`
|
||||
LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi_lang`.`id_record` = `co_statipreventivi`.`id` AND `co_statipreventivi_lang`.`id_lang` = '.prepare(setting('Lingua')).')
|
||||
WHERE
|
||||
(
|
||||
(co_preventivi.data_accettazione >= '.prepare($start).' AND co_preventivi.data_accettazione <= '.prepare($end).')
|
||||
OR (co_preventivi.data_conclusione >= '.prepare($start).' AND co_preventivi.data_conclusione <= '.prepare($end).')
|
||||
(`co_preventivi`.`data_accettazione` >= '.prepare($start).' AND `co_preventivi`.`data_accettazione` <= '.prepare($end).')
|
||||
OR (`co_preventivi`.`data_conclusione` >= '.prepare($start).' AND `co_preventivi`.`data_conclusione` <= '.prepare($end).')
|
||||
)';
|
||||
|
||||
$preventivi = $dbo->fetchArray($query);
|
||||
|
@ -146,7 +149,7 @@ switch (filter('op')) {
|
|||
foreach ($preventivi as $preventivo) {
|
||||
if ($preventivo['is_pianificabile'] == 1 || $preventivo['stato'] = 'In attesa di conferma') {
|
||||
if (!empty($preventivo['data_accettazione']) && $preventivo['data_accettazione'] != '0000-00-00') {
|
||||
$query.'AND co_statipreventivi.is_pianificabile=1';
|
||||
$query.'AND `co_statipreventivi`.`is_pianificabile`=1';
|
||||
$results[] = [
|
||||
'id' => 'A_'.$modulo_preventivi->id.'_'.$preventivo['id'],
|
||||
'idintervento' => $preventivo['id'],
|
||||
|
@ -335,15 +338,20 @@ switch (filter('op')) {
|
|||
}
|
||||
} else {
|
||||
$query = 'SELECT
|
||||
co_preventivi.nome,
|
||||
co_preventivi.numero,
|
||||
co_preventivi.data_accettazione,
|
||||
co_preventivi.data_conclusione,
|
||||
(SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica = co_preventivi.idanagrafica) AS cliente,
|
||||
(SELECT id FROM zz_files WHERE id_record = '.prepare($id).' AND id_module = '.prepare($modulo_preventivi->id).' LIMIT 1) AS have_attachments
|
||||
FROM co_preventivi
|
||||
LEFT JOIN co_statipreventivi ON co_preventivi.idstato = co_statipreventivi.id
|
||||
WHERE co_preventivi.id='.prepare($id);
|
||||
`co_preventivi`.`nome`,
|
||||
`co_preventivi`.`numero`,
|
||||
`co_preventivi`.`data_accettazione`,
|
||||
`co_preventivi`.`data_conclusione`,
|
||||
`an_anagrafiche`.`ragione_sociale` AS cliente,
|
||||
`zz_files`.`id` AS have_attachments
|
||||
FROM
|
||||
`co_preventivi`
|
||||
INNER JOIN `an_anagrafiche` ON `co_preventivi`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
|
||||
LEFT JOIN zz_files ON zz_files.id_record = co_preventivi.id AND zz_files.id_module = '.prepare($modulo_preventivi->id).'
|
||||
LEFT JOIN `co_statipreventivi` ON `co_preventivi`.`idstato` = `co_statipreventivi`.`id`
|
||||
LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi_lang`.`id_record` = `co_statipreventivi`.`id` AND `co_statipreventivi_lang`.`id_lang` = '.prepare(setting('Lingua')).')
|
||||
WHERE
|
||||
`co_preventivi`.`id`='.prepare($id);
|
||||
|
||||
$rs = $dbo->fetchArray($query);
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ switch (post('op')) {
|
|||
// Informazioni della fattura
|
||||
$tipo_documento = Tipo::where('id', post('idtipodocumento'))->first();
|
||||
|
||||
$stato_documenti_accodabili = Stato::where('descrizione', 'Bozza')->first();
|
||||
$stato_documenti_accodabili = (new Stato())->getByName('Bozza')->id_record;
|
||||
$accodare = post('accodare');
|
||||
|
||||
$data = date('Y-m-d');
|
||||
|
|
|
@ -53,20 +53,22 @@ $righe = $dbo->fetchArray(
|
|||
|
||||
$ultimo_prezzo_preventivo = $dbo->fetchArray(
|
||||
'SELECT
|
||||
dt_righe_ddt.idarticolo,
|
||||
co_righe_preventivi.prezzo_unitario,
|
||||
DATE(co_righe_preventivi.updated_at) AS updated_at
|
||||
FROM
|
||||
co_preventivi
|
||||
INNER JOIN co_righe_preventivi ON co_righe_preventivi.idpreventivo = co_preventivi.id
|
||||
INNER JOIN mg_articoli ON mg_articoli.id = co_righe_preventivi.idarticolo
|
||||
INNER JOIN dt_righe_ddt ON dt_righe_ddt.idarticolo = mg_articoli.id
|
||||
WHERE
|
||||
co_preventivi.idanagrafica = '.prepare($id_anagrafica).' AND dt_righe_ddt.idarticolo = '.prepare($riga['idarticolo']).' AND co_preventivi.idstato NOT IN (SELECT id FROM co_statipreventivi WHERE descrizione = "Bozza" OR descrizione = "In attesa di conferma" OR descrizione = "Rifiutato")
|
||||
GROUP BY
|
||||
mg_articoli.id, co_righe_preventivi.id
|
||||
ORDER BY
|
||||
updated_at DESC'
|
||||
`dt_righe_ddt`.`idarticolo`,
|
||||
`co_righe_preventivi`.`prezzo_unitario`,
|
||||
DATE(`co_righe_preventivi`.`updated_at`) AS updated_at
|
||||
FROM
|
||||
`co_preventivi`
|
||||
INNER JOIN `co_righe_preventivi` ON `co_righe_preventivi`.`idpreventivo` = `co_preventivi`.`id`
|
||||
LEFT JOIN `co_statipreventivi` ON `co_preventivi`.`idstato` = `co_statipreventivi`.`id`
|
||||
LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi_lang`.`id_record` = `co_statipreventivi`.`id` AND `co_statipreventivi_lang`.`lang` = '.prepare(setting('Lingua')).')
|
||||
INNER JOIN `mg_articoli` ON `mg_articoli`.`id` = `co_righe_preventivi`.`idarticolo`
|
||||
INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idarticolo` = `mg_articoli`.`id`
|
||||
WHERE
|
||||
`co_preventivi`.`idanagrafica` = '.prepare($id_anagrafica).' AND `dt_righe_ddt`.`idarticolo` = '.prepare($riga['idarticolo']).' AND `co_statipreventivi_lang`.`name` NOT IN ("Bozza", "In attesa di conferma", "Rifiutato")
|
||||
GROUP BY
|
||||
`mg_articoli`.`id`, `co_righe_preventivi`.`id`
|
||||
ORDER BY
|
||||
`updated_at` DESC'
|
||||
)[0];
|
||||
|
||||
$ultimo_prezzo_vendita = $dbo->fetchArray(
|
||||
|
|
|
@ -770,7 +770,14 @@ if (!$block_edit) {
|
|||
}
|
||||
|
||||
// Lettura preventivi accettati, in attesa di conferma o in lavorazione
|
||||
$prev_query = 'SELECT COUNT(*) AS tot FROM co_preventivi WHERE idanagrafica='.prepare($record['idanagrafica']).' AND idstato IN(SELECT id FROM co_statipreventivi WHERE is_fatturabile = 1) AND default_revision=1 AND co_preventivi.id IN (SELECT idpreventivo FROM co_righe_preventivi WHERE co_righe_preventivi.idpreventivo = co_preventivi.id AND (qta - qta_evasa) > 0)';
|
||||
$prev_query = 'SELECT
|
||||
COUNT(*) AS tot
|
||||
FROM
|
||||
`co_preventivi`
|
||||
LEFT JOIN `co_righe_preventivi` ON `co_preventivi`.id = `co_righe_preventivi`.idpreventivo
|
||||
INNER JOIN `co_statipreventivi` ON `co_statipreventivi`.id = `co_preventivi`.idstato
|
||||
WHERE
|
||||
`idanagrafica`='.prepare($record['idanagrafica']).' AND `co_statipreventivi`.`is_fatturabile` = 1 AND `default_revision` = 1 AND (`co_righe_preventivi`.`qta` - `co_righe_preventivi`.`qta_evasa`) > 0';
|
||||
$preventivi = $dbo->fetchArray($prev_query)[0]['tot'];
|
||||
|
||||
// Lettura contratti accettati, in attesa di conferma o in lavorazione
|
||||
|
|
|
@ -53,20 +53,21 @@ $righe = $dbo->fetchArray(
|
|||
|
||||
$ultimo_prezzo_preventivo = $dbo->fetchArray(
|
||||
'SELECT
|
||||
co_righe_documenti.idarticolo,
|
||||
co_righe_preventivi.prezzo_unitario,
|
||||
DATE(co_righe_preventivi.updated_at) AS updated_at
|
||||
FROM
|
||||
co_preventivi
|
||||
INNER JOIN co_righe_preventivi ON co_righe_preventivi.idpreventivo = co_preventivi.id
|
||||
INNER JOIN mg_articoli ON mg_articoli.id = co_righe_preventivi.idarticolo
|
||||
INNER JOIN co_righe_documenti ON co_righe_documenti.idarticolo = mg_articoli.id
|
||||
WHERE
|
||||
co_preventivi.idanagrafica = '.prepare($id_anagrafica).' AND co_righe_documenti.idarticolo = '.prepare($riga['idarticolo']).' AND co_preventivi.idstato NOT IN (SELECT id FROM co_statipreventivi WHERE descrizione = "Bozza" OR descrizione = "In attesa di conferma" OR descrizione = "Rifiutato")
|
||||
GROUP BY
|
||||
mg_articoli.id, co_righe_preventivi.id
|
||||
ORDER BY
|
||||
updated_at DESC'
|
||||
`co_righe_documenti`.`idarticolo`,
|
||||
`co_righe_preventivi`.`prezzo_unitario`,
|
||||
DATE(`co_righe_preventivi`.`updated_at`) AS updated_at
|
||||
FROM
|
||||
`co_preventivi`
|
||||
INNER JOIN `co_righe_preventivi` ON `co_righe_preventivi`.`idpreventivo` = `co_preventivi`.`id`
|
||||
INNER JOIN `mg_articoli` ON `mg_articoli`.`id` = `co_righe_preventivi`.`idarticolo`
|
||||
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idarticolo` = `mg_articoli`.`id`
|
||||
INNER JOIN `co_statipreventivi` ON `co_preventivi`.`idstato` = `co_statipreventivi`.`id`
|
||||
WHERE
|
||||
`co_preventivi`.`idanagrafica` = '.prepare($id_anagrafica).' AND `co_righe_documenti`.`idarticolo` = '.prepare($riga['idarticolo']).' AND `co_statipreventivi`.`id` NOT IN ("Bozza", "In attesa di conferma", "Rifiutato")
|
||||
GROUP BY
|
||||
`mg_articoli`.`id`, `co_righe_preventivi`.`id`
|
||||
ORDER BY
|
||||
`updated_at` DESC'
|
||||
)[0];
|
||||
|
||||
$ultimo_prezzo_vendita = $dbo->fetchArray(
|
||||
|
|
|
@ -488,7 +488,14 @@ if (!empty($record['idcontratto'])) {
|
|||
|
||||
if (!$block_edit) {
|
||||
// Lettura preventivi accettati, in attesa di conferma o in lavorazione
|
||||
$prev_query = 'SELECT COUNT(*) AS tot FROM co_preventivi WHERE idanagrafica='.prepare($record['idanagrafica']).' AND idstato IN(SELECT id FROM co_statipreventivi WHERE is_fatturabile = 1) AND default_revision=1 AND co_preventivi.id IN (SELECT idpreventivo FROM co_righe_preventivi WHERE co_righe_preventivi.idpreventivo = co_preventivi.id AND (qta - qta_evasa) > 0)';
|
||||
$prev_query = 'SELECT
|
||||
COUNT(*) AS tot
|
||||
FROM
|
||||
`co_preventivi`
|
||||
INNER JOIN `co_statipreventivi` ON `co_preventivi`.`idstato` = `co_statipreventivi`.`id`
|
||||
INNER JOIN `co_righe_preventivi` ON `co_preventivi`.`id` = `co_righe_preventivi`.`idpreventivo`
|
||||
WHERE
|
||||
idanagrafica='.prepare($record['idanagrafica']).' AND `co_statipreventivi`.`is_fatturabile` = 1 AND `default_revision`=1 AND ((`co_righe_preventivi`.`qta` - `co_righe_preventivi`.`qta_evasa`) > 0)';
|
||||
$preventivi = $dbo->fetchArray($prev_query)[0]['tot'];
|
||||
|
||||
// Lettura contratti accettati, in attesa di conferma o in lavorazione
|
||||
|
|
|
@ -53,20 +53,22 @@ $righe = $dbo->fetchArray(
|
|||
|
||||
$ultimo_prezzo_preventivo = $dbo->fetchArray(
|
||||
'SELECT
|
||||
in_righe_interventi.idarticolo,
|
||||
co_righe_preventivi.prezzo_unitario,
|
||||
DATE(co_righe_preventivi.updated_at) AS updated_at
|
||||
FROM
|
||||
co_preventivi
|
||||
INNER JOIN co_righe_preventivi ON co_righe_preventivi.idpreventivo = co_preventivi.id
|
||||
INNER JOIN mg_articoli ON mg_articoli.id = co_righe_preventivi.idarticolo
|
||||
INNER JOIN in_righe_interventi ON in_righe_interventi.idarticolo = mg_articoli.id
|
||||
WHERE
|
||||
co_preventivi.idanagrafica ='.prepare($id_anagrafica).' AND in_righe_interventi.idarticolo ='.prepare($riga['idarticolo']).' AND co_preventivi.idstato NOT IN (SELECT id FROM co_statipreventivi WHERE descrizione = "Bozza" OR descrizione = "In attesa di conferma" OR descrizione = "Rifiutato")
|
||||
GROUP BY
|
||||
mg_articoli.id, co_righe_preventivi.id
|
||||
ORDER BY
|
||||
updated_at DESC'
|
||||
`in_righe_interventi`.`idarticolo`,
|
||||
`co_righe_preventivi`.`prezzo_unitario`,
|
||||
DATE(`co_righe_preventivi`.`updated_at`) AS updated_at
|
||||
FROM
|
||||
`co_preventivi`
|
||||
INNER JOIN `co_righe_preventivi` ON `co_righe_preventivi`.`idpreventivo` = `co_preventivi`.`id`
|
||||
INNER JOIN `mg_articoli` ON `mg_articoli`.`id` = `co_righe_preventivi`.`idarticolo`
|
||||
INNER JOIN `in_righe_interventi` ON `in_righe_interventi`.`idarticolo` = `mg_articoli`.`id`
|
||||
INNER JOIN `co_statipreventivi` ON `co_preventivi`.`idstato` = `co_statipreventivi`.`id`
|
||||
LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi_lang`.`id_record` = `co_statipreventivi`.`id` AND `co_statipreventivi_lang`.`id_lang` = '.prepare(setting('Lingua')).')
|
||||
WHERE
|
||||
`co_preventivi`.`idanagrafica` ='.prepare($id_anagrafica).' AND `in_righe_interventi`.`idarticolo` ='.prepare($riga['idarticolo']).' AND `co_statipreventivi_lang`.`name` NOT IN ("Bozza", "In attesa di conferma", "Rifiutato")
|
||||
GROUP BY
|
||||
`mg_articoli`.`id`, `co_righe_preventivi`.`id`
|
||||
ORDER BY
|
||||
`updated_at` DESC'
|
||||
)[0];
|
||||
|
||||
$ultimo_prezzo_vendita = $dbo->fetchArray(
|
||||
|
|
|
@ -238,7 +238,14 @@ echo '
|
|||
<div class="panel-body">';
|
||||
|
||||
if (!$block_edit) {
|
||||
$prev_query = 'SELECT COUNT(*) AS tot FROM co_preventivi WHERE idanagrafica='.prepare($record['idanagrafica']).' AND idstato IN(SELECT id FROM co_statipreventivi WHERE is_fatturabile = 1) AND default_revision=1 AND co_preventivi.id IN (SELECT idpreventivo FROM co_righe_preventivi WHERE co_righe_preventivi.idpreventivo = co_preventivi.id AND (qta - qta_evasa) > 0)';
|
||||
$prev_query = 'SELECT
|
||||
COUNT(*) AS tot
|
||||
FROM
|
||||
`co_preventivi`
|
||||
INNER JOIN `co_statipreventivi` ON `co_statipreventivi`.`id` = `co_preventivi`.`idstato`
|
||||
INNER JOIN `co_righe_preventivi` ON `co_preventivi`.`id` = `co_righe_preventivi`.`idpreventivo`
|
||||
WHERE
|
||||
`idanagrafica`='.prepare($record['idanagrafica']).' AND `co_statipreventivi`.`is_fatturabile` = 1 AND `default_revision`=1 AND (`co_righe_preventivi`.`qta` - `co_righe_preventivi`.`qta_evasa` > 0)';
|
||||
$preventivi = $dbo->fetchArray($prev_query)[0]['tot'];
|
||||
echo '
|
||||
<div class="clearfix"></div>';
|
||||
|
|
|
@ -53,20 +53,22 @@ $righe = $dbo->fetchArray(
|
|||
|
||||
$ultimo_prezzo_preventivo = $dbo->fetchArray(
|
||||
'SELECT
|
||||
or_righe_ordini.idarticolo,
|
||||
co_righe_preventivi.prezzo_unitario,
|
||||
DATE(co_righe_preventivi.updated_at) AS updated_at
|
||||
FROM
|
||||
co_preventivi
|
||||
INNER JOIN co_righe_preventivi ON co_righe_preventivi.idpreventivo = co_preventivi.id
|
||||
INNER JOIN mg_articoli ON mg_articoli.id = co_righe_preventivi.idarticolo
|
||||
INNER JOIN or_righe_ordini ON or_righe_ordini.idarticolo = mg_articoli.id
|
||||
WHERE
|
||||
co_preventivi.idanagrafica ='.prepare($id_anagrafica).' AND or_righe_ordini.idarticolo ='.prepare($riga['idarticolo']).' AND co_preventivi.idstato NOT IN (SELECT id FROM co_statipreventivi WHERE descrizione = "Bozza" OR descrizione = "In attesa di conferma" OR descrizione = "Rifiutato")
|
||||
GROUP BY
|
||||
mg_articoli.id, co_righe_preventivi.id
|
||||
ORDER BY
|
||||
updated_at DESC'
|
||||
`or_righe_ordini`.`idarticolo`,
|
||||
`co_righe_preventivi`.`prezzo_unitario`,
|
||||
DATE(`co_righe_preventivi`.`updated_at`) AS updated_at
|
||||
FROM
|
||||
`co_preventivi`
|
||||
INNER JOIN `co_righe_preventivi` ON `co_righe_preventivi`.`idpreventivo` = `co_preventivi`.`id`
|
||||
INNER JOIN `mg_articoli` ON `mg_articoli`.`id` = `co_righe_preventivi`.`idarticolo`
|
||||
INNER JOIN `or_righe_ordini` ON `or_righe_ordini`.`idarticolo` = `mg_articoli`.`id`
|
||||
INNER JOIN `co_statipreventivi` ON `co_preventivi`.`idstato` = `co_statipreventivi`.`id`
|
||||
LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi_lang`.`id_record` = `co_statipreventivi`.`id` AND `co_statipreventivi_lang`.`id_lang` = '.prepare(setting('Lingua')).'
|
||||
WHERE
|
||||
`co_preventivi`.`idanagrafica` ='.prepare($id_anagrafica).' AND `or_righe_ordini`.`idarticolo` ='.prepare($riga['idarticolo']).' AND `co_statipreventivi_lang`.`name` NOT IN ("Bozza", "In attesa di conferma", "Rifiutato")
|
||||
GROUP BY
|
||||
`mg_articoli`.`id`, `co_righe_preventivi`.`id`
|
||||
ORDER BY
|
||||
`updated_at` DESC'
|
||||
)[0];
|
||||
|
||||
$ultimo_prezzo_vendita = $dbo->fetchArray(
|
||||
|
|
|
@ -148,7 +148,7 @@ switch (post('op')) {
|
|||
], ['id' => $idintervento]);
|
||||
|
||||
// Imposto il preventivo nello stato "In lavorazione" se inizio ad aggiungere interventi
|
||||
$dbo->query("UPDATE `co_preventivi` SET idstato=(SELECT `id` FROM `co_statipreventivi` WHERE `descrizione`='In lavorazione') WHERE `id`=".prepare($id_record));
|
||||
$dbo->query("UPDATE `co_preventivi` SET `idstato`=(SELECT `id` FROM `co_statipreventivi` LEFT JOIN `co_statipreventivi_lang ON (`co_statipreventivi_lang`.`id_record` = `co_statipreventivi`.`id` AND `co_statipreventivi_lang`.`id_lang` = ".prepare(setting('Lingua')).") WHERE `name`='In lavorazione') WHERE `co_preventivi`.`id`=".prepare($id_record));
|
||||
|
||||
flash()->info(tr('Intervento _NUM_ aggiunto!', [
|
||||
'_NUM_' => $rs[0]['codice'],
|
||||
|
|
|
@ -18,11 +18,13 @@
|
|||
*/
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
use Modules\Preventivi\Stato;
|
||||
|
||||
$id_anagrafica = !empty(get('idanagrafica')) ? get('idanagrafica') : '';
|
||||
|
||||
$stati = get('pianificabile') ? 'SELECT id, descrizione FROM co_statipreventivi WHERE is_pianificabile=1' : 'SELECT id, descrizione FROM co_statipreventivi';
|
||||
$stato = $database->query('SELECT id, descrizione FROM co_statipreventivi WHERE descrizione = "Bozza"');
|
||||
$stati = get('pianificabile') ? 'SELECT `co_statipreventivi`.`id`, `co_statipreventivi_lang`.`name` as descrizione FROM `co_statipreventivi` LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi`.`id` = `co_statipreventivi_lang`.`id_record` AND `co_statipreventivi_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `is_pianificabile`=1' : 'SELECT `co_statipreventivi`.`id`, `co_statipreventivi_lang`.`name` as descrizione FROM `co_statipreventivi` LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi`.`id` = `co_statipreventivi_lang`.`id_record` AND `co_statipreventivi_lang`.`id_lang` = '.prepare(setting('Lingua')).')';
|
||||
|
||||
$stato = (new Stato())->getByName('Bozza')->id_record;
|
||||
|
||||
?><form action="" method="post" id="add-form">
|
||||
<input type="hidden" name="op" value="add">
|
||||
|
|
|
@ -27,22 +27,39 @@ switch ($resource) {
|
|||
*/
|
||||
case 'preventivi':
|
||||
if (isset($superselect['idanagrafica'])) {
|
||||
$query = 'SELECT co_preventivi.id AS id, an_anagrafiche.idanagrafica, CONCAT("Preventivo ", numero, " del ", DATE_FORMAT(data_bozza, "%d/%m/%Y"), " - ", co_preventivi.nome, " [", (SELECT `descrizione` FROM `co_statipreventivi` WHERE `co_statipreventivi`.`id` = `idstato`) , "]") AS descrizione, co_preventivi.idtipointervento, (SELECT descrizione FROM in_tipiintervento WHERE in_tipiintervento.idtipointervento = co_preventivi.idtipointervento) AS idtipointervento_descrizione, (SELECT tempo_standard FROM in_tipiintervento WHERE in_tipiintervento.idtipointervento = co_preventivi.idtipointervento) AS tempo_standard, (SELECT SUM(subtotale) FROM co_righe_preventivi WHERE idpreventivo=co_preventivi.id GROUP BY idpreventivo) AS totale, (SELECT SUM(sconto) FROM co_righe_preventivi WHERE idpreventivo=co_preventivi.id GROUP BY idpreventivo) AS sconto FROM co_preventivi INNER JOIN an_anagrafiche ON co_preventivi.idanagrafica=an_anagrafiche.idanagrafica |where| ORDER BY id';
|
||||
$query = 'SELECT
|
||||
`co_preventivi`.`id` AS id,
|
||||
`an_anagrafiche`.`idanagrafica`,
|
||||
CONCAT("Preventivo ", numero, " del ", DATE_FORMAT(`data_bozza`, "%d/%m/%Y"), " - ", `co_preventivi`.`nome`, " [", `co_statipreventivi_lang`.`name` , "]") AS descrizione,
|
||||
`co_preventivi`.`idtipointervento`,
|
||||
`in_tipiintervento`.`descrizione` AS idtipointervento_descrizione,
|
||||
`in_tipiintervento`.`tempo_standard` AS tempo_standard,
|
||||
(SELECT SUM(subtotale) FROM co_righe_preventivi WHERE idpreventivo=co_preventivi.id GROUP BY idpreventivo) AS totale,
|
||||
(SELECT SUM(sconto) FROM co_righe_preventivi WHERE idpreventivo=co_preventivi.id GROUP BY idpreventivo) AS sconto
|
||||
FROM
|
||||
`co_preventivi`
|
||||
INNER JOIN `an_anagrafiche` ON `co_preventivi`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`
|
||||
INNER JOIN `co_statipreventivi` ON `co_preventivi`.`idstato`=`co_statipreventivi`.`id`
|
||||
LEFT JOIN `co_statipreventivi_lang` ON (`co_preventivi`.`idstato`=`co_statipreventivi_lang`.`id_record` AND `co_statipreventivi_lang`.`id_lang`='.prepare(setting('Lingua')).')
|
||||
LEFT JOIN `in_tipiintervento` ON (`co_preventivi`.`idtipointervento`=`in_tipiintervento`.`idtipointervento`)
|
||||
|where|
|
||||
ORDER BY
|
||||
`id`';
|
||||
|
||||
foreach ($elements as $element) {
|
||||
$filter[] = 'id='.prepare($element);
|
||||
}
|
||||
|
||||
if (empty($elements)) {
|
||||
$where[] = 'an_anagrafiche.idanagrafica='.prepare($superselect['idanagrafica']);
|
||||
$where[] = 'co_preventivi.default_revision=1';
|
||||
$where[] = '`an_anagrafiche`.`idanagrafica`='.prepare($superselect['idanagrafica']);
|
||||
$where[] = '`co_preventivi`.`default_revision`=1';
|
||||
|
||||
$stato = !empty($superselect['stato']) ? $superselect['stato'] : 'is_pianificabile';
|
||||
$where[] = 'idstato IN (SELECT `id` FROM `co_statipreventivi` WHERE '.$stato.' = 1)';
|
||||
$where[] = '('.$stato.' = 1)';
|
||||
}
|
||||
|
||||
if (!empty($search)) {
|
||||
$search_fields[] = 'nome LIKE '.prepare('%'.$search.'%');
|
||||
$search_fields[] = '`nome` LIKE '.prepare('%'.$search.'%');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -186,7 +186,7 @@ $operations['cambia_stato'] = [
|
|||
'text' => '<span><i class="fa fa-refresh"></i> '.tr('Cambia stato'),
|
||||
'data' => [
|
||||
'title' => tr('Vuoi davvero aggiornare lo stato di questi preventivi?'),
|
||||
'msg' => '<br>{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT id, descrizione, colore as _bgcolor_ FROM co_statipreventivi ORDER BY descrizione" ]}',
|
||||
'msg' => '<br>{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT `co_statipreventivi`.`id`, `co_statipreventivi_lang`.`name` AS descrizione, `colore` as _bgcolor_ FROM `co_statipreventivi` LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi`.`id` = `co_statipreventivi_lang`.`id_record` AND `co_statipreventivi_lang`.`id_lang` = '.prepare(setting('Lingua')).') ORDER BY `name`" ]}',
|
||||
'button' => tr('Procedi'),
|
||||
'class' => 'btn btn-lg btn-warning',
|
||||
'blank' => false,
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
$stati_abilitati = $dbo->fetchOne('SELECT GROUP_CONCAT(`descrizione` SEPARATOR ", ") AS stati_abilitati FROM `co_statipreventivi` WHERE `is_revisionabile` = 1 ')['stati_abilitati'];
|
||||
$stati_abilitati = $dbo->fetchOne('SELECT GROUP_CONCAT(`name` SEPARATOR ", ") AS stati_abilitati FROM `co_statipreventivi` LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi`.`id` = `co_statipreventivi_lang`.`id_record` AND `co_statipreventivi_lang`.`id_lang` = '.prepare(setting('Lingua')).' WHERE `is_revisionabile` = 1 ')['stati_abilitati'];
|
||||
|
||||
// Crea revisione
|
||||
echo '
|
||||
|
@ -35,7 +35,7 @@ $rs_documento = $dbo->fetchArray('SELECT * FROM co_righe_preventivi WHERE idprev
|
|||
|
||||
$disabled = ($record['is_fatturabile'] || $record['is_completato']) && !empty($rs_documento);
|
||||
|
||||
$stati_abilitati = $dbo->fetchOne('SELECT GROUP_CONCAT(`descrizione` SEPARATOR ", ") AS stati_abilitati FROM `co_statipreventivi` WHERE `is_fatturabile` = 1 OR `is_completato` = 1 ')['stati_abilitati'];
|
||||
$stati_abilitati = $dbo->fetchOne('SELECT GROUP_CONCAT(`name` SEPARATOR ", ") AS stati_abilitati FROM `co_statipreventivi` LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi`.`id` = `co_statipreventivi_lang`.`id_record` AND `co_statipreventivi_lang`.`id_lang` = '.prepare(setting('Lingua')).' WHERE `is_fatturabile` = 1 OR `is_completato` = 1 ')['stati_abilitati'];
|
||||
|
||||
// Creazione altri documenti
|
||||
echo '
|
||||
|
|
|
@ -115,7 +115,7 @@ echo '
|
|||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstato", "required": 1, "values": "query=SELECT id, descrizione, colore AS _bgcolor_ FROM co_statipreventivi ORDER BY descrizione", "value": "$idstato$", "class": "unblockable" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstato", "required": 1, "values": "query=SELECT `co_statipreventivi`.`id`, `co_statipreventivi_lang`.`name` AS descrizione, `colore` AS _bgcolor_ FROM `co_statipreventivi` LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi_lang`.`id_record` = `co_statipreventivi`.`id` AND `co_statipreventivi_lang`.`id_lang` = <?php echo prepare(setting('Lingua')); ?>) ORDER BY `name`", "value": "$idstato$", "class": "unblockable" ]}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -22,13 +22,19 @@ include_once __DIR__.'/../../core.php';
|
|||
if (isset($id_record)) {
|
||||
$preventivo = Modules\Preventivi\Preventivo::with('stato')->find($id_record);
|
||||
|
||||
$record = $dbo->fetchOne('SELECT co_preventivi.*,
|
||||
(SELECT tipo FROM an_anagrafiche WHERE idanagrafica = co_preventivi.idanagrafica) AS tipo_anagrafica,
|
||||
co_statipreventivi.is_fatturabile,
|
||||
co_statipreventivi.is_pianificabile,
|
||||
co_statipreventivi.is_completato,
|
||||
co_statipreventivi.is_revisionabile,
|
||||
co_statipreventivi.descrizione AS stato
|
||||
FROM co_preventivi LEFT JOIN co_statipreventivi ON co_preventivi.idstato=co_statipreventivi.id
|
||||
WHERE co_preventivi.id='.prepare($id_record));
|
||||
$record = $dbo->fetchOne('SELECT
|
||||
`co_preventivi`.*,
|
||||
`an_anagrafiche`.`tipo` AS tipo_anagrafica,
|
||||
`co_statipreventivi`.`is_fatturabile`,
|
||||
`co_statipreventivi`.`is_pianificabile`,
|
||||
`co_statipreventivi`.`is_completato`,
|
||||
`co_statipreventivi`.`is_revisionabile`,
|
||||
`co_statipreventivi_lang`.`name` AS stato
|
||||
FROM
|
||||
`co_preventivi`
|
||||
INNER JOIN `an_anagrafiche` ON `co_preventivi`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`
|
||||
LEFT JOIN `co_statipreventivi` ON `co_preventivi`.`idstato`=`co_statipreventivi`.`id`
|
||||
LEFT JOIN `co_statipreventivi_lang` ON (`co_preventivi`.`idstato`=`co_statipreventivi_lang`.`id_record` AND `co_statipreventivi_lang`.`id_lang`='.prepare(setting('Lingua')).')
|
||||
WHERE
|
||||
`co_preventivi`.`id`='.prepare($id_record));
|
||||
}
|
||||
|
|
|
@ -52,19 +52,21 @@ $righe = $dbo->fetchArray(
|
|||
|
||||
$ultimo_prezzo_preventivo = $dbo->fetchArray(
|
||||
'SELECT
|
||||
co_righe_preventivi.idarticolo,
|
||||
co_righe_preventivi.prezzo_unitario,
|
||||
DATE(co_righe_preventivi.updated_at) AS updated_at
|
||||
`co_righe_preventivi`.`idarticolo`,
|
||||
`co_righe_preventivi`.`prezzo_unitario`,
|
||||
DATE(`co_righe_preventivi`.`updated_at`) AS updated_at
|
||||
FROM
|
||||
co_preventivi
|
||||
INNER JOIN co_righe_preventivi ON co_righe_preventivi.idpreventivo = co_preventivi.id
|
||||
INNER JOIN mg_articoli ON mg_articoli.id = co_righe_preventivi.idarticolo
|
||||
`co_preventivi`
|
||||
INNER JOIN `co_righe_preventivi` ON `co_righe_preventivi`.`idpreventivo` = `co_preventivi`.`id`
|
||||
INNER JOIN `mg_articoli` ON `mg_articoli`.`id` = `co_righe_preventivi`.`idarticolo`
|
||||
INNER JOIN `co_statipreventivi` ON `co_statipreventivi`.`id` = `co_preventivi`.`idstato`
|
||||
LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi_lang`.`id_record` = `co_statipreventivi`.`id` AND `co_statipreventivi_lang`.`id_lang` = '.prepare(setting('Lingua')).')
|
||||
WHERE
|
||||
co_preventivi.idanagrafica ='.prepare($id_anagrafica).' AND co_righe_preventivi.idarticolo ='.prepare($riga['idarticolo']).' AND co_preventivi.idstato NOT IN (SELECT id FROM co_statipreventivi WHERE descrizione = "Bozza" OR descrizione = "In attesa di conferma" OR descrizione = "Rifiutato")
|
||||
`co_preventivi`.`idanagrafica` ='.prepare($id_anagrafica).' AND `co_righe_preventivi`.`idarticolo` ='.prepare($riga['idarticolo']).' AND `co_statipreventivi_lang`.`name` NOT IN ("Bozza", "In attesa di conferma", "Rifiutato")
|
||||
GROUP BY
|
||||
mg_articoli.id, co_righe_preventivi.id
|
||||
`mg_articoli`.`id`, `co_righe_preventivi`.`id`
|
||||
ORDER BY
|
||||
updated_at DESC'
|
||||
`updated_at` DESC'
|
||||
)[0];
|
||||
|
||||
$ultimo_prezzo_vendita = $dbo->fetchArray(
|
||||
|
|
|
@ -105,7 +105,7 @@ class CSV extends CSVImporter
|
|||
|
||||
$preventivo = Preventivo::build($anagrafica, $tipo, $record['nome'], new Carbon($record['data_bozza']), 0);
|
||||
$preventivo->numero = $record['numero'];
|
||||
$preventivo->idstato = Stato::where('descrizione', 'Bozza')->first()->id;
|
||||
$preventivo->idstato = (new Stato())->getByName('Bozza')->id_record;
|
||||
$preventivo->descrizione = $record['descrizione'];
|
||||
$preventivo->save();
|
||||
}
|
||||
|
|
|
@ -68,7 +68,7 @@ class Preventivo extends Document
|
|||
{
|
||||
$model = new static();
|
||||
|
||||
$stato_documento = Stato::where('descrizione', 'Bozza')->first();
|
||||
$stato_documento = (new Stato())->getByName('Bozza')->id_record;
|
||||
|
||||
$id_agente = $anagrafica->idagente;
|
||||
$id_pagamento = $anagrafica->idpagamento_vendite;
|
||||
|
|
|
@ -32,4 +32,34 @@ class Stato extends Model
|
|||
{
|
||||
return $this->hasMany(Preventivo::class, 'idstatopreventivo');
|
||||
}
|
||||
|
||||
/**
|
||||
* Ritorna l'attributo name dello stato del preventivo.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getNameAttribute()
|
||||
{
|
||||
return database()->table($this->table.'_lang')
|
||||
->select('name')
|
||||
->where('id_record', '=', $this->id)
|
||||
->where('id_lang', '=', setting('Lingua'))
|
||||
->first()->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ritorna l'id dello stato del preventivo a partire dal nome.
|
||||
*
|
||||
* @param string $name il nome da ricercare
|
||||
*
|
||||
* @return \Illuminate\Support\Collection
|
||||
*/
|
||||
public function getByName($name)
|
||||
{
|
||||
return database()->table($this->table.'_lang')
|
||||
->select('id_record')
|
||||
->where('name', '=', $name)
|
||||
->where('id_lang', '=', setting('Lingua'))
|
||||
->first();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,7 +21,18 @@ include_once __DIR__.'/../../../core.php';
|
|||
|
||||
$id_module = Modules::get('Preventivi')['id'];
|
||||
|
||||
$rs = $dbo->fetchArray("SELECT *, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=co_preventivi.idanagrafica) AS ragione_sociale FROM co_preventivi WHERE idstato=(SELECT id FROM co_statipreventivi WHERE descrizione='In lavorazione') AND default_revision = 1 ORDER BY data_conclusione ASC");
|
||||
$rs = $dbo->fetchArray("SELECT *,
|
||||
`an_anagrafiche`.`ragione_sociale` AS ragione_sociale
|
||||
FROM
|
||||
`co_preventivi`
|
||||
INNER JOIN `an_anagrafiche` ON `co_preventivi`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`
|
||||
INNER JOIN `co_statipreventivi` ON `co_preventivi`.`idstato`=`co_statipreventivi`.`id`
|
||||
LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi`.`id`=`co_statipreventivi_lang`.`id_record` AND `co_statipreventivi_lang`.`id_lang` = ".prepare(setting('Lingua')).")
|
||||
WHERE
|
||||
`co_statipreventivi_lang`.`name` = 'In lavorazione'
|
||||
AND `default_revision` = 1
|
||||
ORDER BY
|
||||
`data_conclusione` ASC");
|
||||
|
||||
if (!empty($rs)) {
|
||||
echo "
|
||||
|
|
|
@ -23,7 +23,18 @@ use Modules\Preventivi\Stato;
|
|||
|
||||
$id_module = Modules::get('Preventivi')['id'];
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT *, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=co_preventivi.idanagrafica) AS ragione_sociale FROM co_preventivi WHERE idstato IN (SELECT id FROM co_statipreventivi WHERE is_fatturabile = 1) AND default_revision = 1 ORDER BY data_conclusione ASC');
|
||||
$rs = $dbo->fetchArray('SELECT *,
|
||||
`an_anagrafiche`.`ragione_sociale` AS ragione_sociale
|
||||
FROM
|
||||
`co_preventivi`
|
||||
INNER JOIN `an_anagrafiche` ON `co_preventivi`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`
|
||||
INNER JOIN `co_statipreventivi` ON `co_preventivi`.`idstato`=`co_statipreventivi`.`id`
|
||||
LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi_lang`.`id_record` = `co_statipreventivi`.`id` AND `co_statipreventivi_lang`.`id_lang` = '.prepare(setting('Lingua')).')
|
||||
WHERE
|
||||
`is_fatturabile` = 1
|
||||
AND `default_revision` = 1
|
||||
ORDER BY
|
||||
`data_conclusione` ASC');
|
||||
|
||||
if (!empty($rs)) {
|
||||
echo "
|
||||
|
|
|
@ -22,7 +22,6 @@ include_once __DIR__.'/../../core.php';
|
|||
switch (post('op')) {
|
||||
case 'update':
|
||||
$dbo->update('co_statipreventivi', [
|
||||
'descrizione' => (count($dbo->fetchArray('SELECT descrizione FROM co_statipreventivi WHERE descrizione = '.prepare(post('descrizione')))) > 0) ? $dbo->fetchOne('SELECT descrizione FROM co_statipreventivi WHERE id ='.$id_record)['descrizione'] : post('descrizione'),
|
||||
'icona' => post('icona'),
|
||||
'colore' => post('colore'),
|
||||
'is_completato' => post('is_completato') ?: null,
|
||||
|
@ -31,6 +30,10 @@ switch (post('op')) {
|
|||
'is_revisionabile' => post('is_revisionabile') ?: null,
|
||||
], ['id' => $id_record]);
|
||||
|
||||
$dbo->update('co_statipreventivi_lang', [
|
||||
'name' => post('descrizione'),
|
||||
], ['id_record' => $id_record]);
|
||||
|
||||
flash()->info(tr('Informazioni salvate correttamente.'));
|
||||
|
||||
break;
|
||||
|
@ -44,23 +47,23 @@ switch (post('op')) {
|
|||
$is_pianificabile = post('is_pianificabile') ?: null;
|
||||
|
||||
// controlla descrizione che non sia duplicata
|
||||
if (count($dbo->fetchArray('SELECT descrizione FROM co_statipreventivi WHERE descrizione='.prepare($descrizione))) > 0) {
|
||||
flash()->error(tr('Stato di preventivo già esistente.'));
|
||||
if (count($dbo->fetchArray('SELECT `name` FROM `co_statipreventivi_lang` WHERE `name`='.prepare($descrizione))) > 0) {
|
||||
flash()->error(tr('Esiste già uno stato dei preventivi con questo nome.'));
|
||||
} else {
|
||||
$query = 'INSERT INTO co_statipreventivi(descrizione, icona, colore, is_completato, is_fatturabile, is_pianificabile) VALUES ('.prepare($descrizione).', '.prepare($icona).', '.prepare($colore).', '.prepare($is_completato).', '.prepare($is_fatturabile).', '.prepare($is_pianificabile).' )';
|
||||
$dbo->query($query);
|
||||
$dbo->query('INSERT INTO `co_statipreventivi` (icona, colore, is_completato, is_fatturabile, is_pianificabile) VALUES ('.prepare($icona).', '.prepare($colore).', '.prepare($is_completato).', '.prepare($is_fatturabile).', '.prepare($is_pianificabile).' )');
|
||||
$id_record = $dbo->lastInsertedID();
|
||||
flash()->info(tr('Nuovo stato preventivo aggiunto.'));
|
||||
$dbo->query('INSERT INTO `co_statipreventivi_lang` (`name`, `id_record`, `id_lang`) VALUES ('.prepare($descrizione).', '.prepare($id_record).', '.prepare(setting('Lingua')).' )');
|
||||
flash()->info(tr('Nuovo stato dei preventivi aggiunto.'));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'delete':
|
||||
// scelgo se settare come eliminato o cancellare direttamente la riga se non è stato utilizzato nei preventivi
|
||||
if (count($dbo->fetchArray('SELECT id FROM co_preventivi WHERE idstato='.prepare($id_record))) > 0) {
|
||||
$query = 'UPDATE co_statipreventivi SET deleted_at = NOW() WHERE can_delete = 1 AND id='.prepare($id_record);
|
||||
if (count($dbo->fetchArray('SELECT `id` FROM `co_preventivi` WHERE `idstato`='.prepare($id_record))) > 0) {
|
||||
$query = 'UPDATE `co_statipreventivi` SET `deleted_at` = NOW() WHERE `can_delete` = 1 AND `id`='.prepare($id_record);
|
||||
} else {
|
||||
$query = 'DELETE FROM co_statipreventivi WHERE can_delete = 1 AND id='.prepare($id_record);
|
||||
$query = 'DELETE FROM `co_statipreventivi` WHERE `can_delete` = 1 AND `id`='.prepare($id_record);
|
||||
}
|
||||
|
||||
$dbo->query($query);
|
||||
|
|
|
@ -34,7 +34,7 @@ if ($record['can_delete']) {
|
|||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$", "extra": "<?php echo $attr; ?>" ]}
|
||||
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$name$", "extra": "<?php echo $attr; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
|
|
|
@ -20,5 +20,5 @@
|
|||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if (isset($id_record)) {
|
||||
$record = $dbo->fetchOne('SELECT * FROM co_statipreventivi WHERE id='.prepare($id_record));
|
||||
$record = $dbo->fetchOne('SELECT * FROM `co_statipreventivi` LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi`.`id`=`co_statipreventivi_lang`.`id_record` AND `co_statipreventivi_lang`.`id_lang`='.prepare(setting('Lingua')).') WHERE `co_statipreventivi`.`id`='.prepare($id_record));
|
||||
}
|
||||
|
|
|
@ -26,11 +26,15 @@ class Preventivi extends AppResource implements RetrieveInterface
|
|||
{
|
||||
public function getCleanupData($last_sync_at)
|
||||
{
|
||||
$query = 'SELECT DISTINCT(co_preventivi.id) AS id FROM co_preventivi
|
||||
INNER JOIN co_statipreventivi ON co_statipreventivi.id = co_preventivi.idstato
|
||||
WHERE co_statipreventivi.is_pianificabile = 0';
|
||||
$query = 'SELECT
|
||||
DISTINCT(`co_preventivi`.`id`) AS id
|
||||
FROM
|
||||
`co_preventivi`
|
||||
INNER JOIN `co_statipreventivi` ON `co_statipreventivi`.`id` = `co_preventivi`.`idstato`
|
||||
WHERE
|
||||
`co_statipreventivi`.`is_pianificabile` = 0';
|
||||
if ($last_sync_at) {
|
||||
$query .= ' AND (co_preventivi.updated_at > '.prepare($last_sync_at).' OR co_statipreventivi.updated_at > '.prepare($last_sync_at).')';
|
||||
$query .= ' AND (`co_preventivi`.`updated_at` > '.prepare($last_sync_at).' OR `co_statipreventivi`.`updated_at` > '.prepare($last_sync_at).')';
|
||||
}
|
||||
$records = database()->fetchArray($query);
|
||||
|
||||
|
@ -76,10 +80,11 @@ class Preventivi extends AppResource implements RetrieveInterface
|
|||
`co_preventivi`.`nome`,
|
||||
`co_preventivi`.`numero`,
|
||||
`co_preventivi`.`data_bozza`,
|
||||
`co_statipreventivi`.`descrizione` AS stato
|
||||
`co_statipreventivi_lang`.`name` AS stato
|
||||
FROM
|
||||
`co_preventivi`
|
||||
INNER JOIN `co_statipreventivi` ON `co_statipreventivi`.`id` = `co_preventivi`.`idstato`
|
||||
LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi_lang`.`id_record` = `co_preventivi`.`idstato` AND `co_statipreventivi_lang`.`id_lang` = '.prepare(setting('Lingua')).')
|
||||
WHERE
|
||||
`co_preventivi`.`id` = '.prepare($id);
|
||||
|
||||
|
|
|
@ -646,3 +646,62 @@ INSERT INTO an_sdi (nome, codice) VALUES
|
|||
('Extreme software', 'E2VWRNU'),
|
||||
('Unimatica', 'E06UCUD'),
|
||||
('CompEd', 'WHP7LTE');
|
||||
|
||||
-- Aggiunta tabella co_statipreventivi_lang
|
||||
CREATE TABLE IF NOT EXISTS `co_statipreventivi_lang` (
|
||||
`id` int NOT NULL,
|
||||
`id_lang` int NOT NULL,
|
||||
`id_record` int NOT NULL,
|
||||
`name` VARCHAR(255) NOT NULL
|
||||
);
|
||||
ALTER TABLE `co_statipreventivi_lang`
|
||||
ADD PRIMARY KEY (`id`);
|
||||
|
||||
ALTER TABLE `co_statipreventivi_lang`
|
||||
MODIFY `id` int NOT NULL AUTO_INCREMENT;
|
||||
|
||||
INSERT INTO `co_statipreventivi_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `descrizione` FROM `co_statipreventivi`;
|
||||
|
||||
ALTER TABLE `co_statipreventivi`
|
||||
DROP `descrizione`;
|
||||
|
||||
ALTER TABLE `co_statipreventivi` CHANGE `id` `id` INT NOT NULL AUTO_INCREMENT;
|
||||
|
||||
ALTER TABLE `co_statipreventivi_lang` ADD CONSTRAINT `co_statipreventivi_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `co_statipreventivi`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT;
|
||||
|
||||
-- Allineamento vista Stati dei preventivi
|
||||
UPDATE `zz_modules` SET `options` = "
|
||||
SELECT
|
||||
|select|
|
||||
FROM
|
||||
`co_statipreventivi`
|
||||
LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi`.`id` = `co_statipreventivi_lang`.`id_record` AND |lang|)
|
||||
WHERE
|
||||
1=1
|
||||
HAVING
|
||||
2=2" WHERE `name` = 'Stati dei preventivi';
|
||||
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_statipreventivi_lang`.`name`' WHERE `zz_modules`.`name` = 'Stati dei preventivi' AND `zz_views`.`name` = 'Descrizione';
|
||||
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_statipreventivi`.`id`' WHERE `zz_modules`.`name` = 'Stati dei preventivi' AND `zz_views`.`name` = 'id';
|
||||
|
||||
-- Allineamento vista Preventivi
|
||||
UPDATE `zz_modules` SET `options` = "
|
||||
SELECT
|
||||
|select|
|
||||
FROM
|
||||
`co_preventivi`
|
||||
LEFT JOIN `an_anagrafiche` ON `co_preventivi`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
|
||||
LEFT JOIN `co_statipreventivi` ON `co_preventivi`.`idstato` = `co_statipreventivi`.`id`
|
||||
LEFT JOIN `co_statipreventivi_lang` ON (`co_statipreventivi`.`id` = `co_statipreventivi_lang`.`id_record` AND co_statipreventivi_lang.|lang|)
|
||||
LEFT JOIN (SELECT `idpreventivo`, SUM(`subtotale` - `sconto`) AS `totale_imponibile`, SUM(`subtotale` - `sconto` + `iva`) AS `totale` FROM `co_righe_preventivi` GROUP BY `idpreventivo`) AS righe ON `co_preventivi`.`id` = `righe`.`idpreventivo`
|
||||
LEFT JOIN (SELECT `an_anagrafiche`.`idanagrafica`, `an_anagrafiche`.`ragione_sociale` AS nome FROM `an_anagrafiche`)AS agente ON `agente`.`idanagrafica`=`co_preventivi`.`idagente`
|
||||
LEFT JOIN (SELECT GROUP_CONCAT(DISTINCT `co_documenti`.`numero_esterno` SEPARATOR ', ') AS `info`, `co_righe_documenti`.`original_document_id` AS `idpreventivo` FROM `co_documenti` INNER JOIN `co_righe_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` WHERE `original_document_type`='Modules\\Preventivi\\Preventivo' GROUP BY `idpreventivo`, `original_document_id`) AS `fattura` ON `fattura`.`idpreventivo` = `co_preventivi`.`id`
|
||||
LEFT JOIN (SELECT COUNT(id) as emails, em_emails.id_record FROM em_emails INNER JOIN zz_operations ON zz_operations.id_email = em_emails.id WHERE id_module IN(SELECT id FROM zz_modules WHERE name = 'Preventivi') AND `zz_operations`.`op` = 'send-email' GROUP BY em_emails.id_record) AS `email` ON `email`.`id_record` = `co_preventivi`.`id`
|
||||
WHERE
|
||||
1=1 |segment(`co_preventivi`.`id_segment`)| |date_period(custom,'|period_start|' >= `data_bozza` AND '|period_start|' <= `data_conclusione`,'|period_end|' >= `data_bozza` AND '|period_end|' <= `data_conclusione`,`data_bozza` >= '|period_start|' AND `data_bozza` <= '|period_end|',`data_conclusione` >= '|period_start|' AND `data_conclusione` <= '|period_end|',`data_bozza` >= '|period_start|' AND `data_conclusione` = NULL)| AND `default_revision` = 1
|
||||
GROUP BY
|
||||
`co_preventivi`.`id`, `fattura`.`info`
|
||||
HAVING
|
||||
2=2
|
||||
ORDER BY
|
||||
`co_preventivi`.`id` DESC" WHERE `name` = 'Preventivi';
|
||||
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_statipreventivi_lang`.`name`' WHERE `zz_modules`.`name` = 'Preventivi' AND `zz_views`.`name` = 'icon_title_Stato';
|
|
@ -53,6 +53,7 @@ return [
|
|||
'co_statidocumento',
|
||||
'co_statidocumento_lang',
|
||||
'co_statipreventivi',
|
||||
'co_statipreventivi_lang',
|
||||
'co_tipidocumento',
|
||||
'co_tipi_scadenze',
|
||||
'co_stampecontabili',
|
||||
|
|
Loading…
Reference in New Issue