Compare commits

...

26 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
494a8c92f7 Finish Biolevante_MRP_FixMRP 2022-07-14 12:36:48 +02:00
3642d26d46 Merge tag 'Biolevante_MRP_FixMRP' into develop
Finish Biolevante_MRP_FixMRP
2022-07-14 12:36:48 +02:00
f60f803025 [MRP]
- Modificato query per mostrare tutti gli articoli della distinta e non sono quelli presenti nel deposito
- Controllo datamrp adesso funziona anche se arriva in formato YYYY-MM-DD
2022-07-14 12:36:41 +02:00
c3f74f93dc Fix varietà mancante budget vendite 2022-07-14 12:31:42 +02:00
3ff7895b7a Finish Biolevante_DeliveryPlan_FixRiepilogoClienteAlDuplicaOrdine 2022-07-13 16:44:26 +02:00
6dd2fc2296 Merge tag 'Biolevante_DeliveryPlan_FixRiepilogoClienteAlDuplicaOrdine' into develop
Finish Biolevante_DeliveryPlan_FixRiepilogoClienteAlDuplicaOrdine
2022-07-13 16:44:26 +02:00
c89c613329 [Delivery Plan]
- Fix popup riepilogo cliente alla duplicazione dell'ordine
2022-07-13 16:43:56 +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
19 changed files with 515 additions and 486 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

@@ -184,233 +184,277 @@ PopupOrdine.prototype.open = function (editable) {
._setListino(ret.returnData.listino);
self._modalBox = new ModalBox;
self._modalBox.onBeforeShow(function ($div) {
if (!_.isNil(self._ordine)) {
self.setCodVlis(self._ordine.listino);
}
self._initFormEsportazione();
var $flagSospeso = $div.find("input[name='flag_sospeso']");
$flagSospeso.bootstrapSwitch();
var $dataInizTrasp = $div.find("[name='data_iniz_trasp']");
$("#panelShipping,#panelCommercial").on("shown.bs.collapse", function () {
_deliveryPlan.setSelect2ContainerWidth();
});
$dataInizTrasp
.datepicker({
dateFormat: "dd/mm/yy",
firstDay: _deliveryPlan.getFirstIsoWeekDay()
})
.setValue(getToday())
.on("change", function () {
var _$rows = $div.find("table#list-articoli > tbody > tr");
if (_$rows.length > 0) {
var _dataInizTrasp = $dataInizTrasp.getTimestampValue();
new ModalBox()
.message("Assegnare la consegna al <b>" + (_dataInizTrasp.unixtime_format("DD/MM/YYYY")) + "</b> su tutte le righe?")
.onYesClick(function () {
_$rows.each(function () {
$(this).find(".dataCons").setValue(_dataInizTrasp);
});
})
.yesNo().show();
}
});
$div.find("[data-toggle='tooltip']").tooltip();
$div.find("[name='nolo_ut']").on("keyup", _.bind(self._calcolaNolo, self));
$div.find("[name='posti_pallet']").on("keyup", _.bind(self._calcolaNolo, self));
$div.find("[name='cod_vdes'], [name='cod_vvet'], [name='porto']").selectpicker({
liveSearch: true,
size: 5,
container: "#" + self._modalBox.getId(),
dropdownAlignRight: true,
noneSelectedText: "Non selezionato",
showSubtext: true
});
$div.find("[name='cod_vdes']").on("change", function (e) {
let select = $(e.currentTarget);
let option = select.find("option[value='" + select.val() + "']");
let terms = _.toString($(option).data("terms"));
let codVage = $(option).data("cod_vage");
let ragSocAge = $(option).data("rag_soc_age");
$("#telefono_dest").val($(option).data("tel"));
if (!_.isNil(codVage)) {
let option = new Option(ragSocAge, codVage, true, true);
$div.find("[name=cod_vage]").append(option).trigger("change");
self._modalBox
.onBeforeShow(function ($div) {
if (!_.isNil(self._ordine)) {
self.setCodVlis(self._ordine.listino);
}
self._initFormEsportazione();
if (!_.isNil(self._clieData)) {
let codiceListino = self._clieData.cod_vlis;
let dest = _.find(self._clieData.dest, {cod_vdes: select.val()});
var $flagSospeso = $div.find("input[name='flag_sospeso']");
$flagSospeso.bootstrapSwitch();
if (!_.isNil(dest) && !_.isNil(dest.cod_vlis)) {
codiceListino = dest.cod_vlis;
}
if (!_.eq(codiceListino, self._getCodVlis())) {
self.setCodVlis(codiceListino);
if (self._isNew()) {
self._refreshListino();
} else {
let toast = new Toast;
toast.warning("Il destinatario selezionato ha il listino diverso da quello presente nell' ordine. <br> Il listino verrà quindi aggiornato ma non altererà i prezzi sulle righe attualmente esistenti.", "Listino modificato!");
}
}
}
if (!_.isEmpty(terms)) {
if (self._isNew() || _.isEmpty($("#term_cons").val())) {
$("#term_cons").val(terms);
}
}
});
if (_deliveryPlan.getAbilitazione("gestioneVendite")) {
$div.find("[name='cod_vage']").select2({
dropdownParent: $div,
allowClear: true,
width: "element",
placeholder: "Seleziona agente",
ajax: {
dataType: "json",
allowClear: true,
width: "resolve",
delay: 250,
transport: function (params, success, failure) {
var data = {
q: _.isNil(params.data.q) ? null : params.data.q,
type: "cod_vage"
};
var ajax = new Ajax();
ajax
.get("search_opt")
.data(data)
.onSuccess(success)
.onError(failure)
.execute();
},
processResults: function (data) {
var results = data.returnData;
_.each(results, function (state) {
state.id = state.cod_vage;
state.text = state.rag_soc;
});
return {results: results};
},
}
});
/* AJAX caricamento banca cliente
$div.find("[name='cod_banc']").select2({
dropdownParent: $div,
placeholder: 'Seleziona banca',
allowClear: true,
width: "element",
ajax: {
dataType: 'json',
width: 'resolve',
delay: 250,
transport: function (params, success, failure) {
var data = {
q: _.isNil(params.data.q) ? null : params.data.q,
type: "cod_banc"
};
var ajax = new Ajax();
ajax
.get("search_opt")
.data(data)
.onSuccess(success)
.onError(failure)
.execute()
},
processResults: function (data) {
var results = data.returnData;
_.each(results, function (state) {
state.id = state.cod_banc;
state.text = state.descrizione;
});
return {results: results};
},
}
});
*/
$div.find("[name='cod_banc_azi']").select2({
dropdownParent: $div,
width: "element",
placeholder: "Seleziona banca aziendale",
allowClear: true,
ajax: {
dataType: "json",
width: "resolve",
delay: 250,
transport: function (params, success, failure) {
var data = {
q: _.isNil(params.data.q) ? null : params.data.q,
type: "cod_banc_azi"
};
var ajax = new Ajax();
ajax
.get("search_opt")
.data(data)
.onSuccess(success)
.onError(failure)
.execute();
},
processResults: function (data) {
var results = data.returnData;
_.each(results, function (state) {
state.id = state.cod_banc_azi;
state.text = state.descrizione;
});
return {results: results};
},
}
});
$div.find("[name='cod_paga']").select2({
dropdownParent: $div,
allowClear: true,
placeholder: "Seleziona condizioni pagamento",
ajax: {
dataType: "json",
width: "resolve",
delay: 250,
transport: function (params, success, failure) {
const data = {
q: _.isNil(params.data.q) ? null : params.data.q,
type: "cod_paga"
};
const ajax = new Ajax();
ajax
.get("search_opt")
.data(data)
.onSuccess(success)
.onError(failure)
.execute();
},
processResults: function (data) {
var results = data.returnData;
_.each(results, function (state) {
state.id = state.cod_paga;
state.text = `${state.cod_paga} - ${state.descrizione}`;
});
return {results: results};
},
}
var $dataInizTrasp = $div.find("[name='data_iniz_trasp']");
$("#panelShipping,#panelCommercial").on("shown.bs.collapse", function () {
_deliveryPlan.setSelect2ContainerWidth();
});
var $dataRifORd = $div.find("[name='rif_data_ord']");
$dataRifORd
$dataInizTrasp
.datepicker({
dateFormat: "dd/mm/yy",
firstDay: _deliveryPlan.getFirstIsoWeekDay()
})
.setValue(getToday())
.on("change", function () {
var _$rows = $div.find("table#list-articoli > tbody > tr");
if (_$rows.length > 0) {
var _dataInizTrasp = $dataInizTrasp.getTimestampValue();
new ModalBox()
.message("Assegnare la consegna al <b>" + (_dataInizTrasp.unixtime_format("DD/MM/YYYY")) + "</b> su tutte le righe?")
.onYesClick(function () {
_$rows.each(function () {
$(this).find(".dataCons").setValue(_dataInizTrasp);
});
})
.yesNo().show();
}
});
}
if (!self._isNew()) {
if (self._isDuplicate) {
$div.find("[data-toggle='tooltip']").tooltip();
$div.find("[name='nolo_ut']").on("keyup", _.bind(self._calcolaNolo, self));
$div.find("[name='posti_pallet']").on("keyup", _.bind(self._calcolaNolo, self));
$div.find("[name='cod_vdes'], [name='cod_vvet'], [name='porto']").selectpicker({
liveSearch: true,
size: 5,
container: "#" + self._modalBox.getId(),
dropdownAlignRight: true,
noneSelectedText: "Non selezionato",
showSubtext: true
});
$div.find("[name='cod_vdes']").on("change", function (e) {
let select = $(e.currentTarget);
let option = select.find("option[value='" + select.val() + "']");
let terms = _.toString($(option).data("terms"));
let codVage = $(option).data("cod_vage");
let ragSocAge = $(option).data("rag_soc_age");
$("#telefono_dest").val($(option).data("tel"));
if (!_.isNil(codVage)) {
let option = new Option(ragSocAge, codVage, true, true);
$div.find("[name=cod_vage]").append(option).trigger("change");
}
if (!_.isNil(self._clieData)) {
let codiceListino = self._clieData.cod_vlis;
let dest = _.find(self._clieData.dest, {cod_vdes: select.val()});
if (!_.isNil(dest) && !_.isNil(dest.cod_vlis)) {
codiceListino = dest.cod_vlis;
}
if (!_.eq(codiceListino, self._getCodVlis())) {
self.setCodVlis(codiceListino);
if (self._isNew()) {
self._refreshListino();
} else {
let toast = new Toast;
toast.warning("Il destinatario selezionato ha il listino diverso da quello presente nell' ordine. <br> Il listino verrà quindi aggiornato ma non altererà i prezzi sulle righe attualmente esistenti.", "Listino modificato!");
}
}
}
if (!_.isEmpty(terms)) {
if (self._isNew() || _.isEmpty($("#term_cons").val())) {
$("#term_cons").val(terms);
}
}
});
if (_deliveryPlan.getAbilitazione("gestioneVendite")) {
$div.find("[name='cod_vage']").select2({
dropdownParent: $div,
allowClear: true,
width: "element",
placeholder: "Seleziona agente",
ajax: {
dataType: "json",
allowClear: true,
width: "resolve",
delay: 250,
transport: function (params, success, failure) {
var data = {
q: _.isNil(params.data.q) ? null : params.data.q,
type: "cod_vage"
};
var ajax = new Ajax();
ajax
.get("search_opt")
.data(data)
.onSuccess(success)
.onError(failure)
.execute();
},
processResults: function (data) {
var results = data.returnData;
_.each(results, function (state) {
state.id = state.cod_vage;
state.text = state.rag_soc;
});
return {results: results};
},
}
});
/* AJAX caricamento banca cliente
$div.find("[name='cod_banc']").select2({
dropdownParent: $div,
placeholder: 'Seleziona banca',
allowClear: true,
width: "element",
ajax: {
dataType: 'json',
width: 'resolve',
delay: 250,
transport: function (params, success, failure) {
var data = {
q: _.isNil(params.data.q) ? null : params.data.q,
type: "cod_banc"
};
var ajax = new Ajax();
ajax
.get("search_opt")
.data(data)
.onSuccess(success)
.onError(failure)
.execute()
},
processResults: function (data) {
var results = data.returnData;
_.each(results, function (state) {
state.id = state.cod_banc;
state.text = state.descrizione;
});
return {results: results};
},
}
});
*/
$div.find("[name='cod_banc_azi']").select2({
dropdownParent: $div,
width: "element",
placeholder: "Seleziona banca aziendale",
allowClear: true,
ajax: {
dataType: "json",
width: "resolve",
delay: 250,
transport: function (params, success, failure) {
var data = {
q: _.isNil(params.data.q) ? null : params.data.q,
type: "cod_banc_azi"
};
var ajax = new Ajax();
ajax
.get("search_opt")
.data(data)
.onSuccess(success)
.onError(failure)
.execute();
},
processResults: function (data) {
var results = data.returnData;
_.each(results, function (state) {
state.id = state.cod_banc_azi;
state.text = state.descrizione;
});
return {results: results};
},
}
});
$div.find("[name='cod_paga']").select2({
dropdownParent: $div,
allowClear: true,
placeholder: "Seleziona condizioni pagamento",
ajax: {
dataType: "json",
width: "resolve",
delay: 250,
transport: function (params, success, failure) {
const data = {
q: _.isNil(params.data.q) ? null : params.data.q,
type: "cod_paga"
};
const ajax = new Ajax();
ajax
.get("search_opt")
.data(data)
.onSuccess(success)
.onError(failure)
.execute();
},
processResults: function (data) {
var results = data.returnData;
_.each(results, function (state) {
state.id = state.cod_paga;
state.text = `${state.cod_paga} - ${state.descrizione}`;
});
return {results: results};
},
}
});
var $dataRifORd = $div.find("[name='rif_data_ord']");
$dataRifORd
.datepicker({
dateFormat: "dd/mm/yy",
firstDay: _deliveryPlan.getFirstIsoWeekDay()
});
}
if (!self._isNew()) {
if (self._isDuplicate) {
$div.find("[name='data_ord']")
.on("change", function (e) {
$dataInizTrasp.val($(e.currentTarget).val());
if (!_.isNil(self._clieData)) {
self._refreshListino();
}
})
.datepicker({
dateFormat: "dd/mm/yy",
minDate: 0,
firstDay: _deliveryPlan.getFirstIsoWeekDay()
});
}
self._compilaTestataOrdine();
self._initTableAsOrdine();
if (self._viewRigheListino()) {
self._initTableAsListino();
}
$div.find("#popup-flt-cod_jcom").bsautocomplete({
minLength: 1,
sourceAjaxAction: "src_cod_jcom",
item_labelKey: "cod_jcom",
item_labelSubKey: "descrizione",
ajaxData: {cod_anag: self._getCodAnag()},
onSelect: function (e, result, $this) {
$this.blur(); //fix chrome: blur triggera change, e qui resetta
self._resetCodiceCommessa()
._setCodiceCommessa(result)
._compileCodJComData();
},
onSearch: function () {
$div.find("[name='cod_jcom']").val("");
$div.find("[name='cig']").val("");
$div.find("[name='cup']").val("");
}
}).on("change", function () {
self._resetCodiceCommessa();
});
} else {
$div.find("[name='data_ord']")
.on("change", function (e) {
$dataInizTrasp.val($(e.currentTarget).val());
@@ -422,164 +466,123 @@ PopupOrdine.prototype.open = function (editable) {
dateFormat: "dd/mm/yy",
minDate: 0,
firstDay: _deliveryPlan.getFirstIsoWeekDay()
});
}
self._compilaTestataOrdine();
})
.setValue(getToday());
self._initTableAsOrdine();
$div.find("table#list-articoli").hide();
$div.find("[name='cod_vdes']").disabled().selectpicker("refresh");
$div.find("[name='cod_mdep']").children(":not([value=''])").first().attr("selected", true);
if (self._viewRigheListino()) {
self._initTableAsListino();
}
$div.find("#popup-flt-cod_jcom").bsautocomplete({
minLength: 1,
sourceAjaxAction: "src_cod_jcom",
item_labelKey: "cod_jcom",
item_labelSubKey: "descrizione",
ajaxData: {cod_anag: self._getCodAnag()},
onSelect: function (e, result, $this) {
$this.blur(); //fix chrome: blur triggera change, e qui resetta
self._resetCodiceCommessa()
._setCodiceCommessa(result)
._compileCodJComData();
},
onSearch: function () {
$div.find("[name='cod_jcom']").val("");
$div.find("[name='cig']").val("");
$div.find("[name='cup']").val("");
}
}).on("change", function () {
self._resetCodiceCommessa();
});
} else {
$div.find("[name='data_ord']")
.on("change", function (e) {
$dataInizTrasp.val($(e.currentTarget).val());
if (!_.isNil(self._clieData)) {
self._refreshListino();
$div.find("#popup-flt-clie").bsautocomplete({
minLength: 3,
sourceAjaxAction: "src_cliente",
item_labelKey: "rag_soc",
item_labelSmallKey: ["cod_anag", "part_iva_formatted"],
item_labelSubKey: ["indirizzo", "citta", "prov"],
onSelect: function (e, result, $this) {
$this.blur(); //fix chrome: blur triggera change, e qui resetta
self._resetCliente()
._setCliente(result)
._compileClieData()
._showSituazione()
._refreshListino();
},
onSearch: function () {
$div.find("[name='cod_anag']").val("");
$div.find("[name='cod_vdes']").selectpicker("val", "");
}
})
.datepicker({
dateFormat: "dd/mm/yy",
minDate: 0,
firstDay: _deliveryPlan.getFirstIsoWeekDay()
})
.setValue(getToday());
}).on("change", function () {
self._resetCliente();
});
$div.find("table#list-articoli").hide();
$div.find("[name='cod_vdes']").disabled().selectpicker("refresh");
$div.find("[name='cod_mdep']").children(":not([value=''])").first().attr("selected", true);
$div.find("#popup-flt-clie").bsautocomplete({
minLength: 3,
sourceAjaxAction: "src_cliente",
item_labelKey: "rag_soc",
item_labelSmallKey: ["cod_anag", "part_iva_formatted"],
item_labelSubKey: ["indirizzo", "citta", "prov"],
onSelect: function (e, result, $this) {
$this.blur(); //fix chrome: blur triggera change, e qui resetta
self._resetCliente()
._setCliente(result)
._compileClieData()
._showSituazione()
._refreshListino();
},
onSearch: function () {
$div.find("[name='cod_anag']").val("");
$div.find("[name='cod_vdes']").selectpicker("val", "");
}
}).on("change", function () {
self._resetCliente();
});
$div.find("#popup-flt-cod_jcom").bsautocomplete({
minLength: 1,
sourceAjaxAction: "src_cod_jcom",
item_labelKey: "cod_jcom",
item_labelSubKey: "descrizione",
onSelect: function (e, result, $this) {
$this.blur(); //fix chrome: blur triggera change, e qui resetta
self._resetCodiceCommessa()
._setCodiceCommessa(result)
._compileCodJComData();
},
onSearch: function () {
$div.find("[name='cod_jcom']").val("");
$div.find("[name='cig']").val("");
$div.find("[name='cup']").val("");
}
}).on("change", function () {
self._resetCodiceCommessa();
});
}
if (self.editable) {
$div.find("#bt_addArticolo").parent().on("click", function () {
if (self._viewRigheListino()) {
self._showModalAggiungiAlListino();
} else {
self._showModalAggiungiAllOrdine();
}
});
}
$div.find("#bt_toggleAutoCalcPedane").parent().on("click", function () {
$div.find("#bt_toggleAutoCalcPedane").toggleClass("active").toggleClass("text-default").toggleClass("text-primary");
});
$div.find("#btPdfDettagliOrdine").on("click", function () {
self._getPdfDettagliOrdine(key);
});
$div.find("#btPdfEtich").on("click", function () {
self._getPdfEtich(key);
});
$div.find("#btPrintColliOrdine").on("click", function () {
self._getCodMdepsFromOrd(key);
});
$div.find("#btnPdfConferma").on("click", function () {
self._getPdfConferma(key);
});
var $btFltOrdinato = $div.find("#bt_fltOrdinato");
if (self._isNew() || !self._isModalitaListino()) {
$btFltOrdinato.hide();
} else {
$btFltOrdinato.parent().on("click", _.bind(self._filtraOrdinato, self));
}
$flagSospeso.on("switchChange.bootstrapSwitch", function (e, checked) {
if (!checked) {
self._comparaEAggiornaPrezzi();
$div.find("#popup-flt-cod_jcom").bsautocomplete({
minLength: 1,
sourceAjaxAction: "src_cod_jcom",
item_labelKey: "cod_jcom",
item_labelSubKey: "descrizione",
onSelect: function (e, result, $this) {
$this.blur(); //fix chrome: blur triggera change, e qui resetta
self._resetCodiceCommessa()
._setCodiceCommessa(result)
._compileCodJComData();
},
onSearch: function () {
$div.find("[name='cod_jcom']").val("");
$div.find("[name='cig']").val("");
$div.find("[name='cup']").val("");
}
}).on("change", function () {
self._resetCodiceCommessa();
});
}
});
/* CIG e CUP obbligatori
$div.find("[name=cig], [name=cup]").on("change", function () {
let cig = $("[name=cig]");
let cup = $("[name=cup]");
if (self.editable) {
$div.find("#bt_addArticolo").parent().on("click", function () {
if (isNotEmpty(cig.val()) || isNotEmpty(cup.val())) {
cig.attr("data-required", "");
cup.attr("data-required", "");
if (self._viewRigheListino()) {
self._showModalAggiungiAlListino();
} else {
self._showModalAggiungiAllOrdine();
}
});
}
$div.find("#bt_toggleAutoCalcPedane").parent().on("click", function () {
$div.find("#bt_toggleAutoCalcPedane").toggleClass("active").toggleClass("text-default").toggleClass("text-primary");
});
$div.find("#btPdfDettagliOrdine").on("click", function () {
self._getPdfDettagliOrdine(key);
});
$div.find("#btPdfEtich").on("click", function () {
self._getPdfEtich(key);
});
$div.find("#btPrintColliOrdine").on("click", function () {
self._getCodMdepsFromOrd(key);
});
$div.find("#btnPdfConferma").on("click", function () {
self._getPdfConferma(key);
});
var $btFltOrdinato = $div.find("#bt_fltOrdinato");
if (self._isNew() || !self._isModalitaListino()) {
$btFltOrdinato.hide();
} else {
cig.removeAttr("data-required");
cup.removeAttr("data-required");
$btFltOrdinato.parent().on("click", _.bind(self._filtraOrdinato, self));
}
});
*/
//$div.find("#popup-flt-clie").select();
if (!self.editable) {
$div.find("input,select,textarea").attr("disabled", true);
}
})
$flagSospeso.on("switchChange.bootstrapSwitch", function (e, checked) {
if (!checked) {
self._comparaEAggiornaPrezzi();
}
});
/* CIG e CUP obbligatori
$div.find("[name=cig], [name=cup]").on("change", function () {
let cig = $("[name=cig]");
let cup = $("[name=cup]");
if (isNotEmpty(cig.val()) || isNotEmpty(cup.val())) {
cig.attr("data-required", "");
cup.attr("data-required", "");
} else {
cig.removeAttr("data-required");
cup.removeAttr("data-required");
}
});
*/
//$div.find("#popup-flt-clie").select();
if (!self.editable) {
$div.find("input,select,textarea").attr("disabled", true);
}
})
.onShow(function ($div) {
$div.find("#popup-flt-clie").select();
_deliveryPlan.setSelect2ContainerWidth();
if (isDuplicate) {
self._showSituazione();
}
})
.btCancel({text: "Chiudi senza salvare"})
.onClose(function () {
if (is_function(self._onClose)) {
@@ -601,10 +604,6 @@ PopupOrdine.prototype.open = function (editable) {
self._modalBox.closeOnly();
}
self._modalBox.show();
if (isDuplicate) {
self._showSituazione();
}
})
.execute();
};

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

@@ -508,9 +508,16 @@ PopupOrdProd.prototype._buildRiga = function (items, dataPr) {
break;
}
let dataMrp = moment.unix(item.data_mrp);
let dataMrp;
if (moment(item.data_mrp, "YYYY-MM-DD", true).isValid()) {
let data = new Date(item.data_mrp);
dataMrp = moment(data);
} else {
dataMrp = moment.unix(item.data_mrp);
}
let today = moment().startOf("day");
// let dataProd = moment.unix(dataPr).startOf("day");
let daysDiff = Math.abs(dataMrp.diff(today, "days")) + 1;
if (value) {

View File

@@ -1,19 +1,29 @@
SELECT mrp.cod_mart,
mrp.descrizione AS descr_articolo,
DATEDIFF(DAY, '[data_ord]', CAST(mrp.data_mrp AS DATE)) AS gg_mrp,
CAST(mrp.data_mrp AS DATE) AS data_mrp,
CASE WHEN '[data_ord]' = CAST(mrp.data_mrp AS DATE) THEN NULL ELSE mrp.gestione END AS gestione,
SUM(CASE WHEN '[data_ord]' = CAST(mrp.data_mrp AS DATE) THEN mrp.qta ELSE 0 END) AS giacenza,
SUM(CASE
WHEN mrp.gestione = 'L' AND CAST(mrp.data_mrp AS DATE) > '[data_ord]' THEN mrp.qta
ELSE 0 END) AS impegni,
SUM(CASE
WHEN mrp.gestione = 'A' AND CAST(mrp.data_mrp AS DATE) > '[data_ord]' THEN mrp.qta
ELSE 0 END) AS qta_arrivo
FROM MRP_DailyMaterialReq() mrp
WHERE mrp.cod_mdep = '[cod_mdep]'
AND (gestione IS NULL OR gestione NOT IN ('CV', 'NP'))
AND cod_mart IN ('[cod_mart]')
GROUP BY mrp.cod_mart, mrp.descrizione, CAST(mrp.data_mrp AS DATE),
CASE WHEN '[data_ord]' = CAST(mrp.data_mrp AS DATE) THEN NULL ELSE mrp.gestione END
ORDER BY mrp.cod_mart, CAST(mrp.data_mrp AS DATE)
SELECT mtb_aart.cod_mart,
mtb_aart.descrizione AS descr_articolo,
cod_mdep,
ISNULL(gg_mrp, 0) AS gg_mrp,
ISNULL(data_mrp, GETDATE()) AS data_mrp,
gestione,
ISNULL(giacenza, 0) AS giacenza,
ISNULL(impegni, 0) AS impegni,
ISNULL(qta_arrivo, 0) AS qta_arrivo
FROM mtb_aart
LEFT JOIN (SELECT mrp.cod_mdep,
mrp.cod_mart,
DATEDIFF(DAY, '[data_ord]', CAST(mrp.data_mrp AS DATE)) AS gg_mrp,
CAST(mrp.data_mrp AS DATE) AS data_mrp,
mrp.gestione,
SUM(CASE
WHEN '[data_ord]' = CAST(mrp.data_mrp AS DATE) THEN mrp.qta
ELSE 0 END) AS giacenza,
SUM(CASE
WHEN mrp.gestione = 'L' AND CAST(mrp.data_mrp AS DATE) > '[data_ord]' THEN mrp.qta
ELSE 0 END) AS impegni,
SUM(CASE
WHEN mrp.gestione = 'A' AND CAST(mrp.data_mrp AS DATE) > '[data_ord]' THEN mrp.qta
ELSE 0 END) AS qta_arrivo
FROM MRP_DailyMaterialReq() mrp
WHERE (gestione IS NULL OR gestione NOT IN ('CV', 'NP'))
GROUP BY mrp.cod_mdep, mrp.cod_mart, mrp.descrizione, CAST(mrp.data_mrp AS DATE),
mrp.gestione) AS mrp ON mrp.cod_mart = mtb_aart.cod_mart AND mrp.cod_mdep = '[cod_mdep]'
WHERE mtb_aart.cod_mart IN ('[cod_mart]')

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"));