mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-02 00:46:44 +01:00
Gestione seriali contratti
This commit is contained in:
parent
6b9776e0a9
commit
c762f8fa55
@ -276,10 +276,28 @@ if (empty(get('modal'))) {
|
|||||||
$id = $data[0]['idintervento'];
|
$id = $data[0]['idintervento'];
|
||||||
|
|
||||||
$data[0]['tipo_documento'] = tr('Intervento').' '.$data[0]['codice'];
|
$data[0]['tipo_documento'] = tr('Intervento').' '.$data[0]['codice'];
|
||||||
|
}
|
||||||
|
|
||||||
$extra = tr('(q.tà _QTA_)', [
|
// Inserito su contratto
|
||||||
'_QTA_' => $data[0]['qta'],
|
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']];
|
$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'];
|
$numero = !empty($data[0]['numero_esterno']) ? $data[0]['numero_esterno'] : $data[0]['numero'];
|
||||||
|
|
||||||
$text = tr('_DOC_ num. _NUM_ del _DATE_', [
|
$text = tr('_DOC_ num. _NUM_ del _DATE_', [
|
||||||
'_DOC_' => $data[0]['tipo_documento'],
|
'_DOC_' => $data[0]['tipo_documento'],
|
||||||
'_NUM_' => $numero,
|
'_NUM_' => $numero,
|
||||||
'_DATE_' => Translator::dateToLocale($data[0]['data']),
|
'_DATE_' => Translator::dateToLocale($data[0]['data']),
|
||||||
]).(!empty($extra) ? ' '.$extra : '');
|
]);
|
||||||
|
|
||||||
echo Modules::link($module_id, $id, $text).'<br>';
|
echo Modules::link($module_id, $id, $text).'<br>';
|
||||||
}
|
}
|
||||||
|
@ -521,6 +521,13 @@ switch (post('op')) {
|
|||||||
|
|
||||||
$copia = $riga->copiaIn($contratto, $qta);
|
$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();
|
$copia->save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -760,5 +767,13 @@ switch (post('op')) {
|
|||||||
flash()->warning(tr('Nessun prezzo modificato!'));
|
flash()->warning(tr('Nessun prezzo modificato!'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'add_serial':
|
||||||
|
$articolo = Articolo::find(post('idriga'));
|
||||||
|
|
||||||
|
$serials = (array) post('serial');
|
||||||
|
$articolo->serials = $serials;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@ $tipo_documento_finale = Fattura::class;
|
|||||||
$options = [
|
$options = [
|
||||||
'op' => 'add_documento',
|
'op' => 'add_documento',
|
||||||
'type' => 'contratto',
|
'type' => 'contratto',
|
||||||
|
'serials' => true,
|
||||||
'module' => 'Fatture di vendita',
|
'module' => 'Fatture di vendita',
|
||||||
'button' => tr('Aggiungi'),
|
'button' => tr('Aggiungi'),
|
||||||
'create_document' => true,
|
'create_document' => true,
|
||||||
|
@ -43,7 +43,7 @@ echo '
|
|||||||
<th class="text-center" width="180">'.tr('Prezzo unitario').'</th>
|
<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="140">'.tr('Sconto unitario').'</th>
|
||||||
<th class="text-center" width="130">'.tr('Importo').'</th>
|
<th class="text-center" width="130">'.tr('Importo').'</th>
|
||||||
<th width="80"></th>
|
<th width="100"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
@ -54,8 +54,22 @@ $num = 0;
|
|||||||
foreach ($righe as $riga) {
|
foreach ($righe as $riga) {
|
||||||
++$num;
|
++$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 '
|
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">';
|
<td class="text-center">';
|
||||||
if (!$block_edit) {
|
if (!$block_edit) {
|
||||||
echo '
|
echo '
|
||||||
@ -85,6 +99,19 @@ foreach ($righe as $riga) {
|
|||||||
echo '
|
echo '
|
||||||
'.$descrizione;
|
'.$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)) {
|
if ($riga->isArticolo() && !empty($riga->articolo->barcode)) {
|
||||||
echo '
|
echo '
|
||||||
<br><small><i class="fa fa-barcode"></i> '.$riga->articolo->barcode.'</small>';
|
<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'])) {
|
if (empty($record['is_completato'])) {
|
||||||
echo '
|
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)">
|
<a class="btn btn-xs btn-warning" title="'.tr('Modifica riga').'" onclick="modificaRiga(this)">
|
||||||
<i class="fa fa-edit"></i>
|
<i class="fa fa-edit"></i>
|
||||||
</a>
|
</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();
|
init();
|
||||||
</script>';
|
</script>';
|
||||||
|
@ -26,4 +26,5 @@ class Articolo extends Article
|
|||||||
use RelationTrait;
|
use RelationTrait;
|
||||||
|
|
||||||
protected $table = 'co_righe_contratti';
|
protected $table = 'co_righe_contratti';
|
||||||
|
protected $serialRowID = 'contratto';
|
||||||
}
|
}
|
||||||
|
@ -55,6 +55,14 @@ $data = [
|
|||||||
'table' => 'in_righe_interventi',
|
'table' => 'in_righe_interventi',
|
||||||
'id' => 'idintervento',
|
'id' => 'idintervento',
|
||||||
],
|
],
|
||||||
|
'veb' => [
|
||||||
|
'table' => 'vb_righe_venditabanco',
|
||||||
|
'id' => 'idvendita',
|
||||||
|
],
|
||||||
|
'con' => [
|
||||||
|
'table' => 'co_righe_contratti',
|
||||||
|
'id' => 'idcontratto',
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
// Individuazione delle tabelle interessate
|
// 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'];
|
$is_rientrabile = $database->fetchOne('SELECT * FROM `dt_causalet` WHERE `id` = '.prepare($ddt->idcausalet))['is_rientrabile'];
|
||||||
} elseif (in_array($module['name'], ['Ordini cliente', 'Ordini fornitore'])) {
|
} elseif (in_array($module['name'], ['Ordini cliente', 'Ordini fornitore'])) {
|
||||||
$modulo = 'ord';
|
$modulo = 'ord';
|
||||||
} else {
|
} elseif ($module['name'] == 'Interventi') {
|
||||||
$modulo = 'int';
|
$modulo = 'int';
|
||||||
|
} elseif ($module['name'] == 'Contratti') {
|
||||||
|
$modulo = 'con';
|
||||||
|
} else {
|
||||||
|
$modulo = 'veb';
|
||||||
}
|
}
|
||||||
|
|
||||||
$table = $data[$modulo]['table'];
|
$table = $data[$modulo]['table'];
|
||||||
@ -149,6 +161,12 @@ if ($dir == 'entrata') {
|
|||||||
} elseif (!empty($res[0]['id_riga_ordine'])) {
|
} elseif (!empty($res[0]['id_riga_ordine'])) {
|
||||||
$modulo = 'Ordini cliente';
|
$modulo = 'Ordini cliente';
|
||||||
$pos = 'ord';
|
$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'])]]);
|
$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>';
|
<br><small>'.$text.'</small>';
|
||||||
|
|
||||||
$autofill->count($text, true);
|
$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 '
|
echo '
|
||||||
|
@ -25,4 +25,8 @@ WHERE
|
|||||||
HAVING
|
HAVING
|
||||||
2=2
|
2=2
|
||||||
ORDER BY
|
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…
x
Reference in New Issue
Block a user