openstamanager/modules/articoli/import.php

161 lines
3.9 KiB
PHP

<?php
include_once __DIR__.'/../../core.php';
include_once $docroot.'/modules/articoli/modutil.php';
switch (post('op')) {
case 'example':
$module = filter('module');
$list = array (
array('Codice','Descrizione','Quantità','Unità di misura','Prezzo acquisto','Prezzo vendita','Peso lordo (KG)','Volume (M3)','Categoria','Note'),
array('00004','Articolo','10','Kg','5,25','12,72','10,2','500','Categoria4','Articolo di prova'),
);
directory('../../files/'.$module);
$fp = fopen('../../files/'.$module.'/'.$module.'.csv', 'w');
foreach ($list as $fields) {
fputcsv($fp, $fields, ';');
}
fclose($fp);
exit;
break;
case 'import':
foreach ($data as $key => $value) {
if (!empty($value)) {
$qta = force_decimal($data[$key]['qta']);
unset($data[$key]['qta']);
$data[$key]['prezzo_acquisto'] = force_decimal($data[$key]['prezzo_acquisto']);
$data[$key]['prezzo_vendita'] = force_decimal($data[$key]['prezzo_vendita']);
$data[$key]['peso_lordo'] = force_decimal($data[$key]['peso_lordo']);
$data[$key]['volume'] = force_decimal($data[$key]['volume']);
// Categorie
$rs = $dbo->select('mg_categorie', 'id', [
'nome' => $data[$key]['id_categoria'],
]);
if (empty($rs[0]['id'])) {
$dbo->insert('mg_categorie', [
'nome' => $data[$key]['id_categoria'],
]);
$data[$key]['id_categoria'] = $dbo->lastInsertedID();
}else{
$data[$key]['id_categoria'] = $rs[0]['id'];
}
// Insert o update
$insert = true;
if (!empty($primary_key)) {
$rs = $dbo->select('mg_articoli', $primary_key, [
$primary_key => $data[$key][$primary_key],
]);
$insert = !in_array($data[$key][$primary_key], $rs[0]);
}
// Insert
if ($insert) {
$dbo->insert('mg_articoli', $data[$key]);
add_movimento_magazzino($dbo->lastInsertedID(), $qta, [], 'Movimento da import', date());
}
// Update
else {
$dbo->update('mg_articoli', $data[$key], [$primary_key => $data[$key][$primary_key]]);
$rs = $dbo->select('mg_articoli', 'id', [
$primary_key => $data[$key][$primary_key],
]);
add_movimento_magazzino($rs[0]['id'], $qta, [], 'Movimento da import', date());
}
unset($data[$key]);
}
}
break;
}
return [
[
'field' => 'codice',
'label' => 'Codice',
'primary_key' => true,
],
[
'field' => 'descrizione',
'label' => 'Descrizione',
],
[
'field' => 'qta',
'label' => 'Quantità',
],
[
'field' => 'um',
'label' => 'Unità di misura',
'names' => [
'Unità di misura',
'Unità misura',
'unità misura',
'unità di misura',
],
'query' => 'SELECT valore as result FROM mg_unitamisura WHERE LOWER(valore) = LOWER(|value|)',
],
[
'field' => 'prezzo_acquisto',
'label' => 'Prezzo acquisto',
],
[
'field' => 'prezzo_vendita',
'label' => 'Prezzo vendita',
],
[
'field' => 'peso_lordo',
'label' => 'Peso lordo (KG)',
'names' => [
'Peso lordo (KG)',
'Peso',
],
],
[
'field' => 'volume',
'label' => 'Volume (M3)',
'names' => [
'Volume (M3)',
'volume',
],
],
[
'field' => 'id_categoria',
'label' => 'Categoria',
'names' => [
'Categoria',
'id_categoria',
'idcategoria',
'categoria',
],
],
[
'field' => 'note',
'label' => 'Note',
]
];