mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-19 21:10:49 +01:00
Aggiunto supporto alle Causali DDT non fatturabili
This commit is contained in:
parent
213e86ef98
commit
90e74b108f
@ -15,6 +15,7 @@ switch (filter('op')) {
|
||||
|
||||
$dbo->update('dt_causalet', [
|
||||
'descrizione' => $descrizione,
|
||||
'is_importabile' => filter('is_importabile'),
|
||||
'predefined' => $predefined,
|
||||
], ['id' => $id_record]);
|
||||
|
||||
@ -37,6 +38,7 @@ switch (filter('op')) {
|
||||
if ($dbo->fetchNum('SELECT * FROM `dt_causalet` WHERE `descrizione`='.prepare($descrizione)) == 0) {
|
||||
$dbo->insert('dt_causalet', [
|
||||
'descrizione' => $descrizione,
|
||||
'is_importabile' => 1,
|
||||
]);
|
||||
$id_record = $dbo->lastInsertedID();
|
||||
|
||||
|
@ -17,4 +17,4 @@ include_once __DIR__.'/../../core.php';
|
||||
<button type="submit" class="btn btn-primary"><i class="fa fa-plus"></i> <?php echo tr('Aggiungi'); ?></button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</form>
|
||||
|
@ -5,24 +5,32 @@ include_once __DIR__.'/../../core.php';
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
<input type="hidden" name="op" value="update">
|
||||
|
||||
<!-- DATI -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><?php echo tr('Dati'); ?></h3>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-md-9">
|
||||
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$" ]}
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-9">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Causale predefinita'); ?>", "name": "predefined", "value": "$predefined$", "help":"<?php echo tr('Impostare questa causale di trasporto come predefinita per i ddt'); ?>." ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><?php echo tr('Flags'); ?></h3>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Importabile?'); ?>", "name": "is_importabile", "value": "$is_importabile$", "help": "<?php echo tr("I documenti associati a questa causale possono essere importati a livello contabile in altri documenti (per esempio, in Fatture)"); ?>", "placeholder": "<?php echo tr('Importabile'); ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
|
@ -201,7 +201,7 @@ class Contratto extends Document
|
||||
|
||||
/**
|
||||
* Effettua un controllo sui campi del documento.
|
||||
* Viene richiamatp dalle modifiche alle righe del documento.
|
||||
* Viene richiamato dalle modifiche alle righe del documento.
|
||||
*/
|
||||
public function triggerEvasione(Description $trigger)
|
||||
{
|
||||
|
@ -1,9 +1,11 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
$stati_fatturabili = ['Bozza', 'Fatturato'];
|
||||
|
||||
echo '
|
||||
<button '.(!in_array($record['stato'], $stati_fatturabili) ? '' : 'disabled').' class="btn btn-info '.(!in_array($record['stato'], $stati_fatturabili) ? '' : 'disabled tip').'" title="'.((!in_array($record['stato'], $stati_fatturabili)) ? '' : tr('Il ddt è fatturabile solo se non si trova nello stato di: ').implode(', ', $stati_fatturabili)).'" data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=fattura" data-toggle="modal" data-title="'.tr('Crea fattura').(($dir == 'entrata') ? ' di vendita' : ' di acquisto').'">
|
||||
<i class="fa fa-question-circle-o tip" title="'.tr("Il ddt è fatturabile solo se non si trova negli stati _STATE_LIST_ e la relativa causale è abilitata all'importazione in altri documenti", [
|
||||
'_STATE_LIST_' => 'Evaso, Parzialmente evaso, Parzialmente fatturato',
|
||||
]).'"></i>
|
||||
<button class="btn btn-info '.($ddt->isImportabile() ? '' : 'disabled').'" data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=fattura" data-toggle="modal" data-title="'.tr('Crea fattura').(($dir == 'entrata') ? ' di vendita' : ' di acquisto').'">
|
||||
<i class="fa fa-magic"></i> '.tr('Crea fattura').(($dir == 'entrata') ? ' di vendita' : ' di acquisto').'
|
||||
</button>';
|
||||
|
@ -106,6 +106,16 @@ class DDT extends Document
|
||||
return $this->tipo->dir;
|
||||
}
|
||||
|
||||
public function isImportabile()
|
||||
{
|
||||
$stati_non_importabili = ['Bozza', 'Fatturato'];
|
||||
|
||||
$database = database();
|
||||
$causale = $database->fetchOne('SELECT * FROM `dt_causalet` WHERE `id` = '.prepare($this->idcausalet));
|
||||
|
||||
return $causale['is_importabile'] && !in_array($this->stato->descrizione, $stati_non_importabili);
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce il peso calcolato sulla base degli articoli del documento.
|
||||
*
|
||||
@ -175,7 +185,7 @@ class DDT extends Document
|
||||
|
||||
/**
|
||||
* Effettua un controllo sui campi del documento.
|
||||
* Viene richiamatp dalle modifiche alle righe del documento.
|
||||
* Viene richiamato dalle modifiche alle righe del documento.
|
||||
*/
|
||||
public function triggerEvasione(Description $trigger)
|
||||
{
|
||||
@ -208,7 +218,6 @@ class DDT extends Document
|
||||
*
|
||||
* @param string $data
|
||||
* @param string $direzione
|
||||
* @param int $id_segment
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
|
@ -31,12 +31,12 @@ $id_anagrafica = $documento_finale->idanagrafica;
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "select", "label": "'.tr('Ddt').'", "name": "id_documento", "values": "query=SELECT dt_ddt.id, CONCAT(\'DDT num. \', IF(numero_esterno != \'\', numero_esterno, numero), \' del \', DATE_FORMAT(data, \'%d-%m-%Y\'), \' [\', (SELECT descrizione FROM dt_statiddt WHERE id = idstatoddt) , \']\') AS descrizione FROM dt_ddt WHERE idanagrafica='.prepare($id_anagrafica).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND idtipoddt=(SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') AND dt_ddt.id IN (SELECT idddt FROM dt_righe_ddt WHERE dt_righe_ddt.idddt = dt_ddt.id AND (qta - qta_evasa) > 0) ORDER BY data DESC, numero DESC" ]}
|
||||
{[ "type": "select", "label": "'.tr('Ddt').'", "name": "id_documento", "values": "query=SELECT dt_ddt.id, CONCAT(\'DDT num. \', IF(numero_esterno != \'\', numero_esterno, numero), \' del \', DATE_FORMAT(data, \'%d-%m-%Y\'), \' [\', (SELECT descrizione FROM dt_statiddt WHERE id = idstatoddt) , \']\') AS descrizione FROM dt_ddt LEFT JOIN `dt_causalet` ON `dt_causalet`.`id` = `dt_ddt`.`idcausalet` WHERE idanagrafica='.prepare($id_anagrafica).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND idtipoddt=(SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') AND `dt_causalet`.`is_importabile` = 1 AND dt_ddt.id IN (SELECT idddt FROM dt_righe_ddt WHERE dt_righe_ddt.idddt = dt_ddt.id AND (qta - qta_evasa) > 0) ORDER BY data DESC, numero DESC" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="righe_documento">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info" id="box-loading">
|
||||
@ -46,20 +46,20 @@ echo '
|
||||
$file = basename(__FILE__);
|
||||
echo '
|
||||
<script>$(document).ready(init)</script>
|
||||
|
||||
|
||||
<script>
|
||||
var content = $("#righe_documento");
|
||||
var loader = $("#box-loading");
|
||||
|
||||
|
||||
$(document).ready(function(){
|
||||
loader.hide();
|
||||
});
|
||||
|
||||
|
||||
$("#id_documento").on("change", function(){
|
||||
loader.show();
|
||||
|
||||
var id = $(this).selectData() ? $(this).selectData().id : "";
|
||||
|
||||
|
||||
content.html("");
|
||||
content.load("'.$structure->fileurl($file).'?id_module='.$id_module.'&id_record='.$id_record.'&id_documento=" + id, function() {
|
||||
loader.hide();
|
||||
|
@ -634,7 +634,15 @@ if (!$block_edit) {
|
||||
}
|
||||
|
||||
// Lettura ddt (entrata o uscita)
|
||||
$ddt_query = 'SELECT COUNT(*) AS tot FROM dt_ddt WHERE idanagrafica='.prepare($record['idanagrafica']).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND idtipoddt IN (SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') AND dt_ddt.id IN (SELECT idddt FROM dt_righe_ddt WHERE dt_righe_ddt.idddt = dt_ddt.id AND (qta - qta_evasa) > 0)';
|
||||
$ddt_query = 'SELECT COUNT(*) AS tot FROM dt_ddt
|
||||
LEFT JOIN `dt_causalet` ON `dt_causalet`.`id` = `dt_ddt`.`idcausalet`
|
||||
LEFT JOIN `dt_statiddt` ON `dt_statiddt`.`id` = `dt_ddt`.`idstatoddt`
|
||||
LEFT JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt`
|
||||
WHERE idanagrafica='.prepare($record['idanagrafica']).'
|
||||
AND `dt_statiddt`.`descrizione` IN (\'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')
|
||||
AND `dt_tipiddt`.`dir` = '.prepare($dir).'
|
||||
AND `dt_causalet`.`is_importabile` = 1
|
||||
AND dt_ddt.id IN (SELECT idddt FROM dt_righe_ddt WHERE dt_righe_ddt.idddt = dt_ddt.id AND (qta - qta_evasa) > 0)';
|
||||
$ddt = $dbo->fetchArray($ddt_query)[0]['tot'];
|
||||
echo '
|
||||
<a class="btn btn-sm btn-primary'.(!empty($ddt) ? '' : ' disabled').'" data-href="'.$rootdir.'/modules/fatture/add_ddt.php?id_module='.$id_module.'&id_record='.$id_record.'" data-toggle="tooltip" data-title="Aggiungi ddt">
|
||||
|
@ -128,7 +128,7 @@ class Ordine extends Document
|
||||
|
||||
/**
|
||||
* Effettua un controllo sui campi del documento.
|
||||
* Viene richiamatp dalle modifiche alle righe del documento.
|
||||
* Viene richiamato dalle modifiche alle righe del documento.
|
||||
*/
|
||||
public function triggerEvasione(Description $trigger)
|
||||
{
|
||||
|
@ -211,7 +211,7 @@ class Preventivo extends Document
|
||||
|
||||
/**
|
||||
* Effettua un controllo sui campi del documento.
|
||||
* Viene richiamatp dalle modifiche alle righe del documento.
|
||||
* Viene richiamato dalle modifiche alle righe del documento.
|
||||
*/
|
||||
public function triggerEvasione(Description $trigger)
|
||||
{
|
||||
|
@ -119,3 +119,6 @@ ALTER TABLE `co_documenti` ADD COLUMN `peso` decimal(12, 4) AFTER `n_colli`, ADD
|
||||
-- Aggiunta data di connessione agli account SMTP
|
||||
ALTER TABLE `em_accounts` ADD `connected_at` TIMESTAMP NULL DEFAULT NULL AFTER `timeout`;
|
||||
UPDATE `em_accounts` SET `connected_at` = NOW();
|
||||
|
||||
-- Aggiunta del flag is_importabile sulle causali per permettere/bloccare l'importazione dei DDT
|
||||
ALTER TABLE `dt_causalet` ADD `is_importabile` BOOLEAN DEFAULT TRUE AFTER `descrizione`;
|
||||
|
Loading…
x
Reference in New Issue
Block a user