Aggiunta creazione ordine fornitore da preventivo
This commit is contained in:
parent
e1408aaf13
commit
7ad756e2f7
|
@ -40,6 +40,7 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
|
||||||
- Nuovo filtro in contratti per mostrare al cliente solo i contratti collegati.
|
- Nuovo filtro in contratti per mostrare al cliente solo i contratti collegati.
|
||||||
- Nuovo pulsante **Duplica Template** per copiare un template già esistente.
|
- Nuovo pulsante **Duplica Template** per copiare un template già esistente.
|
||||||
- Aggiunto controllo nelle fatture di vendita per segnalare l'eventuale fatturazione di un'attività con la data di una sessione futura rispetto alla data della fattura.
|
- Aggiunto controllo nelle fatture di vendita per segnalare l'eventuale fatturazione di un'attività con la data di una sessione futura rispetto alla data della fattura.
|
||||||
|
- Aggiunta possibilità di creare un ordine fornitore da un preventivo.
|
||||||
|
|
||||||
## 2.4.22
|
## 2.4.22
|
||||||
|
|
||||||
|
|
|
@ -138,9 +138,9 @@ if (!empty($options['create_document'])) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Selezione fornitore per Ordine fornitore
|
// Selezione fornitore per Ordine fornitore
|
||||||
if ($options['op'] == 'add_ordine_cliente') {
|
if ($options['op'] == 'add_ordine_cliente' || $options['op'] == 'add_intervento' || $options['op'] == 'add_ordine_fornitore') {
|
||||||
$tipo_anagrafica = tr('Fornitore');
|
$tipo_anagrafica = $options['op'] == 'add_intervento' ? tr('Cliente') : tr('Fornitore');
|
||||||
$ajax = 'fornitori';
|
$ajax = $options['op'] == 'add_intervento' ? 'clienti' : 'fornitori';
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
|
|
|
@ -394,6 +394,7 @@ switch (post('op')) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Aggiunta di un documento in ordine
|
// Aggiunta di un documento in ordine
|
||||||
|
case 'add_intervento':
|
||||||
case 'add_documento':
|
case 'add_documento':
|
||||||
$class = post('class');
|
$class = post('class');
|
||||||
$id_documento = post('id_documento');
|
$id_documento = post('id_documento');
|
||||||
|
@ -413,8 +414,10 @@ switch (post('op')) {
|
||||||
if (post('create_document') == 'on') {
|
if (post('create_document') == 'on') {
|
||||||
$stato = Stato::find(post('id_stato_intervento'));
|
$stato = Stato::find(post('id_stato_intervento'));
|
||||||
$tipo = TipoSessione::find(post('id_tipo_intervento'));
|
$tipo = TipoSessione::find(post('id_tipo_intervento'));
|
||||||
|
|
||||||
|
$anagrafica = post('idanagrafica') ? Anagrafica::find(post('idanagrafica')) : $documento->anagrafica;
|
||||||
|
|
||||||
$intervento = Intervento::build($documento->anagrafica, $tipo, $stato, post('data'));
|
$intervento = Intervento::build($anagrafica, $tipo, $stato, post('data'));
|
||||||
$intervento->idsede_destinazione = $id_sede;
|
$intervento->idsede_destinazione = $id_sede;
|
||||||
|
|
||||||
$intervento->id_documento_fe = $documento->id_documento_fe;
|
$intervento->id_documento_fe = $documento->id_documento_fe;
|
||||||
|
|
|
@ -27,6 +27,7 @@ use Modules\Ordini\Components\Riga;
|
||||||
use Modules\Ordini\Components\Sconto;
|
use Modules\Ordini\Components\Sconto;
|
||||||
use Modules\Ordini\Ordine;
|
use Modules\Ordini\Ordine;
|
||||||
use Modules\Ordini\Tipo;
|
use Modules\Ordini\Tipo;
|
||||||
|
use Modules\Preventivi\Preventivo;
|
||||||
|
|
||||||
$module = Modules::get($id_module);
|
$module = Modules::get($id_module);
|
||||||
|
|
||||||
|
@ -480,6 +481,68 @@ switch (post('op')) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Modifica finale dello stato
|
||||||
|
if (post('create_document') == 'on') {
|
||||||
|
$ordine->idstatoordine = post('id_stato');
|
||||||
|
$ordine->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
ricalcola_costiagg_ordine($id_record);
|
||||||
|
|
||||||
|
flash()->info(tr('Ordine _NUM_ aggiunto!', [
|
||||||
|
'_NUM_' => $ordine->numero,
|
||||||
|
]));
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Aggiunta di un ordine fornitore da un preventivo
|
||||||
|
case 'add_ordine_fornitore':
|
||||||
|
$preventivo = Preventivo::find(post('id_documento'));
|
||||||
|
|
||||||
|
// Creazione dell' ordine al volo
|
||||||
|
if (post('create_document') == 'on') {
|
||||||
|
$anagrafica = Anagrafica::find(post('idanagrafica'));
|
||||||
|
$tipo = Tipo::where('dir', $dir)->first();
|
||||||
|
|
||||||
|
$ordine = Ordine::build($anagrafica, $tipo, post('data'));
|
||||||
|
$ordine->save();
|
||||||
|
|
||||||
|
$id_record = $ordine->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
$righe = $preventivo->getRighe();
|
||||||
|
foreach ($righe as $riga) {
|
||||||
|
if (post('evadere')[$riga->id] == 'on' and !empty(post('qta_da_evadere')[$riga->id])) {
|
||||||
|
$qta = post('qta_da_evadere')[$riga->id];
|
||||||
|
|
||||||
|
$copia = $riga->copiaIn($ordine, $qta, false);
|
||||||
|
$copia->save();
|
||||||
|
|
||||||
|
// Ripristino dei valori di default per campi potenzialmente impostati
|
||||||
|
$copia->original_id = null;
|
||||||
|
$copia->original_type = null;
|
||||||
|
$copia->qta = $qta;
|
||||||
|
$copia->qta_evasa = 0;
|
||||||
|
$copia->costo_unitario = 0;
|
||||||
|
$copia->setSconto(0, 'EUR');
|
||||||
|
|
||||||
|
// Impostazione al prezzo di acquisto per Articoli
|
||||||
|
if ($copia->isArticolo()) {
|
||||||
|
$articolo = $copia->articolo;
|
||||||
|
$fornitore = $articolo->dettaglioFornitore($anagrafica->id); // Informazioni del fornitore
|
||||||
|
$copia->setPrezzoUnitario($fornitore ? $fornitore->prezzo_acquisto : $articolo->prezzo_acquisto, $copia->aliquota->id);
|
||||||
|
}
|
||||||
|
|
||||||
|
$copia->save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modifica finale dello stato
|
||||||
|
if (post('create_document') == 'on') {
|
||||||
|
$ordine->idstatoordine = post('id_stato');
|
||||||
|
$ordine->save();
|
||||||
|
}
|
||||||
|
|
||||||
ricalcola_costiagg_ordine($id_record);
|
ricalcola_costiagg_ordine($id_record);
|
||||||
|
|
||||||
flash()->info(tr('Ordine _NUM_ aggiunto!', [
|
flash()->info(tr('Ordine _NUM_ aggiunto!', [
|
||||||
|
|
|
@ -38,7 +38,7 @@ if (get('documento') == 'fattura') {
|
||||||
$tipo_documento_finale = Ordine::class;
|
$tipo_documento_finale = Ordine::class;
|
||||||
} elseif (get('documento') == 'intervento') {
|
} elseif (get('documento') == 'intervento') {
|
||||||
$final_module = 'Interventi';
|
$final_module = 'Interventi';
|
||||||
$op = 'add_documento';
|
$op = $module->name == 'Ordini cliente' ? 'add_documento' : 'add_intervento';
|
||||||
$tipo_documento_finale = Intervento::class;
|
$tipo_documento_finale = Intervento::class;
|
||||||
} else {
|
} else {
|
||||||
$final_module = $module['name'] == 'Ordini cliente' ? 'Ddt di vendita' : 'Ddt di acquisto';
|
$final_module = $module['name'] == 'Ordini cliente' ? 'Ddt di vendita' : 'Ddt di acquisto';
|
||||||
|
|
|
@ -59,10 +59,16 @@ echo '
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a class="'.($disabled ? '' : 'disabled').'" data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ordine" data-toggle="modal" data-title="'.tr('Crea ordine cliente').'">
|
<a class="'.($disabled ? '' : 'disabled').'" data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ordine_cliente" data-toggle="modal" data-title="'.tr('Crea ordine cliente').'">
|
||||||
<i class="fa fa-file-o"></i> '.tr('Ordine cliente').'
|
<i class="fa fa-file-o"></i> '.tr('Ordine cliente').'
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a class="'.($disabled ? '' : 'disabled').'" data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ordine_fornitore" data-toggle="modal" data-title="'.tr('Crea ordine fornitore').'">
|
||||||
|
<i class="fa fa-file-o"></i> '.tr('Ordine fornitore').'
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a class="'.($disabled ? '' : 'disabled').'" data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ddt" data-toggle="modal" data-title="'.tr('Crea ordine cliente').'">
|
<a class="'.($disabled ? '' : 'disabled').'" data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ddt" data-toggle="modal" data-title="'.tr('Crea ordine cliente').'">
|
||||||
|
|
|
@ -31,10 +31,14 @@ if (get('documento') == 'fattura') {
|
||||||
$final_module = 'Fatture di vendita';
|
$final_module = 'Fatture di vendita';
|
||||||
$op = 'add_documento';
|
$op = 'add_documento';
|
||||||
$tipo_documento_finale = Fattura::class;
|
$tipo_documento_finale = Fattura::class;
|
||||||
} elseif (get('documento') == 'ordine') {
|
} elseif (get('documento') == 'ordine_cliente') {
|
||||||
$final_module = 'Ordini cliente';
|
$final_module = 'Ordini cliente';
|
||||||
$op = 'add_preventivo';
|
$op = 'add_preventivo';
|
||||||
$tipo_documento_finale = Ordine::class;
|
$tipo_documento_finale = Ordine::class;
|
||||||
|
} elseif (get('documento') == 'ordine_fornitore') {
|
||||||
|
$final_module = 'Ordini fornitore';
|
||||||
|
$op = 'add_ordine_fornitore';
|
||||||
|
$tipo_documento_finale = Ordine::class;
|
||||||
} elseif (get('documento') == 'ddt') {
|
} elseif (get('documento') == 'ddt') {
|
||||||
$final_module = 'Ddt di vendita';
|
$final_module = 'Ddt di vendita';
|
||||||
$op = 'add_documento';
|
$op = 'add_documento';
|
||||||
|
@ -50,7 +54,6 @@ $options = [
|
||||||
'type' => 'preventivo',
|
'type' => 'preventivo',
|
||||||
'module' => $final_module,
|
'module' => $final_module,
|
||||||
'button' => tr('Aggiungi'),
|
'button' => tr('Aggiungi'),
|
||||||
'dir' => 'entrata',
|
|
||||||
'create_document' => true,
|
'create_document' => true,
|
||||||
'documento' => $documento,
|
'documento' => $documento,
|
||||||
'tipo_documento_finale' => $tipo_documento_finale,
|
'tipo_documento_finale' => $tipo_documento_finale,
|
||||||
|
|
|
@ -181,12 +181,13 @@ abstract class Component extends Model
|
||||||
/**
|
/**
|
||||||
* Copia l'oggetto (articolo, riga, descrizione) nel corrispettivo per il documento indicato.
|
* Copia l'oggetto (articolo, riga, descrizione) nel corrispettivo per il documento indicato.
|
||||||
*
|
*
|
||||||
* @param Document $document Documento di destinazione
|
* @param Document $document Documento di destinazione
|
||||||
* @param float|null $qta Quantità da riportare
|
* @param float|null $qta Quantità da riportare
|
||||||
|
* @param boolean $evadi_qta_parent Definisce se evadere la quantità di provenienza
|
||||||
*
|
*
|
||||||
* @return self
|
* @return self
|
||||||
*/
|
*/
|
||||||
public function copiaIn(Document $document, $qta = null)
|
public function copiaIn(Document $document, $qta = null, $evadi_qta_parent = true)
|
||||||
{
|
{
|
||||||
// Individuazione classe di destinazione
|
// Individuazione classe di destinazione
|
||||||
$class = get_class($document);
|
$class = get_class($document);
|
||||||
|
@ -216,8 +217,7 @@ abstract class Component extends Model
|
||||||
unset($attributes[$model->getDocumentID()]);
|
unset($attributes[$model->getDocumentID()]);
|
||||||
|
|
||||||
// Riferimento di origine per l'evasione automatica della riga
|
// Riferimento di origine per l'evasione automatica della riga
|
||||||
$is_evasione = true;
|
if ($evadi_qta_parent) {
|
||||||
if ($is_evasione) {
|
|
||||||
// Mantenimento dell'origine della riga precedente
|
// Mantenimento dell'origine della riga precedente
|
||||||
$model->original_id = $attributes['original_id'];
|
$model->original_id = $attributes['original_id'];
|
||||||
$model->original_type = $attributes['original_type'];
|
$model->original_type = $attributes['original_type'];
|
||||||
|
|
Loading…
Reference in New Issue