Compare commits

...

22 Commits

Author SHA1 Message Date
afc628f6c6 Finish Gramm_MES_FixControlloRAMJS 2022-07-19 17:40:58 +02:00
084efc777a [Monitoraggio Linee]
- Adesso il controllo se sa semolaRAM è 0 nello stopform viene fatto solamente se c'è la gestsetup abilitata
2022-07-19 17:40:50 +02:00
02b23f7bc5 Finish Hotfix-6 2022-07-19 16:11:45 +02:00
a8a399e41f corrette fetche e utilizzo caratteristica semola ram 2022-07-19 16:11:31 +02:00
5435b37d28 Finish Smetar_Planner_FixClickEvento 2022-07-19 16:08:20 +02:00
f33beff95e Finish Smetar_ContattiCommesse_FixClickEvent
o
2022-07-19 16:08:13 +02:00
0490f3de4e Finish Smetar_ContattiCommesse_FixPlannerMensESett 2022-07-19 15:29:38 +02:00
a300231d0a [Planner Settimanale & Mensile]
- Fix per mostrare le attività
2022-07-19 15:29:13 +02:00
88172460e6 Finish BudgetVenditeDeleteRighe 2022-07-18 10:05:14 +02:00
6f4a3808a5 Corretta cancellazione testate budget vendite 2022-07-18 10:04:55 +02:00
a7e225d4c9 Finish Gramm_ControlloGiacenze_AggiuntaDataScad 2022-07-18 09:39:34 +02:00
0d3b85ff8a [Controllo Giacenze]
- Aggiunta colonna 'Data Scadenza'
2022-07-18 09:39:22 +02:00
d72b381e27 aggiunto controllo su chiave inesistente runTimeSec in Mrp 2022-07-15 10:50:38 +02:00
3642d26d46 Merge tag 'Biolevante_MRP_FixMRP' into develop
Finish Biolevante_MRP_FixMRP
2022-07-14 12:36:48 +02:00
c3f74f93dc Fix varietà mancante budget vendite 2022-07-14 12:31:42 +02:00
6dd2fc2296 Merge tag 'Biolevante_DeliveryPlan_FixRiepilogoClienteAlDuplicaOrdine' into develop
Finish Biolevante_DeliveryPlan_FixRiepilogoClienteAlDuplicaOrdine
2022-07-13 16:44:26 +02:00
78dbf0ab80 insirito id attività su timbrature caricate da portale 2022-07-13 15:10:48 +02:00
17b9f13abc Merge tag 'Biolevante_MRP_FixMRP-CRP' into develop
Finish Biolevante_MRP_FixMRP-CRP
2022-07-12 10:36:54 +02:00
333e040334 Merge tag 'Biolevante_MRP_AggiornamentoCRP' into develop
Finish Biolevante_MRP_AggiornamentoCRP
2022-07-11 18:07:14 +02:00
fdd0a713c2 Merge branch 'master' into develop 2022-07-11 16:38:39 +02:00
a2976f92a0 Merge branch 'master' into develop 2022-07-11 12:47:41 +02:00
b68c64b4cb Permettere l'accettazione anche dei doc. con i riferimenti degli ordini sulle righe 2022-07-11 10:49:59 +02:00
16 changed files with 112 additions and 99 deletions

View File

@@ -30,6 +30,7 @@ class MainHandler extends MainHandlerAzienda {
return array(
"semolaSecca" => self::getSemolaOrdine($order),
"scartoFresco" => self::getScartoFresco($order),
"semolaRAM" => self::getSemolaRAM($order["codProd"], $order["partitaMag"]),
"qtaAcqua" => self::getQtaAcqua($order),
"pastaProd" => self::getPastaProd($order),
"pastaConf" => self::getPastaConf($order)
@@ -112,6 +113,14 @@ GROUP BY ma.cod_mart, ma.unt_mis");
return $query->toRet(false)->firstRow()->execute();
}
private static function getSemolaRAM($codMart, $partitaMag) {
$query = new \Query("SELECT val_carat FROM mtb_partita_mag_carat WHERE cod_mart = '[cod_mart]' AND partita_mag = '[partita_mag]' AND carat LIKE 'Quantit% semola (KG)'");
$query->setVar("partita_mag", $partitaMag)
->setVar("cod_mart", $codMart);
$ret = $query->firstRowFirstValue()->toRet()->date2ts()->execute();
return (float)if_null($ret->get_data(), 0);
}
private static function getPastaConf($order) {
$query = new \Query("SELECT ma.cod_mart , SUM(mr.qta_col) AS qta_col, ma.unt_mis
FROM mtb_colt mt
@@ -153,16 +162,8 @@ GROUP BY ma.cod_mart, ma.unt_mis");
$cod_mart = $order["cod_prod"];
$partita_mag = $order["partita_mag"];
$carat = "Quantità semola (KG)";
$query->select("val_carat")
->from("mtb_partita_mag_carat")
->where("cod_mart", $cod_mart)
->where("partita_mag", $partita_mag)
->where("carat", $carat);
$ret = $query->firstRowFirstValue()->toRet()->execute();
$semolaRAM = (int)if_null($ret->get_data(), 0);
$semolaRAM = self::getSemolaRAM($cod_mart, $partita_mag);
if ($semolaRAM) {
$percentdiff = 1.5;

View File

@@ -2,6 +2,10 @@
use Utility\Date;
/**
* @var array $datiOrdine
*/
$retData = array();
$key = array(
"gestione" => $order["gestione"],
@@ -11,7 +15,8 @@ $key = array(
$Ret = MonitoraggioLineeV2::get_ordineLav($key);
$semolaSecca = 0;
$semolaRam = null;
$semolaRam = array_get($datiOrdine, "semolaRAM", 0);
if (array_key_exists("semolaSecca", $datiOrdine) && !empty($datiOrdine["semolaSecca"])) {
$semolaSecca = from($datiOrdine["semolaSecca"])->sum(function ($elem) {
@@ -23,12 +28,12 @@ $key2 = array(
"cod_mart" => $order["codProd"],
"partita_mag" => $order["partitaMag"],
);
/*
$ret = MonitoraggioLineeV2::getSemolaRam($key2);
if ($ret->is_OK()) {
$semolaRam = $ret->get_data();
}
}*/
$semolaUntMis = array_key_exists("semolaSecca", $datiOrdine) && !empty($datiOrdine["semolaSecca"]) ? $datiOrdine["semolaSecca"][0]["unt_mis"] : "KG";
$scartoFresco = array_key_exists("scartoFresco", $datiOrdine) && !empty($datiOrdine["scartoFresco"]) ? floatval(str_replace(',', '.', $datiOrdine["scartoFresco"]["val_carat"])) : 0;
@@ -263,6 +268,13 @@ if ($Ret->is_OK()) {
const confirmButton = $("#confirmButton");
const semolaRam = _.toNumber("<?= $semolaRam ?>");
<?php
$gestSetupDepo = new GestSetupDepo;
$checkSemola = $gestSetupDepo->keySection("FLAG_CHECK_SEMOLA_RAM")->cod_mdep($order["codMdep"])->defaultValue('N')->asBoolean()->get();
if ($checkSemola) {
?>
if (semolaRam === "" || semolaRam <= 0) {
$semolaRam.parents(".input-group").addClass("has-error");
confirmButton.prop("disabled", true);
@@ -270,6 +282,8 @@ if ($Ret->is_OK()) {
$semolaRam.parents(".input-group").removeClass("has-error");
confirmButton.prop("disabled", false);
}
<?php } ?>
});
$("[name=scartoFresco]").on("input change", function (e) {

File diff suppressed because one or more lines are too long

View File

@@ -126,7 +126,7 @@ function zeroIfNull($v) {
}
function nullIfBlank($v) {
return strlen(trim($v)) == 0 ? null : $v;
return is_null($v) || strlen(trim($v)) == 0 ? null : $v;
}
function blankIfNull($v) {

View File

@@ -19,29 +19,31 @@ FROM dtb_ordt
INNER JOIN dtb_ordr ON dtb_ordt.gestione = dtb_ordr.gestione AND
dtb_ordt.data_ord = dtb_ordr.data_ord AND
dtb_ordt.num_ord = dtb_ordr.num_ord
LEFT OUTER JOIN (SELECT * FROM avw_ordini_accettazione WHERE cod_mdep = '[cod_mdep]') avw_ordini_accettazione
ON
dtb_ordr.gestione = avw_ordini_accettazione.gestione AND
dtb_ordr.data_ord = avw_ordini_accettazione.data_ord AND
dtb_ordr.num_ord = avw_ordini_accettazione.num_ord AND
dtb_ordr.riga_ord = avw_ordini_accettazione.riga_ord
WHERE dtb_ordt.cod_mdep = '[cod_mdep]'
WHERE dtb_ordt.cod_mdep = '[cod_mdep]'
AND dtb_ordt.gestione = 'A'
AND dtb_ordt.flag_annulla = 'N'
AND dtb_ordt.data_ord >= '[data_da]'
AND dtb_ordr.qta_ord <> dtb_ordr.qta_evasa
AND dtb_ordr.flag_evaso = 'I'
AND dtb_ordt.flag_evaso_forzato = 'N'
AND avw_ordini_accettazione.data_ord IS NULL
AND NOT EXISTS(SELECT *
FROM avw_ordini_accettazione
WHERE avw_ordini_accettazione.cod_mdep = '[cod_mdep]'
AND dtb_ordr.gestione = avw_ordini_accettazione.gestione
AND dtb_ordr.data_ord = avw_ordini_accettazione.data_ord
AND dtb_ordr.num_ord = avw_ordini_accettazione.num_ord
AND dtb_ordr.riga_ord = avw_ordini_accettazione.riga_ord)
GROUP BY dtb_ordt.data_ord,
dtb_ordt.num_ord,
dtb_ordt.gestione,
dtb_ordt.cod_anag,
dtb_ordt.cod_vdes,
gtb_anag.rag_soc,
dtb_ordt.listino,
atb_list.descrizione,
CASE WHEN tmp.listino IS NULL THEN 'N'
ELSE
'S' END
dtb_ordt.num_ord,
dtb_ordt.gestione,
dtb_ordt.cod_anag,
dtb_ordt.cod_vdes,
gtb_anag.rag_soc,
dtb_ordt.listino,
atb_list.descrizione,
CASE
WHEN tmp.listino IS NULL THEN 'N'
ELSE
'S' END
ORDER BY dtb_ordt.data_ord DESC, dtb_ordt.num_ord DESC

View File

@@ -198,7 +198,15 @@ class BudgetVendite {
if ($ret->is_OK()) {
$entityList = new EntityList();
foreach ($orders as $order) {
$groupedOrders = from($orders)
->groupBy(function ($order) {
return sprintf("%s-%s-%s", $order["gestione"], $order["data_ord"], $order["num_ord"]);
})
->toArray();
foreach ($groupedOrders as $orders) {
$order = reset($orders);
$query = new Query();
$query

View File

@@ -118,7 +118,7 @@ const _budgetVendite = {
class: "k-text-center"
},
template(row) {
return row.varieta.map(prodotto => prodotto.descrizione).join(", ");
return row.varieta?.map(prodotto => prodotto.descrizione).join(", ");
},
filterable: {
cell: {

View File

@@ -1243,7 +1243,7 @@ class ContattiCommesse {
$arr_userName = self::parseUserNameFilter($filter);
$Query->where("user_name", $arr_userName);
if (array_key_exists("activityId", $filter)) {
if (array_get($filter, "activityId")) {
$Query->where("activity_id", $filter["activityId"]);
}
@@ -1251,11 +1251,11 @@ class ContattiCommesse {
$Query->where("cod_anag", $filter["codAnag"])->where("tipo_anag", $filter["tipoAnag"]);
}
if (array_key_exists("codJcom", $filter)) {
if (array_get($filter, "codJcom")) {
$Query->where("cod_jcom", $filter["codJcom"]);
}
if (array_key_exists("tipo_attivita", $filter)) {
if (array_get($filter, "tipo_attivita")) {
if (is_array($filter["tipo_attivita"])) {
$whereCond = "(";
@@ -1269,7 +1269,7 @@ class ContattiCommesse {
}
}
if (array_key_exists("assegnatoA", $filter)) {
if (array_get($filter, "assegnatoA")) {
if (is_array($filter["assegnatoA"])) {
$whereCond = "(";

View File

@@ -1,5 +1,5 @@
$().ready(function () {
$(document).on("click vmousedown vmouseup", "[data-row_attivita]", function (e) {
$(document).on("click mousedown mouseup", "[data-row_attivita]", function (e) {
e.stopPropagation();
if (e.type !== "click") {
let $alert = $(this).closest("[data-row_attivita]");
@@ -127,7 +127,7 @@ _contattiCommesse.plannerUtils = {
tick: function (eventType, $alert) {
let self = this;
switch (eventType) { // Gestita concorrenza eventi click e taphold
case "vmousedown":
case "mousedown":
if (self.lastMouseEvent !== eventType) { // Controllo per evento lanciato due volte
self.activityTapHoldTimer = setTimeout(function () {
self.isTapHold = true;
@@ -138,7 +138,7 @@ _contattiCommesse.plannerUtils = {
}
break;
case "vmouseup":
case "mouseup":
clearTimeout(self.activityTapHoldTimer);
if (!self.isTapHold) {
new PopupFormAttivita()

View File

@@ -20,20 +20,18 @@ $().ready(function () {
var _contattiCommesse = {
module: null,
filter: null,
$planner: null,
init: function () {
var self = this;
self.module = new Module();
self.module.onLoad(function () {
_panelFilter.init();
_contattiCommesse.plannerUtils.initFiltroAssegnatoA();
self.$planner = $("#weeklyPlanner");
var wpOptions = {
$selector: $("#plannerWeekSelector"),
queryStringParameter: "d",

View File

@@ -73,6 +73,7 @@ class ControlloGiacenze {
'data_ret' => $articolo['data_ret'],
'num_ord' => ($articolo['num_ord']) ?: "",
'data_ord' => $articolo['data_ord'],
'data_scad' => $articolo['data_scad'],
);
}
@@ -202,6 +203,16 @@ class ControlloGiacenze {
"footerAttributes" => array("style" => 'text-align: center;'),
"filterable" => array("cell" => array("minLength" => 100)),
),
array(
"field" => "data_scad",
"title" => "Data Scadenza",
"type" => "date",
"width" => "190px",
"format" => "{0:d}",
"headerAttributes" => array("style" => 'text-align: center;'),
"attributes" => array("style" => 'text-align: center;'),
"footerAttributes" => array("style" => 'text-align: center;'),
),
array(
"field" => "descrizione_estesa",
"title" => "Descrizione Articolo",

View File

@@ -1,35 +1,31 @@
WITH TempResult AS (
SELECT *
FROM (
SELECT mt.preparato_da, mt.num_ord, mt.data_ord, inv.*, data_ret
FROM mvw_sitart_udc_det_inventario inv
INNER JOIN mtb_colt mt
ON mt.data_collo = inv.data_collo
AND mt.gestione = inv.gestione
AND mt.ser_collo = inv.ser_collo
AND mt.num_collo = inv.num_collo
LEFT OUTER JOIN (SELECT mtb_cols.data_collo,
ser_collo,
num_collo,
gestione,
MAX(data_move) AS data_ret
FROM mtb_cols
GROUP BY mtb_cols.data_collo, ser_collo, num_collo, gestione) AS ms
ON mt.gestione = ms.gestione
AND mt.data_collo = ms.data_collo
AND mt.ser_collo = ms.ser_collo
AND mt.num_collo = ms.num_collo
) t
WHERE [filter]
),
TempCount AS (
SELECT COUNT(*) AS count,
SUM(qta_col) AS SUM_qta_col,
SUM(num_cnf) AS SUM_num_cnf,
SUM(peso_netto_kg) AS SUM_peso_netto_kg,
SUM(peso_lordo_kg) AS SUM_peso_lordo_kg
FROM TempResult
)
WITH TempResult AS (SELECT *
FROM (SELECT mt.preparato_da, mt.num_ord, mt.data_ord, inv.*, data_ret, mpm.data_scad
FROM mvw_sitart_udc_det_inventario inv
INNER JOIN mtb_colt mt
ON mt.data_collo = inv.data_collo
AND mt.gestione = inv.gestione
AND mt.ser_collo = inv.ser_collo
AND mt.num_collo = inv.num_collo
LEFT OUTER JOIN (SELECT mtb_cols.data_collo,
ser_collo,
num_collo,
gestione,
MAX(data_move) AS data_ret
FROM mtb_cols
GROUP BY mtb_cols.data_collo, ser_collo, num_collo, gestione) AS ms
ON mt.gestione = ms.gestione
AND mt.data_collo = ms.data_collo
AND mt.ser_collo = ms.ser_collo
AND mt.num_collo = ms.num_collo
LEFT OUTER JOIN mtb_partita_mag mpm
ON inv.partita_mag = mpm.partita_mag AND inv.cod_mart = mpm.cod_mart) t
WHERE [filter]),
TempCount AS (SELECT COUNT(*) AS count,
SUM(qta_col) AS SUM_qta_col,
SUM(num_cnf) AS SUM_num_cnf,
SUM(peso_netto_kg) AS SUM_peso_netto_kg,
SUM(peso_lordo_kg) AS SUM_peso_lordo_kg
FROM TempResult)
SELECT TempResult.*,
TempCount.*
FROM TempResult,

View File

@@ -778,21 +778,6 @@ class MonitoraggioLineeV2 {
return $Ret;
}
public static function getSemolaRam($key) {
$Query = new Query;
$Query->importSqlFile("getSemolaRam")
->setVar("cod_mart", $key["cod_mart"])
->setVar("partita_mag", $key["partita_mag"]);
$Ret = $Query->firstRowFirstValue()->toRet()->execute();
if ($Ret->is_KO()) {
$Ret->set_error("Ordine non valido");
}
return $Ret;
}
public static function save_udc($data) {
$order = $data;
$handler = OrderEventHandler::loadCustomHandler($order);

View File

@@ -1,5 +0,0 @@
SELECT val_carat
FROM mtb_partita_mag_carat
WHERE cod_mart = '[cod_mart]'
AND partita_mag = '[partita_mag]'
AND carat = N'Quantità semola (KG)'

View File

@@ -1134,9 +1134,9 @@ class Mrp {
"title" => sprintf("%s", $ordine["codProd"]),
"subtitle" => sprintf("N. Colli: %s", $ordine["numCnf"]),
"description" => sprintf("%s", $ordine["descrizioneProd"]),
"durata" => sprintf("%s h %s m", floor($ordine["runTimeSec"] / 3600), round(($ordine["runTimeSec"] / 60) % 60)),
"durata" => array_key_exists("runTimeSec", $ordine) ? sprintf("%s h %s m", floor($ordine["runTimeSec"] / 3600), round(($ordine["runTimeSec"] / 60) % 60)) : 0,
"start" => $ordine["dataOrdProd"],
"runTimeSec" => $ordine["runTimeSec"],
"runTimeSec" => array_get($ordine, "runTimeSec", 0),
"end" => $ordine["dataOrdProd"],
"stato" => $ordine["stato"],
"avgCtTime" => ($ordine["numPezzi"] - $ordine["pzTrasferiti"]) / (isset($ordine["prodStd"]) && $ordine["prodStd"] != 0 ? $ordine["prodStd"] : 1),

View File

@@ -341,6 +341,7 @@ class Post {
$JtbRlavr->insert()
->setDate("dataLav", $rapp["key"]["data_lav"])
->set("codJflav", $rapp["key"]["cod_jflav"])
->set("activityId", $data["activity_id"])
->setDatetime("daOra", $rapp["da_ora"])
->set("note", "E");
$JtbRlavt->set("jtbRlavr")->append($JtbRlavr);
@@ -350,6 +351,7 @@ class Post {
$JtbRlavr->insert()
->setDate("dataLav", $rapp["key"]["data_lav"])
->set("codJflav", $rapp["key"]["cod_jflav"])
->set("activityId", $data["activity_id"])
->setDatetime("aOra", $rapp["a_ora"])
->set("note", "U");
$JtbRlavt->set("jtbRlavr")->append($JtbRlavr);
@@ -358,6 +360,7 @@ class Post {
$QueryB = new \Query;
$QueryB->delete("jtb_rlavr")
->where("cod_jflav", $rapp["key"]["cod_jflav"])
->where("activity_id", $data["activity_id"])
->whereDate("data_lav", $rapp["key"]["data_lav"])
->where("note", array("E", "U"));