mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-23 23:07:46 +01:00
Introduzione dichiarazione d'intento
This commit is contained in:
parent
c84ce7567f
commit
430a87357d
@ -32,5 +32,6 @@ return [
|
||||
'plugins/exportFE' => 'Plugins\ExportFE',
|
||||
'plugins/importFE' => 'Plugins\ImportFE',
|
||||
'plugins/receiptFE' => 'Plugins\ReceiptFE',
|
||||
'plugins/dichiarazioni_intento' => 'Plugins\DichiarazioniIntento',
|
||||
'plugins/statistiche_articoli' => 'Plugins\StatisticheArticoli',
|
||||
];
|
||||
|
@ -102,9 +102,12 @@ abstract class Description extends Model
|
||||
$this->qta = 0;
|
||||
$result = parent::delete();
|
||||
|
||||
// Fix stato automatico
|
||||
// Trigger per la modifica delle righe
|
||||
$this->parent->triggerComponent($this);
|
||||
|
||||
// Trigger per l'evasione delle quantità
|
||||
if ($this->hasOriginal()) {
|
||||
$original->parent->fixStato($this);
|
||||
$original->parent->triggerEvasione($this);
|
||||
}
|
||||
|
||||
return $result;
|
||||
@ -221,11 +224,14 @@ abstract class Description extends Model
|
||||
{
|
||||
$result = parent::save($options);
|
||||
|
||||
// Fix stato automatico
|
||||
// Trigger per la modifica delle righe
|
||||
$this->parent->triggerComponent($this);
|
||||
|
||||
// Trigger per l'evasione delle quantità
|
||||
if ($this->hasOriginal()) {
|
||||
$original = $this->getOriginal();
|
||||
|
||||
$original->parent->fixStato($this);
|
||||
$original->parent->triggerEvasione($this);
|
||||
}
|
||||
|
||||
return $result;
|
||||
|
@ -161,17 +161,25 @@ abstract class Document extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua un controllo sui campi del documento.
|
||||
* Viene richiamatp dalle modifiche alle righe del documento.
|
||||
* Metodo richiamato a seguito di modifiche sull'evasione generale delle righe del documento.
|
||||
* Utilizzabile per limpostazione automatica degli stati.
|
||||
*
|
||||
* @param Description $trigger
|
||||
*/
|
||||
public function fixStato(Description $trigger)
|
||||
public function triggerEvasione(Description $trigger)
|
||||
{
|
||||
$this->load('righe');
|
||||
$this->load('articoli');
|
||||
$this->load('descrizioni');
|
||||
$this->load('sconti');
|
||||
$this->setRelations([]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Metodo richiamato a seguito della modifica o creazione di una riga del documento.
|
||||
* Utilizzabile per limpostazione automatica di campi statici del documento.
|
||||
*
|
||||
* @param Description $trigger
|
||||
*/
|
||||
public function triggerComponent(Description $trigger)
|
||||
{
|
||||
$this->setRelations([]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -156,9 +156,9 @@ class Contratto extends Document
|
||||
*
|
||||
* @param Description $trigger
|
||||
*/
|
||||
public function fixStato(Description $trigger)
|
||||
public function triggerEvasione(Description $trigger)
|
||||
{
|
||||
parent::fixStato($trigger);
|
||||
parent::triggerEvasione($trigger);
|
||||
|
||||
$righe = $this->getRighe();
|
||||
|
||||
|
@ -137,9 +137,9 @@ class DDT extends Document
|
||||
*
|
||||
* @param Description $trigger
|
||||
*/
|
||||
public function fixStato(Description $trigger)
|
||||
public function triggerEvasione(Description $trigger)
|
||||
{
|
||||
parent::fixStato($trigger);
|
||||
parent::triggerEvasione($trigger);
|
||||
|
||||
if (setting('Cambia automaticamente stato ddt fatturati')) {
|
||||
$righe = $this->getRighe();
|
||||
|
@ -128,9 +128,9 @@ class Ordine extends Document
|
||||
*
|
||||
* @param Description $trigger
|
||||
*/
|
||||
public function fixStato(Description $trigger)
|
||||
public function triggerEvasione(Description $trigger)
|
||||
{
|
||||
parent::fixStato($trigger);
|
||||
parent::triggerEvasione($trigger);
|
||||
|
||||
if (setting('Cambia automaticamente stato ordini fatturati')) {
|
||||
$righe = $this->getRighe();
|
||||
|
@ -181,9 +181,9 @@ class Preventivo extends Document
|
||||
*
|
||||
* @param Description $trigger
|
||||
*/
|
||||
public function fixStato(Description $trigger)
|
||||
public function triggerEvasione(Description $trigger)
|
||||
{
|
||||
parent::fixStato($trigger);
|
||||
parent::triggerEvasione($trigger);
|
||||
|
||||
$righe = $this->getRighe();
|
||||
|
||||
|
51
plugins/dichiarazioni_intento/actions.php
Normal file
51
plugins/dichiarazioni_intento/actions.php
Normal file
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
use Modules\Anagrafiche\Anagrafica;
|
||||
use Plugins\DichiarazioniIntento\Dichiarazione;
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
$operazione = filter('op');
|
||||
|
||||
switch ($operazione) {
|
||||
case 'add':
|
||||
$anagrafica = Anagrafica::find($id_parent);
|
||||
$dichiarazione = Dichiarazione::build($anagrafica, post('data'), post('numero_protocollo'), post('numero_progressivo'), post('data_inizio'), post('data_fine'));
|
||||
|
||||
$dichiarazione->massimale = post('massimale');
|
||||
$dichiarazione->data_protocollo = post('data_protocollo');
|
||||
$dichiarazione->data_emissione = post('data_emissione');
|
||||
$dichiarazione->save();
|
||||
|
||||
$id_record = $dichiarazione->id;
|
||||
|
||||
if (isAjaxRequest() && !empty($id_record)) {
|
||||
echo json_encode(['id' => $id_record, 'text' => $dichiarazione->numero_protocollo.' - '.$dichiarazione->numero_progressivo]);
|
||||
}
|
||||
|
||||
flash()->info(tr("Aggiunta una dichiarazione d'intento!"));
|
||||
|
||||
break;
|
||||
|
||||
case 'update':
|
||||
$dichiarazione->massimale = post('massimale');
|
||||
$dichiarazione->data = post('data');
|
||||
$dichiarazione->numero_protocollo = post('numero_protocollo');
|
||||
$dichiarazione->numero_progressivo = post('numero_progressivo');
|
||||
$dichiarazione->data_inizio = post('data_inizio');
|
||||
$dichiarazione->data_fine = post('data_fine');
|
||||
$dichiarazione->data_protocollo = post('data_protocollo');
|
||||
$dichiarazione->data_emissione = post('data_emissione');
|
||||
$dichiarazione->save();
|
||||
|
||||
flash()->info(tr('Salvataggio completato!'));
|
||||
|
||||
break;
|
||||
|
||||
case 'delete':
|
||||
$dichiarazione->delete();
|
||||
|
||||
flash()->info(tr("Dichiarazione d'intento eliminata!"));
|
||||
|
||||
break;
|
||||
}
|
55
plugins/dichiarazioni_intento/add.php
Normal file
55
plugins/dichiarazioni_intento/add.php
Normal file
@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
echo '
|
||||
<form action="" method="post" role="form">
|
||||
<input type="hidden" name="id_parent" value="'.$id_parent.'">
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
<input type="hidden" name="op" value="add">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "date", "label": "'.tr('Data di ricezione').'", "name": "data", "required": 1, "value": "-now-" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "'.tr('Numero protocollo').'", "name": "numero_protocollo", "required": 1 ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "'.tr('Numero progressivo').'", "name": "numero_progressivo", "required": 1 ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "date", "label": "'.tr('Data di inizio').'", "name": "data_inizio", "required": 1 ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "date", "label": "'.tr('Data di fine').'", "name": "data_fine", "required": 1 ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Massimale').'", "name": "massimale", "required": 1, "icon-after": "'.currency().'" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "date", "label": "'.tr('Data protocollo').'", "name": "data_protocollo" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "date", "label": "'.tr('Data di emissione').'", "name": "data_emissione" ]}
|
||||
</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> '.tr('Aggiungi').'</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>';
|
65
plugins/dichiarazioni_intento/edit.php
Normal file
65
plugins/dichiarazioni_intento/edit.php
Normal file
@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
echo '
|
||||
<form action="" method="post" role="form" id="form_sedi">
|
||||
<input type="hidden" name="id_plugin" value="'.$id_plugin.'">
|
||||
<input type="hidden" name="id_parent" value="'.$id_parent.'">
|
||||
<input type="hidden" name="id_record" value="'.$record['id'].'">
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
<input type="hidden" name="op" value="update">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "date", "label": "'.tr('Data di ricezione').'", "name": "data", "required": 1, "value": "'.$record['data'].'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "'.tr('Numero protocollo').'", "name": "numero_protocollo", "required": 1, "value": "'.$record['numero_protocollo'].'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "'.tr('Numero progressivo').'", "name": "numero_progressivo", "required": 1, "value": "'.$record['numero_progressivo'].'" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "date", "label": "'.tr('Data di inizio').'", "name": "data_inizio", "required": 1, "value": "'.$record['data_inizio'].'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "date", "label": "'.tr('Data di fine').'", "name": "data_fine", "required": 1, "value": "'.$record['data_fine'].'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Massimale').'", "name": "massimale", "required": 1, "icon-after": "'.currency().'", "value": "'.$record['massimale'].'" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "date", "label": "'.tr('Data protocollo').'", "name": "data_protocollo", "value": "'.$record['data_protocollo'].'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "date", "label": "'.tr('Data di emissione').'", "name": "data_emissione", "value": "'.$record['data_emissione'].'" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p><b>'.tr('Totale utilizzato').':</b> '.moneyFormat($record['totale']).'</p>
|
||||
|
||||
<!-- PULSANTI -->
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<a class="btn btn-danger ask" data-backto="record-edit" data-op="delete" data-id_record="'.$record['id'].'" data-id_plugin="'.$id_plugin.'" data-id_parent="'.$id_parent.'">
|
||||
<i class="fa fa-trash"></i> '.tr('Elimina').'
|
||||
</a>
|
||||
|
||||
<button type="submit" class="btn btn-primary pull-right">
|
||||
<i class="fa fa-plus"></i> '.tr('Modifica').'
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>';
|
11
plugins/dichiarazioni_intento/init.php
Normal file
11
plugins/dichiarazioni_intento/init.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
use Plugins\DichiarazioniIntento\Dichiarazione;
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if (isset($id_record)) {
|
||||
$dichiarazione = Dichiarazione::find($id_record);
|
||||
|
||||
$record = $dichiarazione->toArray();
|
||||
}
|
53
plugins/dichiarazioni_intento/src/Dichiarazione.php
Normal file
53
plugins/dichiarazioni_intento/src/Dichiarazione.php
Normal file
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace Plugins\DichiarazioniIntento;
|
||||
|
||||
use Common\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Modules\Anagrafiche\Anagrafica;
|
||||
|
||||
/**
|
||||
* Classe per la gestione delle dichiarazione d'intento.
|
||||
*
|
||||
* @since 2.4.11
|
||||
*/
|
||||
class Dichiarazione extends Model
|
||||
{
|
||||
use SoftDeletes;
|
||||
|
||||
protected $table = 'co_dichiarazioni_intento';
|
||||
|
||||
/**
|
||||
* Crea una nuova dichiarazione d'intento.
|
||||
*
|
||||
* @param Anagrafica $anagrafica
|
||||
* @param $data
|
||||
* @param $numero_protocollo
|
||||
* @param $numero_progressivo
|
||||
* @param $data_inizio
|
||||
* @param $data_fine
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public static function build(Anagrafica $anagrafica, $data, $numero_protocollo, $numero_progressivo, $data_inizio, $data_fine)
|
||||
{
|
||||
$model = parent::build();
|
||||
|
||||
$model->anagrafica()->associate($anagrafica);
|
||||
|
||||
$model->data = $data;
|
||||
$model->numero_protocollo = $numero_protocollo;
|
||||
$model->numero_progressivo = $numero_progressivo;
|
||||
$model->data_inizio = $data_inizio;
|
||||
$model->data_fine = $data_fine;
|
||||
|
||||
$model->save();
|
||||
|
||||
return $model;
|
||||
}
|
||||
|
||||
public function anagrafica()
|
||||
{
|
||||
return $this->belongsTo(Anagrafica::class, 'id_anagrafica');
|
||||
}
|
||||
}
|
@ -445,7 +445,7 @@ UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_documenti`
|
||||
LEFT JOIN (
|
||||
SELECT `numero_esterno`, `id_segment`
|
||||
FROM `co_documenti`
|
||||
WHERE `co_documenti`.`idtipodocumento` IN(SELECT `id` FROM `co_tipidocumento` WHERE `dir` = ''entrata'') |date_period(`co_documenti`.`data`)|
|
||||
WHERE `co_documenti`.`idtipodocumento` IN(SELECT `id` FROM `co_tipidocumento` WHERE `dir` = ''entrata'') |date_period(`co_documenti`.`data`)| AND `numero_esterno` != ''''
|
||||
GROUP BY `id_segment`, `numero_esterno`
|
||||
HAVING COUNT(`numero_esterno`) > 1
|
||||
) dup ON `co_documenti`.`numero_esterno` = `dup`.`numero_esterno` AND `dup`.`id_segment` = `co_documenti`.`id_segment`
|
||||
@ -620,3 +620,26 @@ ALTER TABLE `or_ordini` ADD `data_cliente` DATE NULL DEFAULT NULL, ADD `numero_c
|
||||
|
||||
INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `format`, `default`, `visible`) VALUES
|
||||
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Ordini cliente'), 'Numero ordine cliente', 'numero_cliente', 3, 1, 0, 1, 1);
|
||||
|
||||
-- Dichiarazioni d'Intento
|
||||
CREATE TABLE IF NOT EXISTS `co_dichiarazioni_intento` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`id_anagrafica` int(11) NOT NULL,
|
||||
`data` DATE NOT NULL,
|
||||
`numero_protocollo` varchar(255) NOT NULL,
|
||||
`numero_progressivo` varchar(255) NOT NULL,
|
||||
`data_inizio` DATE NOT NULL,
|
||||
`data_fine` DATE NOT NULL,
|
||||
`data_protocollo` DATE NULL DEFAULT NULL,
|
||||
`data_emissione` DATE NULL DEFAULT NULL,
|
||||
`massimale` DECIMAL(12, 4) NOT NULL,
|
||||
`totale` DECIMAL(12, 4) NOT NULL,
|
||||
`deleted_at` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
FOREIGN KEY (`id_anagrafica`) REFERENCES `an_anagrafiche`(`idanagrafica`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
ALTER TABLE `co_documenti` ADD `id_dichiarazione_intento` int(11), ADD FOREIGN KEY (`id_dichiarazione_intento`) REFERENCES `co_dichiarazioni_intento`(`id`) ON DELETE SET NULL;
|
||||
|
||||
INSERT INTO `zz_plugins` (`id`, `name`, `title`, `idmodule_from`, `idmodule_to`, `position`, `script`, `enabled`, `default`, `order`, `compatibility`, `version`, `options2`, `options`, `directory`, `help`) VALUES (NULL, 'Dichiarazioni d''Intento', 'Dichiarazioni d''Intento', (SELECT id FROM zz_modules WHERE name = 'Fatture di vendita'), (SELECT id FROM zz_modules WHERE name='Anagrafiche'), 'tab', '', '1', '1', '0', '', '', NULL, '{ "main_query": [ { "type": "table", "fields": "Protocollo, Progressivo, Massimale, Totale, Data inizio, Data fine", "query": "SELECT id, numero_protocollo AS Protocollo, numero_progressivo AS Progressivo, DATE_FORMAT(data_inizio,''%d/%m/%Y'') AS ''Data inizio'', DATE_FORMAT(data_inizio,''%d/%m/%Y'') AS ''Data fine'', ROUND(massimale, 2) AS Massimale, ROUND(totale, 2) AS Totale FROM co_dichiarazioni_intento WHERE 1=1 AND deleted_at IS NULL AND id_anagrafica = |id_parent| HAVING 2=2 ORDER BY co_dichiarazioni_intento.id DESC"} ]}', 'dichiarazioni_intento', '');
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user