#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
|
||||
if (in_array($final_module['name'], ['Fatture di vendita', 'Fatture di acquisto'])) {
|
||||
if ($options['op'] == 'nota_accredito' && !empty($segmenti)) {
|
||||
$segmento = $database->fetchOne("SELECT * FROM zz_segments WHERE predefined_accredito='1'");
|
||||
|
||||
$id_segment = $segmento['id'];
|
||||
} else {
|
||||
$id_segment = $_SESSION['module_'.$final_module['id']]['id_segment'];
|
||||
}
|
||||
|
||||
$stato_predefinito = $database->fetchOne("SELECT * FROM co_statidocumento WHERE descrizione = 'Bozza'");
|
||||
$stato_predefinito = $database->fetchOne("SELECT id FROM co_statidocumento WHERE descrizione = 'Bozza'");
|
||||
|
||||
echo '
|
||||
<input type="hidden" name="reversed" value="'.$options['reversed'].'">
|
||||
<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'].'"]}
|
||||
</div>
|
||||
|
|
|
@ -33,6 +33,7 @@ switch (filter('op')) {
|
|||
$dbo->update('dt_causalet', [
|
||||
'descrizione' => $descrizione,
|
||||
'is_importabile' => filter('is_importabile'),
|
||||
'reversed' => filter('reversed'),
|
||||
'predefined' => $predefined,
|
||||
], ['id' => $id_record]);
|
||||
|
||||
|
|
|
@ -46,6 +46,9 @@ include_once __DIR__.'/../../core.php';
|
|||
<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 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>
|
||||
|
|
|
@ -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", [
|
||||
'_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').'">
|
||||
<i class="fa fa-magic"></i> '.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')).'
|
||||
</button>
|
||||
</div>';
|
||||
|
|
|
@ -21,14 +21,24 @@ include_once __DIR__.'/../../core.php';
|
|||
|
||||
use Modules\DDT\DDT;
|
||||
use Modules\Fatture\Fattura;
|
||||
|
||||
$documento = DDT::find($id_record);
|
||||
|
||||
$module = Modules::get($id_module);
|
||||
|
||||
$final_module = $module['name'] == 'Ddt di vendita' ? 'Fatture di vendita' : 'Fatture di acquisto';
|
||||
$dir = $module['name'] == 'Ddt di vendita' ? 'entrata' : 'uscita';
|
||||
$tipo_documento_finale = Fattura::class;
|
||||
if($documento->reversed){
|
||||
if($module['name'] == 'Ddt di vendita'){
|
||||
$final_module = 'Fatture di acquisto';
|
||||
$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 = [
|
||||
'op' => 'add_documento',
|
||||
|
@ -40,6 +50,7 @@ $options = [
|
|||
'create_document' => true,
|
||||
'documento' => $documento,
|
||||
'tipo_documento_finale' => $tipo_documento_finale,
|
||||
'reversed' => $documento->reversed,
|
||||
];
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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.
|
||||
*
|
||||
|
|
|
@ -676,6 +676,7 @@ switch (post('op')) {
|
|||
case 'add_documento':
|
||||
$class = post('class');
|
||||
$id_documento = post('id_documento');
|
||||
$reversed = post('reversed');
|
||||
|
||||
// Individuazione del documento originale
|
||||
if (!is_subclass_of($class, \Common\Document::class)) {
|
||||
|
@ -691,7 +692,12 @@ switch (post('op')) {
|
|||
// Creazione della fattura al volo
|
||||
if (post('create_document') == 'on') {
|
||||
$descrizione = ($documento->direzione == 'entrata') ? 'Fattura immediata di vendita' : 'Fattura immediata di acquisto';
|
||||
|
||||
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'));
|
||||
|
||||
|
@ -714,6 +720,9 @@ switch (post('op')) {
|
|||
foreach ($righe as $riga) {
|
||||
if (post('evadere')[$riga->id] == 'on') {
|
||||
$qta = post('qta_da_evadere')[$riga->id];
|
||||
if($reversed){
|
||||
$qta = -$qta;
|
||||
}
|
||||
|
||||
$copia = $riga->copiaIn($fattura, $qta);
|
||||
$copia->id_conto = $id_conto;
|
||||
|
|
|
@ -91,3 +91,7 @@ WHERE
|
|||
`id_articolo` = `mg_articoli`.`id`
|
||||
) 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