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 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.
|
||||
- Aggiunta possibilità di creare un ordine fornitore da un preventivo.
|
||||
|
||||
## 2.4.22
|
||||
|
||||
|
|
|
@ -138,9 +138,9 @@ if (!empty($options['create_document'])) {
|
|||
}
|
||||
|
||||
// Selezione fornitore per Ordine fornitore
|
||||
if ($options['op'] == 'add_ordine_cliente') {
|
||||
$tipo_anagrafica = tr('Fornitore');
|
||||
$ajax = 'fornitori';
|
||||
if ($options['op'] == 'add_ordine_cliente' || $options['op'] == 'add_intervento' || $options['op'] == 'add_ordine_fornitore') {
|
||||
$tipo_anagrafica = $options['op'] == 'add_intervento' ? tr('Cliente') : tr('Fornitore');
|
||||
$ajax = $options['op'] == 'add_intervento' ? 'clienti' : 'fornitori';
|
||||
|
||||
echo '
|
||||
<div class="col-md-6">
|
||||
|
|
|
@ -394,6 +394,7 @@ switch (post('op')) {
|
|||
break;
|
||||
|
||||
// Aggiunta di un documento in ordine
|
||||
case 'add_intervento':
|
||||
case 'add_documento':
|
||||
$class = post('class');
|
||||
$id_documento = post('id_documento');
|
||||
|
@ -414,7 +415,9 @@ switch (post('op')) {
|
|||
$stato = Stato::find(post('id_stato_intervento'));
|
||||
$tipo = TipoSessione::find(post('id_tipo_intervento'));
|
||||
|
||||
$intervento = Intervento::build($documento->anagrafica, $tipo, $stato, post('data'));
|
||||
$anagrafica = post('idanagrafica') ? Anagrafica::find(post('idanagrafica')) : $documento->anagrafica;
|
||||
|
||||
$intervento = Intervento::build($anagrafica, $tipo, $stato, post('data'));
|
||||
$intervento->idsede_destinazione = $id_sede;
|
||||
|
||||
$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\Ordine;
|
||||
use Modules\Ordini\Tipo;
|
||||
use Modules\Preventivi\Preventivo;
|
||||
|
||||
$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);
|
||||
|
||||
flash()->info(tr('Ordine _NUM_ aggiunto!', [
|
||||
|
|
|
@ -38,7 +38,7 @@ if (get('documento') == 'fattura') {
|
|||
$tipo_documento_finale = Ordine::class;
|
||||
} elseif (get('documento') == 'intervento') {
|
||||
$final_module = 'Interventi';
|
||||
$op = 'add_documento';
|
||||
$op = $module->name == 'Ordini cliente' ? 'add_documento' : 'add_intervento';
|
||||
$tipo_documento_finale = Intervento::class;
|
||||
} else {
|
||||
$final_module = $module['name'] == 'Ordini cliente' ? 'Ddt di vendita' : 'Ddt di acquisto';
|
||||
|
|
|
@ -59,11 +59,17 @@ echo '
|
|||
</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').'
|
||||
</a>
|
||||
</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>
|
||||
<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').'">
|
||||
<i class="fa fa-truck"></i> '.tr('DDT in uscita').'
|
||||
|
|
|
@ -31,10 +31,14 @@ if (get('documento') == 'fattura') {
|
|||
$final_module = 'Fatture di vendita';
|
||||
$op = 'add_documento';
|
||||
$tipo_documento_finale = Fattura::class;
|
||||
} elseif (get('documento') == 'ordine') {
|
||||
} elseif (get('documento') == 'ordine_cliente') {
|
||||
$final_module = 'Ordini cliente';
|
||||
$op = 'add_preventivo';
|
||||
$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') {
|
||||
$final_module = 'Ddt di vendita';
|
||||
$op = 'add_documento';
|
||||
|
@ -50,7 +54,6 @@ $options = [
|
|||
'type' => 'preventivo',
|
||||
'module' => $final_module,
|
||||
'button' => tr('Aggiungi'),
|
||||
'dir' => 'entrata',
|
||||
'create_document' => true,
|
||||
'documento' => $documento,
|
||||
'tipo_documento_finale' => $tipo_documento_finale,
|
||||
|
|
|
@ -183,10 +183,11 @@ abstract class Component extends Model
|
|||
*
|
||||
* @param Document $document Documento di destinazione
|
||||
* @param float|null $qta Quantità da riportare
|
||||
* @param boolean $evadi_qta_parent Definisce se evadere la quantità di provenienza
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function copiaIn(Document $document, $qta = null)
|
||||
public function copiaIn(Document $document, $qta = null, $evadi_qta_parent = true)
|
||||
{
|
||||
// Individuazione classe di destinazione
|
||||
$class = get_class($document);
|
||||
|
@ -216,8 +217,7 @@ abstract class Component extends Model
|
|||
unset($attributes[$model->getDocumentID()]);
|
||||
|
||||
// Riferimento di origine per l'evasione automatica della riga
|
||||
$is_evasione = true;
|
||||
if ($is_evasione) {
|
||||
if ($evadi_qta_parent) {
|
||||
// Mantenimento dell'origine della riga precedente
|
||||
$model->original_id = $attributes['original_id'];
|
||||
$model->original_type = $attributes['original_type'];
|
||||
|
|
Loading…
Reference in New Issue