#4180 - Nota di credito per ddt in ingresso
This commit is contained in:
parent
7ed9a7f50f
commit
a488aad057
|
@ -72,17 +72,12 @@ if (!empty($options['create_document'])) {
|
||||||
|
|
||||||
// Opzioni aggiuntive per le Fatture
|
// Opzioni aggiuntive per le Fatture
|
||||||
if (in_array($final_module['name'], ['Fatture di vendita', 'Fatture di acquisto'])) {
|
if (in_array($final_module['name'], ['Fatture di vendita', 'Fatture di acquisto'])) {
|
||||||
if ($options['op'] == 'nota_accredito' && !empty($segmenti)) {
|
$id_segment = $_SESSION['module_'.$final_module['id']]['id_segment'];
|
||||||
$segmento = $database->fetchOne("SELECT * FROM zz_segments WHERE predefined_accredito='1'");
|
|
||||||
|
|
||||||
$id_segment = $segmento['id'];
|
$stato_predefinito = $database->fetchOne("SELECT id FROM co_statidocumento WHERE descrizione = 'Bozza'");
|
||||||
} else {
|
|
||||||
$id_segment = $_SESSION['module_'.$final_module['id']]['id_segment'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$stato_predefinito = $database->fetchOne("SELECT * FROM co_statidocumento WHERE descrizione = 'Bozza'");
|
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
|
<input type="hidden" name="reversed" value="'.$options['reversed'].'">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT * FROM co_statidocumento WHERE descrizione IN (\'Emessa\', \'Bozza\')", "value": "'.$stato_predefinito['id'].'"]}
|
{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT * FROM co_statidocumento WHERE descrizione IN (\'Emessa\', \'Bozza\')", "value": "'.$stato_predefinito['id'].'"]}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -33,6 +33,7 @@ switch (filter('op')) {
|
||||||
$dbo->update('dt_causalet', [
|
$dbo->update('dt_causalet', [
|
||||||
'descrizione' => $descrizione,
|
'descrizione' => $descrizione,
|
||||||
'is_importabile' => filter('is_importabile'),
|
'is_importabile' => filter('is_importabile'),
|
||||||
|
'reversed' => filter('reversed'),
|
||||||
'predefined' => $predefined,
|
'predefined' => $predefined,
|
||||||
], ['id' => $id_record]);
|
], ['id' => $id_record]);
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,9 @@ include_once __DIR__.'/../../core.php';
|
||||||
<div class="panel-body">
|
<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'); ?>" ]}
|
{[ "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 class="panel-body">
|
||||||
|
{[ "type": "checkbox", "label": "<?php echo tr('Abilita storno'); ?>", "name": "reversed", "value": "$reversed$", "help": "<?php echo tr('I documenti associati a questa causale possono essere stornati come nota di credito'); ?>", "placeholder": "<?php echo tr('Abilita storno'); ?>" ]}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -23,7 +23,6 @@ echo '
|
||||||
<div class="tip" data-toggle="tooltip" title="'.tr("Il ddt è fatturabile solo se non si trova negli stati _STATE_LIST_ e la relativa causale è abilitata all'importazione in altri documenti", [
|
<div class="tip" data-toggle="tooltip" 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',
|
'_STATE_LIST_' => 'Evaso, Parzialmente evaso, Parzialmente fatturato',
|
||||||
]).'">
|
]).'">
|
||||||
<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').'">
|
<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 ').($ddt->reversed ? 'nota di credito' : ($dir == 'entrata' ? 'fattura di vendita' : 'fattura di acquisto')).'"><i class="fa fa-magic"></i> '.tr('Crea ').($ddt->reversed ? 'nota di credito' : ($dir == 'entrata' ? 'fattura di vendita' : 'fattura di acquisto')).'
|
||||||
<i class="fa fa-magic"></i> '.tr('Crea fattura').(($dir == 'entrata') ? ' di vendita' : ' di acquisto').'
|
|
||||||
</button>
|
</button>
|
||||||
</div>';
|
</div>';
|
||||||
|
|
|
@ -21,14 +21,24 @@ include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
use Modules\DDT\DDT;
|
use Modules\DDT\DDT;
|
||||||
use Modules\Fatture\Fattura;
|
use Modules\Fatture\Fattura;
|
||||||
|
|
||||||
$documento = DDT::find($id_record);
|
$documento = DDT::find($id_record);
|
||||||
|
|
||||||
$module = Modules::get($id_module);
|
$module = Modules::get($id_module);
|
||||||
|
if($documento->reversed){
|
||||||
$final_module = $module['name'] == 'Ddt di vendita' ? 'Fatture di vendita' : 'Fatture di acquisto';
|
if($module['name'] == 'Ddt di vendita'){
|
||||||
$dir = $module['name'] == 'Ddt di vendita' ? 'entrata' : 'uscita';
|
$final_module = 'Fatture di acquisto';
|
||||||
$tipo_documento_finale = Fattura::class;
|
$dir = 'uscita';
|
||||||
|
} else {
|
||||||
|
$final_module = 'Fatture di vendita';
|
||||||
|
$dir = 'entrata';
|
||||||
|
}
|
||||||
|
} elseif($module['name'] == 'Ddt di vendita'){
|
||||||
|
$final_module = 'Fatture di vendita';
|
||||||
|
$dir = 'entrata';
|
||||||
|
} else {
|
||||||
|
$final_module = 'Fatture di acquisto';
|
||||||
|
$dir = 'uscita';
|
||||||
|
}
|
||||||
|
|
||||||
$options = [
|
$options = [
|
||||||
'op' => 'add_documento',
|
'op' => 'add_documento',
|
||||||
|
@ -40,6 +50,7 @@ $options = [
|
||||||
'create_document' => true,
|
'create_document' => true,
|
||||||
'documento' => $documento,
|
'documento' => $documento,
|
||||||
'tipo_documento_finale' => $tipo_documento_finale,
|
'tipo_documento_finale' => $tipo_documento_finale,
|
||||||
|
'reversed' => $documento->reversed,
|
||||||
];
|
];
|
||||||
|
|
||||||
echo App::load('importa.php', [], $options, true);
|
echo App::load('importa.php', [], $options, true);
|
|
@ -133,6 +133,14 @@ class DDT extends Document
|
||||||
return $causale['is_importabile'] && !in_array($this->stato->descrizione, $stati_non_importabili);
|
return $causale['is_importabile'] && !in_array($this->stato->descrizione, $stati_non_importabili);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getReversedAttribute()
|
||||||
|
{
|
||||||
|
$database = database();
|
||||||
|
$causale = $database->fetchOne('SELECT * FROM `dt_causalet` WHERE `id` = '.prepare($this->idcausalet));
|
||||||
|
|
||||||
|
return $causale['reversed'];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restituisce il peso calcolato sulla base degli articoli del documento.
|
* Restituisce il peso calcolato sulla base degli articoli del documento.
|
||||||
*
|
*
|
||||||
|
|
|
@ -676,6 +676,7 @@ switch (post('op')) {
|
||||||
case 'add_documento':
|
case 'add_documento':
|
||||||
$class = post('class');
|
$class = post('class');
|
||||||
$id_documento = post('id_documento');
|
$id_documento = post('id_documento');
|
||||||
|
$reversed = post('reversed');
|
||||||
|
|
||||||
// Individuazione del documento originale
|
// Individuazione del documento originale
|
||||||
if (!is_subclass_of($class, \Common\Document::class)) {
|
if (!is_subclass_of($class, \Common\Document::class)) {
|
||||||
|
@ -691,7 +692,12 @@ switch (post('op')) {
|
||||||
// Creazione della fattura al volo
|
// Creazione della fattura al volo
|
||||||
if (post('create_document') == 'on') {
|
if (post('create_document') == 'on') {
|
||||||
$descrizione = ($documento->direzione == 'entrata') ? 'Fattura immediata di vendita' : 'Fattura immediata di acquisto';
|
$descrizione = ($documento->direzione == 'entrata') ? 'Fattura immediata di vendita' : 'Fattura immediata di acquisto';
|
||||||
$tipo = Tipo::where('descrizione', $descrizione)->first();
|
|
||||||
|
if($reversed){
|
||||||
|
$tipo = Tipo::where('descrizione', 'Nota di credito')->where('dir', '!=', $documento->direzione)->first();
|
||||||
|
} else {
|
||||||
|
$tipo = Tipo::where('descrizione', $descrizione)->first();
|
||||||
|
}
|
||||||
|
|
||||||
$fattura = Fattura::build($documento->anagrafica, $tipo, post('data'), post('id_segment'));
|
$fattura = Fattura::build($documento->anagrafica, $tipo, post('data'), post('id_segment'));
|
||||||
|
|
||||||
|
@ -714,6 +720,9 @@ switch (post('op')) {
|
||||||
foreach ($righe as $riga) {
|
foreach ($righe as $riga) {
|
||||||
if (post('evadere')[$riga->id] == 'on') {
|
if (post('evadere')[$riga->id] == 'on') {
|
||||||
$qta = post('qta_da_evadere')[$riga->id];
|
$qta = post('qta_da_evadere')[$riga->id];
|
||||||
|
if($reversed){
|
||||||
|
$qta = -$qta;
|
||||||
|
}
|
||||||
|
|
||||||
$copia = $riga->copiaIn($fattura, $qta);
|
$copia = $riga->copiaIn($fattura, $qta);
|
||||||
$copia->id_conto = $id_conto;
|
$copia->id_conto = $id_conto;
|
||||||
|
|
|
@ -91,3 +91,7 @@ WHERE
|
||||||
`id_articolo` = `mg_articoli`.`id`
|
`id_articolo` = `mg_articoli`.`id`
|
||||||
) AND `id_fornitore` IS NOT NULL
|
) AND `id_fornitore` IS NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
-- Aggiunta colonna reversed
|
||||||
|
ALTER TABLE `dt_causalet` ADD `reversed` TINYINT(1) NOT NULL AFTER `is_importabile`;
|
||||||
|
UPDATE `dt_causalet` SET `reversed`=1 WHERE `descrizione`='Reso';
|
Loading…
Reference in New Issue