mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-16 19:40:44 +01:00
Creazione fattura da preventivo
This commit is contained in:
parent
5ec14ec640
commit
e32d4bae6f
@ -10,6 +10,7 @@ use UnexpectedValueException;
|
||||
abstract class Article extends Row
|
||||
{
|
||||
protected $serialRowID = 'documento';
|
||||
protected $abilita_movimentazione = true;
|
||||
|
||||
public static function build(Document $document, Original $articolo)
|
||||
{
|
||||
@ -76,7 +77,10 @@ abstract class Article extends Row
|
||||
$diff = $value - $previous;
|
||||
|
||||
$this->attributes['qta'] = $value;
|
||||
$this->movimenta($diff);
|
||||
|
||||
if ($this->abilita_movimentazione) {
|
||||
$this->movimenta($diff);
|
||||
}
|
||||
|
||||
$database = database();
|
||||
|
||||
@ -96,6 +100,11 @@ abstract class Article extends Row
|
||||
return $this->belongsTo(Original::class, 'idarticolo');
|
||||
}
|
||||
|
||||
public function movimentazione($value = true)
|
||||
{
|
||||
$this->abilita_movimentazione = $value;
|
||||
}
|
||||
|
||||
protected static function boot()
|
||||
{
|
||||
parent::boot(true);
|
||||
@ -144,8 +153,14 @@ abstract class Article extends Row
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function customCopiaIn($original)
|
||||
protected function customBeforeCopiaIn($original)
|
||||
{
|
||||
$this->movimentazione(false);
|
||||
$this->articolo()->associate($original->articolo);
|
||||
}
|
||||
|
||||
protected function customAfterCopiaIn($original)
|
||||
{
|
||||
$this->movimentazione(true);
|
||||
}
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ abstract class Description extends Model
|
||||
$model = new $object();
|
||||
$model->setParent($document);
|
||||
|
||||
$model->customCopiaIn($this);
|
||||
$model->customBeforeCopiaIn($this);
|
||||
|
||||
$model->save();
|
||||
|
||||
@ -83,6 +83,8 @@ abstract class Description extends Model
|
||||
$attributes = array_intersect_key($attributes, $accepted);
|
||||
$model->fill($attributes);
|
||||
|
||||
$model->customAfterCopiaIn($this);
|
||||
|
||||
$model->save();
|
||||
|
||||
// Rimozione quantità evasa
|
||||
@ -96,11 +98,20 @@ abstract class Description extends Model
|
||||
abstract public function getParentID();
|
||||
|
||||
/**
|
||||
* Azione personalizzata per la copia dell'oggetto.
|
||||
* Azione personalizzata per la copia dell'oggetto (prima della copia).
|
||||
*
|
||||
* @param $original
|
||||
*/
|
||||
protected function customCopiaIn($original)
|
||||
protected function customBeforeCopiaIn($original)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Azione personalizzata per la copia dell'oggetto (dopo la copia).
|
||||
*
|
||||
* @param $original
|
||||
*/
|
||||
protected function customAfterCopiaIn($original)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -81,7 +81,7 @@ switch (post('op')) {
|
||||
'idsede' => post('idsede'),
|
||||
'idconto' => post('idconto'),
|
||||
'split_payment' => post('split_payment') ?: 0,
|
||||
'is_fattura_conto_terzi' => post('is_fattura_conto_terzi') ?: 0,
|
||||
'is_fattura_conto_terzi' => post('is_fattura_conto_terzi') ?: 0,
|
||||
'n_colli' => post('n_colli'),
|
||||
'tipo_resa' => post('tipo_resa'),
|
||||
'bollo' => 0,
|
||||
@ -543,27 +543,15 @@ switch (post('op')) {
|
||||
}
|
||||
|
||||
$articolo->descrizione = post('descrizione');
|
||||
$um = post('um');
|
||||
if (!empty($um)) {
|
||||
$articolo->um = $um;
|
||||
}
|
||||
$articolo->um = post('um') ?: null;
|
||||
|
||||
$articolo->id_iva = post('idiva');
|
||||
$articolo->idconto = post('idconto');
|
||||
|
||||
if (post('calcolo_ritenuta_acconto')) {
|
||||
$articolo->calcolo_ritenuta_acconto = post('calcolo_ritenuta_acconto');
|
||||
$articolo->id_ritenuta_acconto = post('id_ritenuta_acconto');
|
||||
}else{
|
||||
$articolo->calcolo_ritenuta_acconto = null;
|
||||
$articolo->id_ritenuta_acconto = null;
|
||||
}
|
||||
$articolo->calcolo_ritenuta_acconto = post('calcolo_ritenuta_acconto') ?: null;
|
||||
$articolo->id_ritenuta_acconto = post('id_ritenuta_acconto') ?: null;
|
||||
|
||||
if (post('id_rivalsa_inps')) {
|
||||
$articolo->id_rivalsa_inps = post('id_rivalsa_inps');
|
||||
}else{
|
||||
$articolo->id_rivalsa_inps = null;
|
||||
}
|
||||
$articolo->id_rivalsa_inps = post('id_rivalsa_inps') ?: null;
|
||||
|
||||
if (post('prezzo_acquisto')) {
|
||||
$riga->prezzo_unitario_acquisto = post('prezzo_acquisto');
|
||||
@ -606,24 +594,15 @@ switch (post('op')) {
|
||||
}
|
||||
|
||||
$riga->descrizione = post('descrizione');
|
||||
$riga->um = (post('um')) ? :null;
|
||||
|
||||
$riga->um = post('um') ?: null;
|
||||
|
||||
$riga->id_iva = post('idiva');
|
||||
$riga->idconto = post('idconto');
|
||||
|
||||
if (post('calcolo_ritenuta_acconto')) {
|
||||
$riga->calcolo_ritenuta_acconto = post('calcolo_ritenuta_acconto');
|
||||
$riga->id_ritenuta_acconto = post('id_ritenuta_acconto');
|
||||
}else{
|
||||
$riga->calcolo_ritenuta_acconto = null;
|
||||
$riga->id_ritenuta_acconto = null;
|
||||
}
|
||||
$articolo->calcolo_ritenuta_acconto = post('calcolo_ritenuta_acconto') ?: null;
|
||||
$articolo->id_ritenuta_acconto = post('id_ritenuta_acconto') ?: null;
|
||||
|
||||
if (post('id_rivalsa_inps')) {
|
||||
$riga->id_rivalsa_inps = post('id_rivalsa_inps');
|
||||
}else{
|
||||
$riga->id_rivalsa_inps = null;
|
||||
}
|
||||
$articolo->id_rivalsa_inps = post('id_rivalsa_inps') ?: null;
|
||||
|
||||
if (post('prezzo_acquisto')) {
|
||||
$riga->prezzo_unitario_acquisto = post('prezzo_acquisto');
|
||||
|
@ -3,6 +3,8 @@
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
use Modules\Anagrafiche\Anagrafica;
|
||||
use Modules\Fatture\Fattura;
|
||||
use Modules\Fatture\Tipo as TipoFattura;
|
||||
use Modules\Interventi\TipoSessione;
|
||||
use Modules\Preventivi\Components\Articolo;
|
||||
use Modules\Preventivi\Components\Riga;
|
||||
@ -366,6 +368,34 @@ switch (post('op')) {
|
||||
|
||||
flash()->info(tr('Aggiunta nuova revisione!'));
|
||||
break;
|
||||
|
||||
// Creazione fattura da contratto
|
||||
case 'fattura_da_preventivo':
|
||||
$preventivo = Preventivo::find($id_record);
|
||||
|
||||
$tipo = TipoFattura::where('descrizione', 'Fattura immediata di vendita')->first();
|
||||
$id_segment = $dbo->fetchOne('SELECT * FROM zz_segments WHERE id_module='.prepare($id_module)." AND predefined='1'")['id'];
|
||||
$data = date('Y-m-d');
|
||||
|
||||
$fattura = Fattura::build($preventivo->anagrafica, $tipo, $data, $id_segment);
|
||||
$fattura->idpagamento = $preventivo->idpagamento;
|
||||
|
||||
$id_conto = setting('Conto predefinito fatture di vendita');
|
||||
|
||||
$righe = $preventivo->getRighe();
|
||||
foreach ($righe as $riga) {
|
||||
$copia = $riga->copiaIn($fattura);
|
||||
$copia->movimenta($copia->qta);
|
||||
|
||||
$copia->idconto = $id_conto;
|
||||
}
|
||||
|
||||
flash()->info(tr('Creata una nuova fattura!'));
|
||||
|
||||
$id_record = $fattura->id;
|
||||
$id_module = Modules::get('Fatture di vendita')['id'];
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (post('op') !== null && post('op') != 'update') {
|
||||
|
@ -3,17 +3,17 @@
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
echo'
|
||||
<button type="button" class="btn btn-primary" onclick="if( confirm(\'Duplicare questo preventivo?\') ){ $(\'#form-copy\').submit(); }"> <i class="fa fa-copy"></i> '.tr('Duplica preventivo').'</button>';
|
||||
<button type="button" class="btn btn-primary" onclick="if( confirm(\'Duplicare questo preventivo?\') ){ $(\'#copia-preventivo\').submit(); }"> <i class="fa fa-copy"></i> '.tr('Duplica preventivo').'</button>';
|
||||
|
||||
if (!in_array($record['stato'], ['Bozza', 'Rifiutato', 'In attesa di conferma'])) {
|
||||
$disabled = '';
|
||||
} else {
|
||||
echo '
|
||||
<button type="button" class="btn btn-warning" onclick="if(confirm(\'Vuoi creare un nuova revisione?\')){$(\'#form_crearevisione\').submit();}"><i class="fa fa-edit"></i> '.tr('Crea nuova revisione...').'</button>';
|
||||
<button type="button" class="btn btn-warning" onclick="if(confirm(\'Vuoi creare un nuova revisione?\')){$(\'#crea-revisione\').submit();}"><i class="fa fa-edit"></i> '.tr('Crea nuova revisione...').'</button>';
|
||||
$disabled = 'disabled';
|
||||
}
|
||||
|
||||
// crea ordine
|
||||
// Creazione altri documenti
|
||||
echo '
|
||||
<div style="margin-left:4px;" class="dropdown pull-right" >
|
||||
<button class="btn btn-info dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true" '.$disabled.' >
|
||||
@ -26,21 +26,47 @@ echo '
|
||||
<a data-href="'.$rootdir.'/modules/ordini/crea_documento.php?id_module='.$id_module.'&id_record='.$id_record.'&documento=ordine" data-toggle="modal" data-title="'.tr('Crea ordine').'"><i class="fa fa-file-o"></i> '.tr('Ordine').'
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a onclick="crea_fattura()"><i class="fa fa-file"></i> '.tr('Fattura').'
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>';
|
||||
|
||||
//duplica preventivo
|
||||
// Duplica preventivo
|
||||
echo '
|
||||
<form action="" method="post" id="form-copy">
|
||||
<form action="" method="post" id="copia-preventivo">
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
<input type="hidden" name="op" value="copy">
|
||||
</form>';
|
||||
|
||||
//crea revisione
|
||||
// Crea revisione
|
||||
echo '
|
||||
<form action="" method="post" id="form_crearevisione">
|
||||
<form action="" method="post" id="crea-revisione">
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
<input type="hidden" name="op" value="add_revision">
|
||||
<input type="hidden" name="id_record" value="'.$id_record.'">
|
||||
</form>';
|
||||
|
||||
// Crea fattura
|
||||
echo '
|
||||
<form action="" method="post" id="fattura-da-preventivo">
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
<input type="hidden" name="op" value="fattura_da_preventivo">
|
||||
<input type="hidden" name="id_record" value="'.$id_record.'">
|
||||
</form>
|
||||
|
||||
<script>
|
||||
function crea_fattura(){
|
||||
swal({
|
||||
title: "'.tr('Creare una fattura per questo preventivo?').'",
|
||||
type: "warning",
|
||||
showCancelButton: true,
|
||||
confirmButtonText: "'.tr('Sì').'"
|
||||
}).then(function (result) {
|
||||
$("#fattura-da-preventivo").submit();
|
||||
})
|
||||
}
|
||||
</script>';
|
||||
|
@ -41,7 +41,7 @@ switch (filter('op')) {
|
||||
case 'delete':
|
||||
$directory = Plugins\ImportFE\FatturaElettronica::getImportDirectory();
|
||||
|
||||
delete($directory.'/'.get('filename'));
|
||||
delete($directory.'/'.get('name'));
|
||||
|
||||
break;
|
||||
|
||||
|
@ -17,7 +17,7 @@ class Interaction extends Connection
|
||||
|
||||
$list = [];
|
||||
|
||||
$files = glob($directory.'/*.xml');
|
||||
$files = glob($directory.'/*.xml*');
|
||||
foreach ($files as $file) {
|
||||
$list[] = basename($file);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user