mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-16 19:40:44 +01:00
Aggiornamento stampa inventario (#537)
This commit is contained in:
parent
37b0c73026
commit
3821d6a944
@ -60,7 +60,7 @@ $(function() {
|
|||||||
format: "MMMM YYYY",
|
format: "MMMM YYYY",
|
||||||
locale: globals.locale,
|
locale: globals.locale,
|
||||||
useCurrent: false,
|
useCurrent: false,
|
||||||
defaultDate: moment("'.$date->format("Y-m-d H:i:s").'")
|
defaultDate: moment("'.$date->format('Y-m-d H:i:s').'")
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#date").on("dp.change", function(e) {
|
$("#date").on("dp.change", function(e) {
|
||||||
|
107
templates/magazzino_inventario/body.php
Normal file
107
templates/magazzino_inventario/body.php
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
|
// Valori di ricerca
|
||||||
|
$search = [
|
||||||
|
'codice' => $_GET['search_codice'],
|
||||||
|
'descrizione' => $_GET['search_descrizione'],
|
||||||
|
'categoria' => $_GET['search_categoria'],
|
||||||
|
'subcategoria' => $_GET['search_subcategoria'],
|
||||||
|
'tipo' => $_GET['search_tipo'],
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($search as $name => $value) {
|
||||||
|
if ($value == 'undefined') {
|
||||||
|
$search[$name] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$search['tipo'] = $search['tipo'] ?: 'solo prodotti attivi';
|
||||||
|
|
||||||
|
// Filtri effettivi
|
||||||
|
$where = [
|
||||||
|
'servizio = 0',
|
||||||
|
];
|
||||||
|
if ($search['tipo'] == 'solo prodotti attivi') {
|
||||||
|
$where[] = 'attivo = 1';
|
||||||
|
} elseif ($search['tipo'] == 'solo prodotti non attivi') {
|
||||||
|
$where[] = 'attivo = 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($search['codice'])) {
|
||||||
|
$where[] = "(REPLACE(codice, '.', '') LIKE ".prepare('%'.$search['codice'].'%').' OR codice LIKE '.prepare('%'.$search['codice'].'%').')';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($search['descrizione'])) {
|
||||||
|
$where[] .= "REPLACE(descrizione, '.', '') LIKE ".prepare('%'.$search['descrizione'].'%');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($search['categoria'])) {
|
||||||
|
$where[] = 'id_categoria IN (SELECT id FROM mg_categorie WHERE descrizione LIKE '.prepare('%'.$search['categoria'].'%').')';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($search['subcategoria'])) {
|
||||||
|
$where[] = 'id_sottocategoria IN (SELECT id FROM mg_categorie WHERE descrizione LIKE '.prepare('%'.$search['subcategoria'].'%').')';
|
||||||
|
}
|
||||||
|
|
||||||
|
$period_end = $_SESSION['period_end'];
|
||||||
|
|
||||||
|
$query = 'SELECT *,
|
||||||
|
(SELECT SUM(qta) FROM mg_movimenti WHERE mg_movimenti.idarticolo=mg_articoli.id AND (mg_movimenti.idintervento IS NULL) AND data <= '.prepare($period_end).') AS qta
|
||||||
|
FROM mg_articoli WHERE 1=1
|
||||||
|
ORDER BY codice ASC';
|
||||||
|
|
||||||
|
$query = str_replace('1=1', '1=1'.(!empty($where) ? ' AND '.implode(' AND ', $where) : ''), $query);
|
||||||
|
$rs = $dbo->fetchArray($query);
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<h3>'.tr('Inventario al _DATE_', [
|
||||||
|
'_DATE_' => Translator::dateToLocale($period_end),
|
||||||
|
], ['upper' => true]).'</h3>
|
||||||
|
|
||||||
|
<table class="table table-bordered">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="text-center" width="150">'.tr('Codice', [], ['upper' => true]).'</th>
|
||||||
|
<th class="text-center">'.tr('Descrizione', [], ['upper' => true]).'</th>
|
||||||
|
<th class="text-center" width="70">'.tr('Prezzo di vendita', [], ['upper' => true]).'</th>
|
||||||
|
<th class="text-center" width="70">'.tr('Q.tà', [], ['upper' => true]).'</th>
|
||||||
|
<th class="text-center" width="70">'.tr('Prezzo di acquisto', [], ['upper' => true]).'</th>
|
||||||
|
<th class="text-center" width="90">'.tr('Valore totale', [], ['upper' => true]).'</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
|
||||||
|
<tbody>';
|
||||||
|
|
||||||
|
$totali = [];
|
||||||
|
foreach ($rs as $r) {
|
||||||
|
$valore_magazzino = $r['prezzo_acquisto'] * $r['qta'];
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<tr>
|
||||||
|
<td>'.$r['codice'].'</td>
|
||||||
|
<td>'.$r['descrizione'].'</td>
|
||||||
|
<td class="text-right">'.moneyFormat($r['prezzo_vendita']).'</td>
|
||||||
|
<td class="text-right">'.Translator::numberToLocale($r['qta']).' '.$r['um'].'</td>
|
||||||
|
<td class="text-right">'.moneyFormat($r['prezzo_acquisto']).'</td>
|
||||||
|
<td class="text-right">'.moneyFormat($valore_magazzino).'</td>
|
||||||
|
</tr>';
|
||||||
|
|
||||||
|
$totali[] = $valore_magazzino;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Totali
|
||||||
|
$totale_acquisto = sum($totali);
|
||||||
|
$totale_qta = sum(array_column($rs, 'qta'));
|
||||||
|
echo '
|
||||||
|
</tbody>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" class="text-right border-top"><b>'.tr('Totale', [], ['upper' => true]).':</b></td>
|
||||||
|
<td class="border-top"></td>
|
||||||
|
<td class="text-right border-top"><b>'.Translator::numberToLocale($totale_qta).'</b></td>
|
||||||
|
<td class="border-top"></td>
|
||||||
|
<td class="text-right border-top"><b>'.moneyFormat($totale_acquisto).'</b></td>
|
||||||
|
</tr>
|
||||||
|
</table>';
|
@ -1,59 +0,0 @@
|
|||||||
<style>
|
|
||||||
<!--
|
|
||||||
.table_values td{
|
|
||||||
border: 1px solid #888;
|
|
||||||
padding: 4px;
|
|
||||||
white-space: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table_values th{
|
|
||||||
background: #abbfcb;
|
|
||||||
padding: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.first_cell{
|
|
||||||
border-left: 1px solid #aaa;
|
|
||||||
border-right: 1px solid #aaa;
|
|
||||||
border-bottom: 1px solid #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table_cell{
|
|
||||||
border-bottom: 1px solid #aaa;
|
|
||||||
border-right: 1px solid #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.full_cell1{
|
|
||||||
border: 1px solid #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.full_cell{
|
|
||||||
border-top: 1px solid #aaa;
|
|
||||||
border-right: 1px solid #aaa;
|
|
||||||
border-bottom: 1px solid #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-center{
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-right{
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.b-right{
|
|
||||||
border-right: 1px solid #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.b-bottom{
|
|
||||||
border-bottom: 1px solid #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cell-padded{
|
|
||||||
padding: 4px;
|
|
||||||
}
|
|
||||||
-->
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<page backcolor="#ffffff" backtop="35mm" backbottom="10mm" backleft="0mm" backright="0mm" footer="" style="font-size: $font_size$">
|
|
||||||
$body$
|
|
||||||
</page>
|
|
@ -1,9 +0,0 @@
|
|||||||
<page_header>
|
|
||||||
<table $body_table_params$>
|
|
||||||
<!-- Intestazione fornitore -->
|
|
||||||
<tr><td style="width:105mm; font-size:8pt; color:#555;">
|
|
||||||
<img src="$logo$" alt="Logo" border="0" />
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
<br/>
|
|
||||||
</page_header>
|
|
@ -1,95 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
include_once __DIR__.'/../../core.php';
|
|
||||||
|
|
||||||
// carica report html
|
|
||||||
$report = file_get_contents(__DIR__.'/magazzino_inventario.html');
|
|
||||||
$body = file_get_contents(__DIR__.'/magazzino_inventario_body.html');
|
|
||||||
|
|
||||||
$search_codice = $_GET['search_codice'];
|
|
||||||
$search_descrizione = $_GET['search_descrizione'];
|
|
||||||
|
|
||||||
if ($_GET['search_subcategoria'] == 'undefined') {
|
|
||||||
$_GET['search_subcategoria'] = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($_GET['search_categoria']) or !empty($_GET['search_subcategoria'])) {
|
|
||||||
$search_categoria = $_GET['search_categoria'].' '.$_GET['search_subcategoria'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$search_tipo = $_GET['search_tipo'];
|
|
||||||
|
|
||||||
if ($search_tipo == '') {
|
|
||||||
$search_tipo = 'solo prodotti attivi';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($search_tipo == 'solo prodotti attivi') {
|
|
||||||
$add_where = ' AND attivo=1';
|
|
||||||
} elseif ($search_tipo == 'solo prodotti non attivi') {
|
|
||||||
$add_where = ' AND attivo=0';
|
|
||||||
} else {
|
|
||||||
$add_where = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($search_codice != '') {
|
|
||||||
$add_where .= " AND ( replace(codice,'.','') LIKE \"%$search_codice%\" OR codice LIKE \"%$search_codice%\" )";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($search_descrizione != '') {
|
|
||||||
$add_where .= " AND replace(descrizione,'.','') LIKE \"%$search_descrizione%\"";
|
|
||||||
}
|
|
||||||
|
|
||||||
$add_having = '';
|
|
||||||
if (!empty($search_categoria)) {
|
|
||||||
$add_having .= " AND CONCAT_WS( ' ', categoria, subcategoria ) LIKE '%".$search_categoria."%' ";
|
|
||||||
}
|
|
||||||
|
|
||||||
include_once $docroot.'/templates/pdfgen_variables.php';
|
|
||||||
|
|
||||||
// Ciclo tra gli articoli selezionati
|
|
||||||
// LEFT OUTER JOIN mg_unitamisura ON mg_unitamisura.id=mg_articoli.idum
|
|
||||||
// mg_unitamisura.valore AS um
|
|
||||||
// LEFT OUTER JOIN mg_categorie ON (mg_categorie.id=mg_articoli.id_categoria AND mg_categorie.parent = 0) OR (mg_categorie.id=mg_articoli.id_sottocategoria AND mg_categorie.parent = 1)
|
|
||||||
$period_end = $_SESSION['period_end'];
|
|
||||||
|
|
||||||
$query = 'SELECT *, mg_articoli.id AS id_articolo, (SELECT nome FROM mg_categorie WHERE mg_categorie.parent = 0 AND mg_categorie.id = mg_articoli.id_categoria) AS categoria, (SELECT nome FROM mg_categorie WHERE mg_categorie.parent = 1 AND mg_categorie.id = mg_articoli.id_sottocategoria) AS subcategoria, (SELECT SUM(qta) FROM mg_movimenti WHERE mg_movimenti.idarticolo=mg_articoli.id AND (mg_movimenti.idintervento IS NULL) AND data <= '.prepare($period_end).' ) AS qta FROM mg_articoli WHERE 1=1 '.$add_where.' HAVING 2=2 AND servizio = 0 AND attivo = 1'.$add_having.' ORDER BY codice ASC';
|
|
||||||
$rs = $dbo->fetchArray($query);
|
|
||||||
$totrows = sizeof($rs);
|
|
||||||
|
|
||||||
$body .= '<h3>INVENTARIO AL '.Translator::dateToLocale($period_end)."</h3>\n";
|
|
||||||
|
|
||||||
$body .= "<table cellspacing='0' style='table-layout:fixed;'>\n";
|
|
||||||
$body .= "<col width='100'><col width='230'><col width='70'><col width='70'><col width='70'><col width='90'>\n";
|
|
||||||
|
|
||||||
$body .= "<tr>\n";
|
|
||||||
$body .= "<th bgcolor='#dddddd' class='full_cell1 cell-padded'>Codice</th>\n";
|
|
||||||
$body .= "<th bgcolor='#dddddd' class='full_cell cell-padded'>Descrizione</th>\n";
|
|
||||||
$body .= "<th bgcolor='#dddddd' class='full_cell cell-padded'>Prezzo di vendita</th>\n";
|
|
||||||
$body .= "<th bgcolor='#dddddd' class='full_cell cell-padded'>Q.tà</th>\n";
|
|
||||||
$body .= "<th bgcolor='#dddddd' class='full_cell cell-padded'>Prezzo di acquisto</th>\n";
|
|
||||||
$body .= "<th bgcolor='#dddddd' class='full_cell cell-padded'>Valore totale</th>\n";
|
|
||||||
$body .= "</tr>\n";
|
|
||||||
|
|
||||||
for ($r = 0; $r < sizeof($rs); ++$r) {
|
|
||||||
$body .= "<tr>\n";
|
|
||||||
$body .= " <td class='first_cell cell-padded'>".$rs[$r]['codice']."</td>\n";
|
|
||||||
$body .= " <td class='table_cell cell-padded'>".$rs[$r]['descrizione']."</td>\n";
|
|
||||||
$body .= " <td class='table_cell text-right cell-padded'>".moneyFormat($rs[$r]['prezzo_vendita'])."</td>\n";
|
|
||||||
$body .= " <td class='table_cell text-right cell-padded'>".Translator::numberToLocale($rs[$r]['qta']).' '.$rs[$r]['um']."</td>\n";
|
|
||||||
$body .= " <td class='table_cell text-right cell-padded'>".moneyFormat($rs[$r]['prezzo_acquisto'])."</td>\n";
|
|
||||||
$body .= " <td class='table_cell text-right cell-padded'>".moneyFormat(($rs[$r]['prezzo_acquisto'] * $rs[$r]['qta']))."</td>\n";
|
|
||||||
$body .= "</tr>\n";
|
|
||||||
|
|
||||||
$totale_qta += $rs[$r]['qta'];
|
|
||||||
$totale_acquisto += ($rs[$r]['prezzo_acquisto'] * $rs[$r]['qta']);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Totali
|
|
||||||
$body .= "<tr>\n";
|
|
||||||
$body .= "<td colspan='2' bgcolor='#dddddd' class='first_cell text-right cell-padded'><b>TOTALE:</b></td>\n";
|
|
||||||
$body .= "<td bgcolor='#dddddd' class='first_cell text-right cell-padded'></td>\n";
|
|
||||||
$body .= "<td bgcolor='#dddddd' class='table_cell text-right cell-padded'><b>".Translator::numberToLocale($totale_qta)."</b></td>\n";
|
|
||||||
$body .= "<td bgcolor='#dddddd' class='first_cell text-right cell-padded'></td>\n";
|
|
||||||
$body .= "<td bgcolor='#dddddd' class='table_cell text-right cell-padded'><b>".moneyFormat($totale_acquisto)."</b></td>\n";
|
|
||||||
$body .= "</tr>\n";
|
|
||||||
$body .= "</table>\n";
|
|
6
templates/magazzino_inventario/settings.php
Normal file
6
templates/magazzino_inventario/settings.php
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
//'orientation' => 'L',
|
||||||
|
'font-size' => '11pt',
|
||||||
|
];
|
@ -905,4 +905,7 @@ UPDATE `zz_views` SET `query` = 'codice' WHERE `zz_views`.`name` = 'Codice' AND
|
|||||||
UPDATE `zz_modules` SET `icon` = 'fa fa-angle-right' WHERE `zz_modules`.`name` = 'Categorie documenti';
|
UPDATE `zz_modules` SET `icon` = 'fa fa-angle-right' WHERE `zz_modules`.`name` = 'Categorie documenti';
|
||||||
|
|
||||||
UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT(SUM(prezzo_acquisto*qta),2), ",", "#"), ".", ","), "#", "."), "€") AS dato FROM mg_articoli WHERE qta>0 AND deleted_at IS NULL' WHERE `zz_widgets`.`name` = 'Valore magazzino';
|
UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT(SUM(prezzo_acquisto*qta),2), ",", "#"), ".", ","), "#", "."), "€") AS dato FROM mg_articoli WHERE qta>0 AND deleted_at IS NULL' WHERE `zz_widgets`.`name` = 'Valore magazzino';
|
||||||
UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT(SUM(qta),2), ",", "#"), ".", ","), "#", "."), "unità") AS dato FROM mg_articoli WHERE qta>0 AND deleted_at IS NULL' WHERE `zz_widgets`.`name` = 'Articoli in magazzino';
|
UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT(SUM(qta),2), ",", "#"), ".", ","), "#", "."), "unità") AS dato FROM mg_articoli WHERE qta>0 AND deleted_at IS NULL' WHERE `zz_widgets`.`name` = 'Articoli in magazzino';
|
||||||
|
|
||||||
|
-- Fix accesso alla stampa dell'inverntario magazzino
|
||||||
|
UPDATE `zz_prints` SET `is_record` = '0' WHERE `zz_prints`.`name` = 'Inventario magazzino';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user