Compare commits
6 Commits
57eb49c1bf
...
e7a2d336a9
Author | SHA1 | Date |
---|---|---|
MatteoPistorello | e7a2d336a9 | |
MatteoPistorello | 642219ab46 | |
MatteoPistorello | 544744d461 | |
MatteoPistorello | 387db5543f | |
Dasc3er | bd0ff319fa | |
Dasc3er | 129260bc94 |
|
@ -41,15 +41,16 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
|
|||
- Aggiunta nel calendario della Dashboard visualizzazione dei preventivi pianificabili in corrispondenza alla data di accettazione e conclusione.
|
||||
- Aggiunta impostazione per la visualizzazione delle ore nella stampa intervento (Decimale, Sessantesimi).
|
||||
- Aggiunta possibilità di selezionare la sede di partenza della merce in fase di aggiunta articolo da un'attività
|
||||
- Sostituito plugin **Componenti** nel modulo Impianti con la possibilità di inserire gli articoli di magazzino
|
||||
- Aggiunta colonna Scaduto nel modulo Scadenzario
|
||||
- Aggiunto campi confermato, data e ora evasione nel modulo **Preventivi**
|
||||
- Aggiunta possibilità di creare un nuovi conti di secondo livello dal modulo **Piano dei conti**
|
||||
- Aggiunta impostazione per la rimozione del blocco sulle quantità massime importabili fra documenti
|
||||
- Aggiunta colonna **Rif. fattura** nei moduli Ordini cliente e fornitore
|
||||
- Aggiunta gestione come costo e ricavo per i conti di secondo livello
|
||||
|
||||
### Fixed
|
||||
-
|
||||
- Sostituito plugin **Componenti** nel modulo Impianti con la possibilità di inserire gli articoli di magazzino
|
||||
- Possibilità di ripristinare un conto cliente/fornitore dal modulo **Anagrafiche** se eliminato
|
||||
|
||||
## 2.4.23 (2021-05-18)
|
||||
|
||||
|
|
|
@ -39,9 +39,6 @@ switch (post('op')) {
|
|||
$sede->provincia = post('provincia');
|
||||
$sede->km = post('km');
|
||||
$sede->id_nazione = post('id_nazione') ?: null;
|
||||
$sede->gaddress = post('gaddress');
|
||||
$sede->lat = post('lat');
|
||||
$sede->lng = post('lng');
|
||||
$sede->telefono = post('telefono');
|
||||
$sede->cellulare = post('cellulare');
|
||||
$sede->fax = post('fax');
|
||||
|
@ -327,6 +324,18 @@ switch (post('op')) {
|
|||
flash()->info(tr('Anagrafica eliminata!'));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'risolvi_conto':
|
||||
$anagrafica = Anagrafica::find($id_record);
|
||||
$tipo = post('tipo');
|
||||
|
||||
if($tipo=='cliente'){
|
||||
$anagrafica->fixCliente($anagrafica);
|
||||
} else{
|
||||
$anagrafica->fixfornitore($anagrafica);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -53,16 +53,16 @@ $nazione_anagrafica = $anagrafica->sedeLegale->nazione;
|
|||
// Avvisi problemi scheda anagrafica
|
||||
$problemi_anagrafica = [];
|
||||
if ($is_cliente && empty($record['idconto_cliente'])) {
|
||||
array_push($problemi_anagrafica, ' Piano dei conti mancante per il cliente');
|
||||
$problemi_anagrafica[] = '<div class="row" style="margin-bottom:5px;"><div class="col-md-3">'.tr('Piano dei conti mancante per il cliente').'</div><button type="button" class="btn btn-xs btn-success" onclick="risolviConto(\'cliente\')"><i class="fa fa-cog"></i> '.tr('Risolvi').'</button></div>';
|
||||
}
|
||||
|
||||
if ($is_fornitore && empty($record['idconto_fornitore'])) {
|
||||
array_push($problemi_anagrafica, ' Piano dei conti mancante per il fornitore');
|
||||
$problemi_anagrafica[] = '<div class="row"><div class="col-md-3">'.tr('Piano dei conti mancante per il fornitore').'</div><button type="button" class="btn btn-xs btn-success" onclick="risolviConto(\'fornitore\')"><i class="fa fa-cog"></i> '.tr('Risolvi').'</button></div>';
|
||||
}
|
||||
|
||||
if (sizeof($problemi_anagrafica) > 0) {
|
||||
echo '<div class="alert alert-warning"><i class="fa fa-warning"></i> '.tr('Attenzione: _CAMPI_', [
|
||||
'_CAMPI_' => implode(', ', $problemi_anagrafica),
|
||||
echo '<div class="alert alert-warning"><i class="fa fa-warning"></i> '.tr('ATTENZIONE: <br>_CAMPI_', [
|
||||
'_CAMPI_' => implode('', $problemi_anagrafica),
|
||||
]).'</div>';
|
||||
}
|
||||
|
||||
|
@ -373,6 +373,28 @@ echo '
|
|||
});
|
||||
});
|
||||
}
|
||||
|
||||
function risolviConto(tipo){
|
||||
$.ajax({
|
||||
url: globals.rootdir + "/actions.php",
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
data: {
|
||||
id_module: globals.id_module,
|
||||
id_record: globals.id_record,
|
||||
tipo: tipo,
|
||||
op: "risolvi_conto",
|
||||
},
|
||||
success: function (response) {
|
||||
location.reload();
|
||||
},
|
||||
error: function() {
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
</script>';
|
||||
|
||||
if ($is_cliente or $is_fornitore or $is_tecnico) {
|
||||
|
|
|
@ -291,7 +291,7 @@ echo '
|
|||
<!-- RIGA 4 -->
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Tipo attività'); ?>", "name": "idtipointervento", "required": 1, "values": "query=SELECT idtipointervento AS id, descrizione FROM in_tipiintervento", "value": "$idtipointervento$", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Tipo attività'); ?>", "name": "idtipointervento", "required": 1, "ajax-source": "tipiintervento", "value": "$idtipointervento$", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
|
@ -631,8 +631,10 @@ $(document).ready(function() {
|
|||
// session_set("superselect,idzona", $(this).selectData().idzona, 0);
|
||||
|
||||
// Impostazione del tipo intervento da anagrafica
|
||||
input("idtipointervento").getElement()
|
||||
.selectSetNew(data.idtipointervento, data.idtipointervento_descrizione);
|
||||
if (data.idtipointervento) {
|
||||
input("idtipointervento").getElement()
|
||||
.selectSet(data.idtipointervento);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -672,8 +674,12 @@ $(document).ready(function() {
|
|||
contratto.getElement().selectReset();
|
||||
ordine.getElement().selectReset();
|
||||
|
||||
input("idtipointervento").getElement()
|
||||
.selectSetNew($(this).selectData().idtipointervento, $(this).selectData().idtipointervento_descrizione);
|
||||
// Impostazione del tipo intervento da preventivo
|
||||
var data = (this).selectData()
|
||||
if (data.idtipointervento) {
|
||||
input("idtipointervento").getElement()
|
||||
.selectSet(data.idtipointervento);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ switch ($resource) {
|
|||
$filter[] = 'co_pianodeiconti3.id='.prepare($element);
|
||||
}
|
||||
|
||||
$where[] = "co_pianodeiconti2.dir='entrata'";
|
||||
$where[] = "(co_pianodeiconti2.dir='entrata' OR co_pianodeiconti2.dir='entrata/uscita')";
|
||||
|
||||
if (!empty($search)) {
|
||||
$search_fields[] = "CONCAT( co_pianodeiconti2.numero, '.', co_pianodeiconti3.numero, ' ', co_pianodeiconti3.descrizione ) LIKE ".prepare('%'.$search.'%');
|
||||
|
@ -92,7 +92,7 @@ switch ($resource) {
|
|||
$filter[] = 'co_pianodeiconti3.id='.prepare($element);
|
||||
}
|
||||
|
||||
$where[] = "co_pianodeiconti2.dir='uscita'";
|
||||
$where[] = "(co_pianodeiconti2.dir='uscita' OR co_pianodeiconti2.dir='entrata/uscita')";
|
||||
|
||||
if (!empty($search)) {
|
||||
$search_fields[] = "CONCAT( co_pianodeiconti2.numero, '.', co_pianodeiconti3.numero, ' ', co_pianodeiconti3.descrizione ) LIKE ".prepare('%'.$search.'%');
|
||||
|
|
|
@ -54,7 +54,7 @@ $info = $dbo->fetchOne($query);
|
|||
</div>
|
||||
|
||||
<div class="col-md-4 <?php echo intval($lvl != 2) ? 'hidden' : ''; ?>">
|
||||
{[ "type": "select", "label": "<?php echo tr('Utilizza come'); ?>", "name": "dir", "value": "<?php echo $info['dir']; ?>", "values": "list=\"entrata\":\"Ricavo\", \"uscita\":\"Costo\", \"\": \"Non usare\"" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Utilizza come'); ?>", "name": "dir", "value": "<?php echo $info['dir']; ?>", "values": "list=\"entrata\":\"Ricavo\", \"uscita\":\"Costo\", \"entrata/uscita\":\"Ricavo e Costo\", \"\": \"Non usare\"" ]}
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
|
|
|
@ -46,7 +46,7 @@ class Clienti extends AppResource
|
|||
// Elenco di interventi di interesse
|
||||
$risorsa_interventi = $this->getRisorsaInterventi();
|
||||
// Da applicazione, i Clienti sono sincronizzati prima degli Interventi: last_sync_at permette di identificare le stesse modifiche
|
||||
$interventi = $risorsa_interventi->getModifiedRecords($last_sync_at);
|
||||
$interventi = $risorsa_interventi->getModifiedRecords(null);
|
||||
if (empty($interventi)) {
|
||||
return [];
|
||||
}
|
||||
|
|
|
@ -149,6 +149,7 @@ class Interventi extends AppResource
|
|||
codice,
|
||||
richiesta,
|
||||
data_richiesta,
|
||||
data_scadenza,
|
||||
descrizione,
|
||||
idanagrafica AS id_cliente,
|
||||
id_contratto,
|
||||
|
|
|
@ -24,7 +24,7 @@ use API\Resource;
|
|||
|
||||
class Revisione extends Resource implements RetrieveInterface
|
||||
{
|
||||
const REVISION = '1.1';
|
||||
const REVISION = '1.2';
|
||||
|
||||
public function retrieve($request)
|
||||
{
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
/*
|
||||
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
|
||||
* Copyright (C) DevCode s.r.l.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace API\App\v1;
|
||||
|
||||
use API\Interfaces\CreateInterface;
|
||||
use API\Interfaces\RetrieveInterface;
|
||||
use API\Resource;
|
||||
use Modules\Emails\Account;
|
||||
use Modules\Emails\Mail;
|
||||
use Modules\Emails\Template;
|
||||
use Notifications\EmailNotification;
|
||||
|
||||
class SegnalazioneBug extends Resource implements RetrieveInterface, CreateInterface
|
||||
{
|
||||
protected static $bug_email = 'info@openstamanager.com';
|
||||
|
||||
public function retrieve($request)
|
||||
{
|
||||
$account = Account::where('predefined', true)->first();
|
||||
|
||||
return [
|
||||
'sender' => [
|
||||
'name' => $account['from_name'],
|
||||
'email' => $account['from_address'],
|
||||
],
|
||||
'receiver' => self::$bug_email,
|
||||
];
|
||||
}
|
||||
|
||||
public function create($request)
|
||||
{
|
||||
$account = Account::where('predefined', true)->first();
|
||||
|
||||
// Preparazione email
|
||||
$mail = new EmailNotification($account);
|
||||
|
||||
// Destinatario
|
||||
$mail->AddAddress(self::$bug_email);
|
||||
|
||||
// Oggetto
|
||||
$mail->subject = 'Segnalazione bug App OSM '.$request['version'];
|
||||
|
||||
$infos = [
|
||||
|
||||
];
|
||||
|
||||
$body = '';
|
||||
foreach ($infos as $key => $value) {
|
||||
$body .= '<p>'.$key.': '.$value.'</p>';
|
||||
}
|
||||
|
||||
// Contenuti
|
||||
$mail->content = $body;
|
||||
|
||||
// Tentativo di invio diretto
|
||||
$email_success = $mail->send();
|
||||
|
||||
return [
|
||||
'sent' => $email_success,
|
||||
];
|
||||
}
|
||||
}
|
|
@ -7,14 +7,14 @@ UPDATE `zz_views` SET `format`=1 WHERE `zz_views`.`name`='Data' AND `zz_views`.`
|
|||
|
||||
-- Colonna stato per newsletter
|
||||
INSERT INTO `zz_views` ( `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES
|
||||
((SELECT `id` FROM `zz_modules` WHERE name='Newsletter'), 'Stato', 'IF(em_newsletters.state = \'DEV\', \'Bozza\', IF(em_newsletters.state = \'WAIT\', \'Invio in corso\', \'Completata\'))', 4, 1, 0, 0, '', '', 1, 0, 0);
|
||||
((SELECT `id` FROM `zz_modules` WHERE name='Newsletter'), 'Stato', 'IF(em_newsletters.state = ''DEV'', ''Bozza'', IF(em_newsletters.state = ''WAIT'', ''Invio in corso'', ''Completata''))', 4, 1, 0, 0, '', '', 1, 0, 0);
|
||||
|
||||
-- Colonna destinatari per newsletter
|
||||
INSERT INTO `zz_views` ( `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES
|
||||
((SELECT `id` FROM `zz_modules` WHERE name='Newsletter'), 'Destinatari', '(SELECT COUNT(*) FROM `em_newsletter_anagrafica` WHERE `em_newsletter_anagrafica`.`id_newsletter` = `em_newsletters`.`id`)', 5, 1, 0, 0, '', '', 1, 0, 0);
|
||||
|
||||
-- Aggiorno colonna completato per newsletter
|
||||
UPDATE `zz_views` SET `query` = 'IF(completed_at IS NULL, \'No\', CONCAT(\'Sì \', \'(\', DATE_FORMAT(completed_at, \'%d/%m/%Y %H:%i:%s\' ), \')\'))', `order` = 6 WHERE `zz_views`.`id_module` = (SELECT `id` FROM `zz_modules` WHERE name='Newsletter') AND `name` = 'Completato';
|
||||
UPDATE `zz_views` SET `query` = 'IF(completed_at IS NULL, ''No'', CONCAT(''Sì '', ''('', DATE_FORMAT(completed_at, ''%d/%m/%Y %H:%i:%s'' ), '')''))', `order` = 6 WHERE `zz_views`.`id_module` = (SELECT `id` FROM `zz_modules` WHERE name='Newsletter') AND `name` = 'Completato';
|
||||
|
||||
-- Visualizza informazioni aggiuntive sul calendario
|
||||
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Visualizza informazioni aggiuntive sul calendario', '0', 'boolean', '1', 'Dashboard', '1', 'Visualizza sul calendario il box Tutto il giorno dove possono essere presenti informazioni aggiuntve');
|
||||
|
@ -46,7 +46,7 @@ INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `
|
|||
|
||||
-- Aggiunta vista scaduto in scadenzario
|
||||
INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES
|
||||
((SELECT `zz_modules`.`id` FROM `zz_modules` WHERE `zz_modules`.`name`='Scadenzario' ), 'Scaduto', 'IF(pagato = da_pagare, \'NO\', IF(data_concordata IS NOT NULL AND data_concordata > NOW(), \'NO\', IF(scadenza < NOW(), \'SÌ\', \'NO\')))', 14, 1, 0, 0, '', '', 1, 0, 0);
|
||||
((SELECT `zz_modules`.`id` FROM `zz_modules` WHERE `zz_modules`.`name`='Scadenzario' ), 'Scaduto', 'IF(pagato = da_pagare, ''NO'', IF(data_concordata IS NOT NULL AND data_concordata > NOW(), ''NO'', IF(scadenza < NOW(), ''SÌ'', ''NO'')))', 14, 1, 0, 0, '', '', 1, 0, 0);
|
||||
|
||||
INSERT INTO `zz_group_view` (`id_gruppo`, `id_vista`) (SELECT `zz_groups`.`id`, `zz_views`.`id` FROM `zz_groups`, `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` WHERE `zz_modules`.`name` = 'Scadenzario' AND `zz_views`.`name` = 'Scaduto');
|
||||
|
||||
|
@ -63,7 +63,7 @@ UPDATE `co_righe_preventivi` SET `confermato` = 1;
|
|||
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Conferma automaticamente le quantità nei preventivi', '1', 'boolean', '1', 'Preventivi', NULL, NULL);
|
||||
-- Aggiunta vista "Esigibilità" per il modulo "IVA"
|
||||
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES
|
||||
(NULL, (SELECT `zz_modules`.`id` FROM `zz_modules` WHERE `zz_modules`.`name`='IVA'), 'Esigibilità', 'IF(esigibilita=\'I\', \'IVA ad esigibilità immediata\', IF(esigibilita=\'D\', \'IVA ad esigibilità differita\', \'Scissione dei pagamenti\'))', 5, 1, 0, 0, '', '', 1, 0, 0);
|
||||
(NULL, (SELECT `zz_modules`.`id` FROM `zz_modules` WHERE `zz_modules`.`name`='IVA'), 'Esigibilità', 'IF(esigibilita=''I'', ''IVA ad esigibilità immediata'', IF(esigibilita=''D'', ''IVA ad esigibilità differita'', ''Scissione dei pagamenti''))', 5, 1, 0, 0, '', '', 1, 0, 0);
|
||||
|
||||
-- Gestione righe da documenti esterni
|
||||
INSERT INTO `zz_settings` (`nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES ('Permetti il superamento della soglia quantità dei documenti di origine', '0', 'boolean', '1', 'Generali', '20', NULL);
|
||||
|
@ -73,9 +73,57 @@ INSERT INTO `zz_views` ( `id_module`, `name`, `query`, `order`, `search`, `slow`
|
|||
((SELECT `id` FROM `zz_modules` WHERE name='Ordini cliente'), 'Rif. fattura', 'fattura.info', 11, 1, 0, 0, '', '', 1, 0, 0),
|
||||
((SELECT `id` FROM `zz_modules` WHERE name='Ordini fornitore'), 'Rif. fattura', 'fattura.info', 8, 1, 0, 0, '', '', 1, 0, 0);
|
||||
|
||||
UPDATE `zz_modules` SET `options` = 'SELECT |select|\nFROM `or_ordini`\n LEFT JOIN `an_anagrafiche` ON `or_ordini`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`\n LEFT JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine` = `or_tipiordine`.`id`\n LEFT JOIN (\n SELECT `idordine`,\n SUM(`qta` - `qta_evasa`) AS `qta_da_evadere`,\n SUM(`subtotale` - `sconto`) AS `totale_imponibile`,\n SUM(`subtotale` - `sconto` + `iva`) AS `totale`\n FROM `or_righe_ordini`\n GROUP BY `idordine`\n ) AS righe ON `or_ordini`.`id` = `righe`.`idordine`\n LEFT JOIN (\n SELECT `idordine`,\n MIN(`data_evasione`) AS `data_evasione`\n FROM `or_righe_ordini`\n WHERE (`qta` - `qta_evasa`)>0\n GROUP BY `idordine`\n ) AS `righe_da_evadere` ON `righe`.`idordine`=`righe_da_evadere`.`idordine`\n LEFT JOIN (\n SELECT GROUP_CONCAT(co_documenti.numero_esterno SEPARATOR \", \") AS info, co_righe_documenti.idordine FROM co_documenti INNER JOIN co_righe_documenti ON co_documenti.id = co_righe_documenti.iddocumento GROUP BY idordine\n) AS fattura ON fattura.idordine = or_ordini.id\nWHERE 1=1 AND `dir` = \'entrata\' |date_period(`data`)|\nHAVING 2=2\nORDER BY `data` DESC, CAST(`numero_esterno` AS UNSIGNED) DESC' WHERE `zz_modules`.`name` = 'Ordini cliente';
|
||||
UPDATE `zz_modules` SET `options` = 'SELECT |select|
|
||||
FROM `or_ordini`
|
||||
LEFT JOIN `an_anagrafiche` ON `or_ordini`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
|
||||
LEFT JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine` = `or_tipiordine`.`id`
|
||||
LEFT JOIN (
|
||||
SELECT `idordine`,
|
||||
SUM(`qta` - `qta_evasa`) AS `qta_da_evadere`,
|
||||
SUM(`subtotale` - `sconto`) AS `totale_imponibile`,
|
||||
SUM(`subtotale` - `sconto` + `iva`) AS `totale`
|
||||
FROM `or_righe_ordini`
|
||||
GROUP BY `idordine`
|
||||
) AS righe ON `or_ordini`.`id` = `righe`.`idordine`
|
||||
LEFT JOIN (
|
||||
SELECT `idordine`,
|
||||
MIN(`data_evasione`) AS `data_evasione`
|
||||
FROM `or_righe_ordini`
|
||||
WHERE (`qta` - `qta_evasa`)>0
|
||||
GROUP BY `idordine`
|
||||
) AS `righe_da_evadere` ON `righe`.`idordine`=`righe_da_evadere`.`idordine`
|
||||
LEFT JOIN (
|
||||
SELECT GROUP_CONCAT(co_documenti.numero_esterno SEPARATOR \", \") AS info, co_righe_documenti.idordine FROM co_documenti INNER JOIN co_righe_documenti ON co_documenti.id = co_righe_documenti.iddocumento GROUP BY idordine
|
||||
) AS fattura ON fattura.idordine = or_ordini.id
|
||||
WHERE 1=1 AND `dir` = ''entrata'' |date_period(`data`)|
|
||||
HAVING 2=2
|
||||
ORDER BY `data` DESC, CAST(`numero_esterno` AS UNSIGNED) DESC' WHERE `zz_modules`.`name` = 'Ordini cliente';
|
||||
|
||||
UPDATE `zz_modules` SET `options` = 'SELECT |select|\nFROM `or_ordini`\n LEFT JOIN `an_anagrafiche` ON `or_ordini`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`\n LEFT JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine` = `or_tipiordine`.`id`\n LEFT JOIN (\n SELECT `idordine`,\n SUM(`qta` - `qta_evasa`) AS `qta_da_evadere`,\n SUM(`subtotale` - `sconto`) AS `totale_imponibile`,\n SUM(`subtotale` - `sconto` + `iva`) AS `totale`\n FROM `or_righe_ordini`\n GROUP BY `idordine`\n ) AS righe ON `or_ordini`.`id` = `righe`.`idordine`\n LEFT JOIN (\n SELECT `idordine`,\n MIN(`data_evasione`) AS `data_evasione`\n FROM `or_righe_ordini`\n WHERE (`qta` - `qta_evasa`)>0\n GROUP BY `idordine`\n ) AS `righe_da_evadere` ON `righe`.`idordine`=`righe_da_evadere`.`idordine`\n LEFT JOIN (\n SELECT GROUP_CONCAT(co_documenti.numero_esterno SEPARATOR \", \") AS info, co_righe_documenti.idordine FROM co_documenti INNER JOIN co_righe_documenti ON co_documenti.id = co_righe_documenti.iddocumento GROUP BY idordine\n) AS fattura ON fattura.idordine = or_ordini.id\nWHERE 1=1 AND `dir` = \'uscita\' |date_period(`data`)|\nHAVING 2=2\nORDER BY `data` DESC, CAST(`numero_esterno` AS UNSIGNED) DESC' WHERE `zz_modules`.`name` = 'Ordini fornitore';
|
||||
UPDATE `zz_modules` SET `options` = 'SELECT |select|
|
||||
FROM `or_ordini`
|
||||
LEFT JOIN `an_anagrafiche` ON `or_ordini`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
|
||||
LEFT JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine` = `or_tipiordine`.`id`
|
||||
LEFT JOIN (
|
||||
SELECT `idordine`,
|
||||
SUM(`qta` - `qta_evasa`) AS `qta_da_evadere`,
|
||||
SUM(`subtotale` - `sconto`) AS `totale_imponibile`,
|
||||
SUM(`subtotale` - `sconto` + `iva`) AS `totale`
|
||||
FROM `or_righe_ordini`
|
||||
GROUP BY `idordine`
|
||||
) AS righe ON `or_ordini`.`id` = `righe`.`idordine`
|
||||
LEFT JOIN (
|
||||
SELECT `idordine`,
|
||||
MIN(`data_evasione`) AS `data_evasione`
|
||||
FROM `or_righe_ordini`
|
||||
WHERE (`qta` - `qta_evasa`)>0
|
||||
GROUP BY `idordine`
|
||||
) AS `righe_da_evadere` ON `righe`.`idordine`=`righe_da_evadere`.`idordine`
|
||||
LEFT JOIN (
|
||||
SELECT GROUP_CONCAT(co_documenti.numero_esterno SEPARATOR \", \") AS info, co_righe_documenti.idordine FROM co_documenti INNER JOIN co_righe_documenti ON co_documenti.id = co_righe_documenti.iddocumento GROUP BY idordine
|
||||
) AS fattura ON fattura.idordine = or_ordini.id
|
||||
WHERE 1=1 AND `dir` = ''uscita'' |date_period(`data`)|
|
||||
HAVING 2=2
|
||||
ORDER BY `data` DESC, CAST(`numero_esterno` AS UNSIGNED) DESC' WHERE `zz_modules`.`name` = 'Ordini fornitore';
|
||||
|
||||
INSERT INTO `zz_api_resources` (`id`, `version`, `type`, `resource`, `class`, `enabled`) VALUES
|
||||
(NULL, 'app-v1', 'retrieve', 'sedi-azienda', 'API\\App\\v1\\SediAzienda', '1'),
|
||||
|
@ -83,4 +131,6 @@ INSERT INTO `zz_api_resources` (`id`, `version`, `type`, `resource`, `class`, `e
|
|||
(NULL, 'app-v1', 'retrieve', 'sede-azienda', 'API\\App\\v1\\SediAzienda', '1'),
|
||||
(NULL, 'app-v1', 'retrieve', 'movimenti-manuali', 'API\\App\\v1\\MovimentiManuali', '1'),
|
||||
(NULL, 'app-v1', 'retrieve', 'movimenti-manuali-cleanup', 'API\\App\\v1\\MovimentiManuali', '1'),
|
||||
(NULL, 'app-v1', 'create', 'movimento-manuale', 'API\\App\\v1\\MovimentiManuali', '1');
|
||||
(NULL, 'app-v1', 'create', 'movimento-manuale', 'API\\App\\v1\\MovimentiManuali', '1'),
|
||||
(NULL, 'app-v1', 'retrieve', 'segnalazione-bug', 'API\\App\\v1\\SegnalazioneBug', '1'),
|
||||
(NULL, 'app-v1', 'create', 'segnalazione-bug', 'API\\App\\v1\\SegnalazioneBug', '1');
|
||||
|
|
Loading…
Reference in New Issue