Gestione seriali contratti
This commit is contained in:
parent
6b9776e0a9
commit
c762f8fa55
|
@ -276,10 +276,28 @@ if (empty(get('modal'))) {
|
|||
$id = $data[0]['idintervento'];
|
||||
|
||||
$data[0]['tipo_documento'] = tr('Intervento').' '.$data[0]['codice'];
|
||||
}
|
||||
|
||||
$extra = tr('(q.tà _QTA_)', [
|
||||
'_QTA_' => $data[0]['qta'],
|
||||
]);
|
||||
// Inserito su contratto
|
||||
elseif (!empty($vendita['id_riga_contratto'])) {
|
||||
$module_id = Modules::get('Contratti')['id'];
|
||||
|
||||
// Ricerca vendite su contratti
|
||||
$query = 'SELECT *, "Contratto" AS tipo_documento, ( SELECT data_bozza FROM co_contratti WHERE id=idcontratto ) AS data, ( SELECT numero FROM co_contratti WHERE id=idcontratto ) AS numero FROM co_righe_contratti WHERE co_righe_contratti.id='.prepare($vendita['id_riga_contratto']);
|
||||
$data = $dbo->fetchArray($query);
|
||||
|
||||
$id = $data[0]['idcontratto'];
|
||||
}
|
||||
|
||||
// Inserito su vendita banco
|
||||
elseif (!empty($vendita['id_riga_venditabanco'])) {
|
||||
$module_id = Modules::get('Vendita al banco')['id'];
|
||||
|
||||
// Ricerca vendite su contratti
|
||||
$query = 'SELECT *, "Vendita al banco" AS tipo_documento, ( SELECT data FROM vb_venditabanco WHERE id=idvendita ) AS data, ( SELECT numero FROM vb_venditabanco WHERE id=idvendita ) AS numero FROM vb_righe_venditabanco WHERE vb_righe_venditabanco.id='.prepare($vendita['id_riga_venditabanco']);
|
||||
$data = $dbo->fetchArray($query);
|
||||
|
||||
$id = $data[0]['idvendita'];
|
||||
}
|
||||
|
||||
$totali[] = [($data[0]['prezzo_unitario'] - $data[0]['sconto_unitario']), $data[0]['iva_unitaria']];
|
||||
|
@ -287,10 +305,10 @@ if (empty(get('modal'))) {
|
|||
$numero = !empty($data[0]['numero_esterno']) ? $data[0]['numero_esterno'] : $data[0]['numero'];
|
||||
|
||||
$text = tr('_DOC_ num. _NUM_ del _DATE_', [
|
||||
'_DOC_' => $data[0]['tipo_documento'],
|
||||
'_NUM_' => $numero,
|
||||
'_DATE_' => Translator::dateToLocale($data[0]['data']),
|
||||
]).(!empty($extra) ? ' '.$extra : '');
|
||||
'_DOC_' => $data[0]['tipo_documento'],
|
||||
'_NUM_' => $numero,
|
||||
'_DATE_' => Translator::dateToLocale($data[0]['data']),
|
||||
]);
|
||||
|
||||
echo Modules::link($module_id, $id, $text).'<br>';
|
||||
}
|
||||
|
|
|
@ -521,6 +521,13 @@ switch (post('op')) {
|
|||
|
||||
$copia = $riga->copiaIn($contratto, $qta);
|
||||
|
||||
// Aggiornamento seriali dalla riga dell'ordine
|
||||
if ($copia->isArticolo()) {
|
||||
$serials = is_array(post('serial')[$riga->id]) ? post('serial')[$riga->id] : [];
|
||||
|
||||
$copia->serials = $serials;
|
||||
}
|
||||
|
||||
$copia->save();
|
||||
}
|
||||
}
|
||||
|
@ -760,5 +767,13 @@ switch (post('op')) {
|
|||
flash()->warning(tr('Nessun prezzo modificato!'));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'add_serial':
|
||||
$articolo = Articolo::find(post('idriga'));
|
||||
|
||||
$serials = (array) post('serial');
|
||||
$articolo->serials = $serials;
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ $tipo_documento_finale = Fattura::class;
|
|||
$options = [
|
||||
'op' => 'add_documento',
|
||||
'type' => 'contratto',
|
||||
'serials' => true,
|
||||
'module' => 'Fatture di vendita',
|
||||
'button' => tr('Aggiungi'),
|
||||
'create_document' => true,
|
||||
|
|
|
@ -43,7 +43,7 @@ echo '
|
|||
<th class="text-center" width="180">'.tr('Prezzo unitario').'</th>
|
||||
<th class="text-center" width="140">'.tr('Sconto unitario').'</th>
|
||||
<th class="text-center" width="130">'.tr('Importo').'</th>
|
||||
<th width="80"></th>
|
||||
<th width="100"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
|
@ -54,8 +54,22 @@ $num = 0;
|
|||
foreach ($righe as $riga) {
|
||||
++$num;
|
||||
|
||||
// Individuazione dei seriali
|
||||
$extra = '';
|
||||
$mancanti = 0;
|
||||
if ($riga->isArticolo() && !empty($riga->abilita_serial)) {
|
||||
$serials = $riga->serials;
|
||||
$mancanti = abs($riga->qta) - count($serials);
|
||||
|
||||
if ($mancanti > 0) {
|
||||
$extra = 'class="warning"';
|
||||
} else {
|
||||
$mancanti = 0;
|
||||
}
|
||||
}
|
||||
|
||||
echo '
|
||||
<tr data-id="'.$riga->id.'" data-type="'.get_class($riga).'">
|
||||
<tr data-id="'.$riga->id.'" data-type="'.get_class($riga).'" '.$extra.'>
|
||||
<td class="text-center">';
|
||||
if (!$block_edit) {
|
||||
echo '
|
||||
|
@ -85,6 +99,19 @@ foreach ($righe as $riga) {
|
|||
echo '
|
||||
'.$descrizione;
|
||||
|
||||
if ($riga->isArticolo() && !empty($riga->abilita_serial)) {
|
||||
if (!empty($mancanti)) {
|
||||
echo '
|
||||
<br><b><small class="text-danger">'.tr('_NUM_ serial mancanti', [
|
||||
'_NUM_' => $mancanti,
|
||||
]).'</small></b>';
|
||||
}
|
||||
if (!empty($serials)) {
|
||||
echo '
|
||||
<br>'.tr('SN').': '.implode(', ', $serials);
|
||||
}
|
||||
}
|
||||
|
||||
if ($riga->isArticolo() && !empty($riga->articolo->barcode)) {
|
||||
echo '
|
||||
<br><small><i class="fa fa-barcode"></i> '.$riga->articolo->barcode.'</small>';
|
||||
|
@ -173,7 +200,14 @@ foreach ($righe as $riga) {
|
|||
|
||||
if (empty($record['is_completato'])) {
|
||||
echo '
|
||||
<div class="btn-group">
|
||||
<div class="btn-group">';
|
||||
if ($riga->isArticolo() && !empty($riga->abilita_serial)) {
|
||||
echo '
|
||||
<a class="btn btn-primary btn-xs" title="'.tr('Modifica seriali della riga').'" onclick="modificaSeriali(this)">
|
||||
<i class="fa fa-barcode"></i>
|
||||
</a>';
|
||||
}
|
||||
echo '
|
||||
<a class="btn btn-xs btn-warning" title="'.tr('Modifica riga').'" onclick="modificaRiga(this)">
|
||||
<i class="fa fa-edit"></i>
|
||||
</a>
|
||||
|
@ -559,5 +593,13 @@ function aggiornaInline(id) {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
function modificaSeriali(button) {
|
||||
let riga = $(button).closest("tr");
|
||||
let id = riga.data("id");
|
||||
let type = riga.data("type");
|
||||
|
||||
openModal("'.tr('Aggiorna SN').'", globals.rootdir + "/modules/fatture/add_serial.php?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
|
||||
}
|
||||
init();
|
||||
</script>';
|
||||
|
|
|
@ -26,4 +26,5 @@ class Articolo extends Article
|
|||
use RelationTrait;
|
||||
|
||||
protected $table = 'co_righe_contratti';
|
||||
protected $serialRowID = 'contratto';
|
||||
}
|
||||
|
|
|
@ -55,6 +55,14 @@ $data = [
|
|||
'table' => 'in_righe_interventi',
|
||||
'id' => 'idintervento',
|
||||
],
|
||||
'veb' => [
|
||||
'table' => 'vb_righe_venditabanco',
|
||||
'id' => 'idvendita',
|
||||
],
|
||||
'con' => [
|
||||
'table' => 'co_righe_contratti',
|
||||
'id' => 'idcontratto',
|
||||
],
|
||||
];
|
||||
|
||||
// Individuazione delle tabelle interessate
|
||||
|
@ -66,8 +74,12 @@ if (in_array($module['name'], ['Fatture di vendita', 'Fatture di acquisto'])) {
|
|||
$is_rientrabile = $database->fetchOne('SELECT * FROM `dt_causalet` WHERE `id` = '.prepare($ddt->idcausalet))['is_rientrabile'];
|
||||
} elseif (in_array($module['name'], ['Ordini cliente', 'Ordini fornitore'])) {
|
||||
$modulo = 'ord';
|
||||
} else {
|
||||
} elseif ($module['name'] == 'Interventi') {
|
||||
$modulo = 'int';
|
||||
} elseif ($module['name'] == 'Contratti') {
|
||||
$modulo = 'con';
|
||||
} else {
|
||||
$modulo = 'veb';
|
||||
}
|
||||
|
||||
$table = $data[$modulo]['table'];
|
||||
|
@ -149,6 +161,12 @@ if ($dir == 'entrata') {
|
|||
} elseif (!empty($res[0]['id_riga_ordine'])) {
|
||||
$modulo = 'Ordini cliente';
|
||||
$pos = 'ord';
|
||||
} elseif (!empty($res[0]['id_riga_contratto'])) {
|
||||
$modulo = 'Contratti';
|
||||
$pos = 'con';
|
||||
} elseif (!empty($res[0]['id_riga_venditabanco'])) {
|
||||
$modulo = 'Vendita al banco';
|
||||
$pos = 'veb';
|
||||
}
|
||||
|
||||
$r = $dbo->select($data[$pos]['table'], $data[$pos]['id'], [], ['id' => $res[0][str_replace('id', 'id_riga_', $data[$pos]['id'])]]);
|
||||
|
|
|
@ -146,6 +146,16 @@ foreach ($righe as $riga) {
|
|||
<br><small>'.$text.'</small>';
|
||||
|
||||
$autofill->count($text, true);
|
||||
|
||||
// Seriali
|
||||
$seriali = $riga->serials;
|
||||
if (!empty($seriali)) {
|
||||
$text = tr('SN').': '.implode(', ', $seriali);
|
||||
echo '
|
||||
<br><small>'.$text.'</small>';
|
||||
|
||||
$autofill->count($text, true);
|
||||
}
|
||||
}
|
||||
|
||||
echo '
|
||||
|
|
|
@ -25,4 +25,8 @@ WHERE
|
|||
HAVING
|
||||
2=2
|
||||
ORDER BY
|
||||
`matricola`" WHERE `name` = 'Impianti';
|
||||
`matricola`" WHERE `name` = 'Impianti';
|
||||
|
||||
-- Serial in Contratti
|
||||
ALTER TABLE `mg_prodotti` ADD `id_riga_contratto` INT NULL AFTER `id_riga_intervento`;
|
||||
ALTER TABLE `mg_prodotti` ADD FOREIGN KEY (`id_riga_contratto`) REFERENCES `co_righe_contratti`(`id`) ON DELETE CASCADE;
|
Loading…
Reference in New Issue