Finish ModifCRP

This commit is contained in:
2023-08-21 18:40:37 +02:00
7 changed files with 86 additions and 183 deletions

View File

@@ -65,7 +65,7 @@
<div class="input-group input-group-sm">
<input type="number" class="form-control no-spin-buttons" name="qtaRes" id="qtaRes"
value="<%= order.qtaResidua %>">
value="<%= order.qtaResidua < 0 ? 0 : order.qtaResidua %>">
<div class="input-group-addon"><%= order.untOrd %></div>
</div>

View File

@@ -54,6 +54,8 @@ class PianificazioneProduzioneOrto {
$rigaOrdine["cod_jcom"] = from($rigaOrdine["cod_jcom"])
->select(function ($codJcom) {
$codJcom["kg_ord"] = intval($codJcom["kg_ord"]);
$codJcom["colli_ord"] = intval($codJcom["colli_ord"]);
$codJcom["pedane_ord"] = intval($codJcom["pedane_ord"]);
return $codJcom;
})
@@ -697,6 +699,7 @@ class PianificazioneProduzioneOrto {
->set("untMisProd", array_get($piano, "unt_mis"))
->set("codMdep", array_get($piano, "cod_mdep"))
->set("codJflav", array_get($piano, "cod_jflav"))
->set("colliPedana", array_get($piano, "colli_pedana"))
->set("codVdes", array_get($piano, "cod_vdes"))
->set("note", array_get($piano, "note"))
->setDate("dataOrd", array_get($piano, "data_ord", array_get($piano, "data_piano")))

View File

@@ -325,7 +325,23 @@ const _pianificazioneProduzioneOrto = {
}
},
template(data) {
return `${data.cod_jfas} - ${data.prodotto}`;
let string = [
`${data.cod_jfas} - ${data.prodotto}`
];
if (data.cod_tcol_UL) {
string = [
...string,
data.desc_pedana
];
}
string = [
...string,
`Colli per ped. ${data.colli_pedana}`
];
return string.join("<br>");
}
},
{
@@ -859,7 +875,7 @@ const _pianificazioneProduzioneOrto = {
autoWidth: false,
destroy: true,
dom: "<tr>",
data: self.store.piano.ordiniCampagna.filter(ordine => !ordine.magaz),
data: self.store.piano.ordiniCampagna,
paging: false,
ordering: true,
order: [

View File

@@ -53,8 +53,11 @@ function PopupGenerateOrders() {
...acc,
...(cur.cod_jcom?.map && cur.cod_jcom?.map(cod_jcom => ({
...cur,
kg_ord: _.round(cur.kg_ord, 0) > _.round(cod_jcom.kg_ord, 0) ? cod_jcom.kg_ord : cur.kg_ord,
kg_ord_calc: true,
// kg_ord: _.round(cur.kg_ord, 0) > _.round(cod_jcom.kg_ord, 0) ? cod_jcom.kg_ord : cur.kg_ord,
// kg_ord_calc: true,
kg_ord: cod_jcom.kg_ord,
colli_ord: cod_jcom.colli_ord,
pedane_ord: cod_jcom.pedane_ord,
cod_jcom: cod_jcom.cod_jcom,
desc_comm: cod_jcom.desc_comm
})) || [cur])
@@ -224,7 +227,8 @@ function PopupGenerateOrders() {
id: "magazzino",
title: "Usa magazzino",
class: "checkbox-lg-no-label",
checked: data
checked: data,
disabled: row.confirmed
}).outerHtml();
}
@@ -368,15 +372,15 @@ function PopupGenerateOrders() {
row.kg_ord = _.round(row.kg_ord || 0);
if (row.kg_pian) {
// if (row.kg_pian) {
// row.kg_ord -= row.kg_pian;
if (row.kg_ord < 0) {
row.kg_ord = 0;
}
// if (row.kg_ord < 0) {
// row.kg_ord = 0;
// }
row.kg_ord_calc = true;
}
// row.kg_ord_calc = true;
// }
// language=HTML
const $input = $("<div>", {
@@ -410,13 +414,14 @@ function PopupGenerateOrders() {
{
data: "colli_ord",
className: "min-width-150px",
visible: !self.orders.some(order => order.cod_jfas === "RACC"),
render(data, type, row) {
if (type === "display") {
if (row.kg_ord_calc) {
row.colli_ord = row.kg_ord / row.qta_cnf;
}
row.colli_ord = _.round(row.colli_ord || 0);
row.colli_ord = _.ceil(row.colli_ord || 0);
// language=HTML
const $input = $("<div>", {
@@ -449,13 +454,14 @@ function PopupGenerateOrders() {
{
data: "pedane_ord",
className: "min-width-150px",
visible: !self.orders.some(order => order.cod_jfas === "RACC"),
render(data, type, row) {
if (type === "display") {
if (row.kg_ord_calc) {
row.pedane_ord = row.kg_ord / row.qta_cnf / row.colli_pedana;
}
row.pedane_ord = _.round(row.pedane_ord || 0);
row.pedane_ord = _.ceil(row.pedane_ord || 0);
const $input = $("<div>", {
class: "input-group"
@@ -556,7 +562,7 @@ function PopupGenerateOrders() {
return durationFormat(row.ore_necessarie);
}
return "-";
return "<i class='far fa-infinity'></i>";
}
}
];
@@ -896,6 +902,7 @@ function PopupGenerateOrders() {
height: 350,
valuePrimitive: true,
noDataTemplate: "Non &egrave; presente quantit&agrave; disponibile.",
autoBind: !!data.partite && data.partite.length > 0,
itemTemplate:
// language=HTML
(data) => `
@@ -937,7 +944,6 @@ function PopupGenerateOrders() {
data.returnData
))
.onError({
toast: {message: "Errore nella ricerca delle partite mag."},
callback(result) {
options.error(result.errorText);
}
@@ -1113,6 +1119,7 @@ function PopupGenerateOrders() {
valuePrimitive: true,
optionLabel: "Centro di Costo",
value: data.cod_jfas,
autoBind: !!data.cod_jfas && data.cod_jfas !== "CONF",
dataSource: {
serverFiltering: true,
transport: {
@@ -1128,7 +1135,6 @@ function PopupGenerateOrders() {
data.returnData
))
.onError({
toast: {message: "Errore nella ricerca dei centri di costo."},
callback(result) {
options.error(result.errorText);
}
@@ -1149,7 +1155,7 @@ function PopupGenerateOrders() {
if (dataItem) {
self.orders = self.orders.map(order => {
if (order.uid === data.uid ||
(!order.cod_jfas && order.cod_mart === data.cod_mart)) {
(order.cod_jfas === "CONF" && order.cod_mart === data.cod_mart)) {
order = {
...order,
cod_jfas: dataItem.cod_jfas,
@@ -1182,6 +1188,7 @@ function PopupGenerateOrders() {
valuePrimitive: true,
optionLabel: "Squadra",
value: data.cod_jflav,
autoBind: !!data.cod_jflav,
dataSource: {
serverFiltering: true,
sort: {
@@ -1201,7 +1208,6 @@ function PopupGenerateOrders() {
data.returnData
))
.onError({
toast: {message: "Errore nella ricerca delle squadre."},
callback(result) {
options.error(result.errorText);
}
@@ -1249,8 +1255,8 @@ function PopupGenerateOrders() {
$kgOrd.off("input").on("input", function () {
data.kg_ord = $(this).getNumericValue();
data.colli_ord = _.round(data.kg_ord / data.qta_cnf);
data.pedane_ord = _.round(data.kg_ord / data.qta_cnf / data.colli_pedana);
data.colli_ord = _.ceil(data.kg_ord / data.qta_cnf);
data.pedane_ord = _.ceil(data.kg_ord / data.qta_cnf / data.colli_pedana);
$colliOrd.val(data.colli_ord);
$pedaneOrd.val(data.pedane_ord);
@@ -1295,6 +1301,7 @@ function PopupGenerateOrders() {
valuePrimitive: true,
optionLabel: "Tipo pedana",
value: data.cod_tcol,
autoBind: !!data.cod_tcol,
dataSource: {
serverFiltering: true,
sort: {
@@ -1314,7 +1321,6 @@ function PopupGenerateOrders() {
data.returnData
))
.onError({
toast: {message: "Errore nella ricerca dei tipi pedana."},
callback(result) {
options.error(result.errorText);
}
@@ -1455,9 +1461,9 @@ function PopupGenerateOrders() {
let rowValid = !!row.cod_anag;
if (row.magaz) {
rowValid &&= !!row.kg_ord;
rowValid &&= !!row.kg_ord && row.kg_ord > 0;
} else {
rowValid &&= row.partite?.length > 0 && !!row.cod_jfas && !!row.cod_jflav && !!row.kg_ord && !!row.prod_teorica && !!row.n_persone;
rowValid &&= row.partite?.length > 0 && !!row.cod_jfas && !!row.cod_jflav && !!row.kg_ord && row.kg_ord > 0 && !!row.prod_teorica && !!row.n_persone;
}
if (self.orders.every(order => order.cod_jfas === "RACC")) {
@@ -1466,7 +1472,7 @@ function PopupGenerateOrders() {
return rowValid;
} else {
return !!row.cod_jfas && !!row.kg_ord && !!row.prod_teorica && !!row.n_persone;
return !!row.cod_jfas && !!row.kg_ord && row.kg_ord > 0 && !!row.prod_teorica && !!row.n_persone;
}
}
};

View File

@@ -99,21 +99,21 @@ function PopupMoveOrder() {
const momentDate = moment(date);
if (cellType === "day" && _pianificazioneProduzioneOrto.pianiProduzione?.length > 0) {
const pianoProduzione = _pianificazioneProduzioneOrto.pianiProduzione.find(piano => moment(piano.data_piano, "YYYY/MM/DD").isSame(date));
const pianoProduzione = _pianificazioneProduzioneOrto.pianiProduzione.find(piano => moment(piano.data_piano, "DD/MM/YYYY").isSame(date, "day"));
if (pianoProduzione) {
return {
html: $("<span>", {
title: `Piano impostato per ${pianoProduzione.ore_lavoro_camp} ore in campagna e ${pianoProduzione.ore_lavoro_sede} in sede.`,
html: date.getDate() + "<span class='dp-note'></span>",
class: momentDate.isAfter() ? "cursor-pointer" : ""
class: momentDate.isAfter(moment(), "day") ? "cursor-pointer" : ""
}).outerHtml(),
disabled: momentDate.isBefore()
disabled: momentDate.isBefore(moment(), "day")
};
}
}
if (momentDate.isBefore()) {
if (momentDate.isBefore(moment(), "day")) {
return {
disabled: true
};

View File

@@ -4,8 +4,8 @@ WITH righe AS (SELECT dopp.id,
js.cod_jfas,
js.cod_jfas_parent,
js.descrizione AS desc_fase,
jf.cod_jflav,
jf.nome AS nome_squadra,
ISNULL(jf.cod_jflav, 'MAGAZ') as cod_jflav,
ISNULL(jf.nome, 'MAGAZZINO') AS nome_squadra,
ga.cod_anag,
ga.cod_anag + ' - ' + ga.rag_soc AS cliente,
md.cod_mdep,

View File

@@ -1,94 +1,24 @@
WITH dopp AS (SELECT luogo_lavoro,
STRING_AGG(cod_jfas, '-') AS cod_jfas,
data_ord,
cod_prod,
cod_sl,
cod_jcom,
cod_mart,
colli_pedana,
magaz,
MAX(flag_evaso_prod) AS flag_evaso_prod,
SUM(qta_pian) AS qta_pian,
SUM(colli_pian) AS colli_pian,
qta_cnf
FROM (SELECT DISTINCT luogo_lavoro,
dopp.cod_jfas,
dopp.cod_anag,
dopp.cod_prod,
cod_sl,
dopp.cod_jcom,
dopp.cod_mart,
ma.colli_pedana,
magaz,
CASE WHEN do.flag_evaso_prod = 'E' THEN 1 ELSE 0 END AS flag_evaso_prod,
SUM(qta_ord)
OVER (PARTITION BY do.num_ord, luogo_lavoro, dopp.cod_anag, dopp.cod_prod, dopp.cod_jcom, ma.cod_mart, magaz)
AS qta_pian,
SUM(qta_ord / ma.qta_cnf)
OVER (PARTITION BY do.num_ord, luogo_lavoro, dopp.cod_anag, dopp.cod_prod, dopp.cod_jcom, ma.cod_mart, magaz)
AS colli_pian,
ma.qta_cnf AS qta_cnf,
dopp.data_ord
FROM dtb_ordr_pian_prod dopp
LEFT OUTER JOIN dtb_ordt do
ON dopp.gestione = do.gestione
AND dopp.data_ord = do.data_ord
AND do.num_ord = dopp.num_ord
LEFT OUTER JOIN mtb_aart ma ON dopp.cod_prod = ma.cod_mart
WHERE magaz = 0
AND (data_piano >= CAST(GETDATE() AS DATE) OR do.num_ord IS NOT NULL)) t
GROUP BY luogo_lavoro, data_ord, cod_prod, cod_sl, cod_jcom, cod_mart, colli_pedana,
magaz, qta_cnf),
TempResult AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS row_number,
WITH TempResult AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS row_number,
*
FROM (SELECT dopp.luogo_lavoro,
dopp.cod_jfas,
dopp.data_cons,
dopp.cod_anag,
dopp.cod_tcol_UL,
dopp.desc_pedana,
dopp.rag_soc,
dopp.cliente,
dopp.citta,
dopp.cod_prod,
dopp.desc_prod,
dopp.descrizione AS desc_prod,
dopp.prodotto,
dopp.qta_ord,
dopp.qta_pian,
dopp.data_ord,
dopp.flag_evaso_prod,
CASE
WHEN dopp.data_ord IS NOT NULL AND dopp.flag_evaso_prod = 1 THEN ROUND(kg_ord, 0)
ELSE
CASE
WHEN ROUND(kg_ord, 0) > ISNULL(dopp.qta_pian, 0)
THEN ROUND(kg_ord, 0) - ISNULL(dopp.qta_pian, 0)
ELSE 0 END
END AS kg_ord,
-- dopp.flag_evaso_prod,
dopp.kg_ord,
ISNULL(dopp.qta_pian, 0) AS kg_pian,
CASE
WHEN dopp.data_ord IS NOT NULL AND dopp.flag_evaso_prod = 1 THEN colli_ord
WHEN dopp.colli_pian IS NOT NULL THEN
CASE
WHEN colli_ord > CEILING(dopp.colli_pian)
THEN
colli_ord - CEILING(dopp.colli_pian)
ELSE 0 END
ELSE colli_ord
END AS colli_ord,
dopp.colli_ord,
CEILING(ISNULL(dopp.colli_pian, kg_ord / ma.qta_cnf)) AS colli_pian,
CASE
WHEN dopp.data_ord IS NOT NULL AND dopp.flag_evaso_prod = 1 THEN pedane_ord
WHEN dopp.colli_pian IS NOT NULL THEN
CASE
WHEN pedane_ord >
CEILING(dopp.colli_pian /
ISNULL(dopp.colli_pedana, ma.colli_pedana)) THEN
pedane_ord -
CEILING(dopp.colli_pian /
ISNULL(dopp.colli_pedana, ma.colli_pedana))
ELSE 0 END
ELSE pedane_ord
END AS pedane_ord,
dopp.pedane_ord,
CEILING(ISNULL(dopp.colli_pian, kg_ord / ma.qta_cnf) /
ISNULL(dopp.colli_pedana, ma.colli_pedana)) AS pedane_pian,
ISNULL(dopp.colli_pedana, ma.colli_pedana) AS colli_pedana,
@@ -104,96 +34,44 @@ WITH dopp AS (SELECT luogo_lavoro,
dopp.produttivita,
dopp.flag_sospeso,
dopp.varieta,
dopp.max_allocazione,
dopp.cod_jcom,
dopp.magaz,
ISNULL(dopp.qta_cnf, ISNULL(qta_cnf_semilavorato, ma.qta_cnf)) AS qta_cnf,
ISNULL(dopp.qta_cnf, ma.qta_cnf) AS qta_cnf,
CAST(CASE WHEN dopp.qta_pian IS NOT NULL THEN 1 ELSE 0 END AS BIT) AS parz,
CAST(CASE
WHEN dopp.qta_pian IS NOT NULL AND
((dopp.flag_evaso_prod = 1 AND ROUND(kg_ord, 0) <= 0) OR
(dopp.flag_evaso_prod = 0 AND ROUND(kg_ord, 0) - dopp.qta_pian <= 0))
dopp.qta_ord <= 0
THEN 1
ELSE 0 END AS BIT) AS compl
FROM (SELECT CRP_OF_FabbisognoOre.luogo_lavoro,
CRP_OF_FabbisognoOre.cod_jfas,
FROM (SELECT luogo_lavoro,
cod_jcom,
data_cons,
CRP_OF_FabbisognoOre.cod_anag,
CRP_OF_FabbisognoOre.cod_tcol_UL,
cod_anag,
rag_soc,
cliente,
citta,
CRP_OF_FabbisognoOre.cod_mart AS cod_prod,
CRP_OF_FabbisognoOre.descrizione AS desc_prod,
cod_mart AS cod_prod,
descrizione,
prodotto,
CRP_OF_FabbisognoOre.qta_ord,
CRP_OF_FabbisognoOre.unt_mis,
MAX(dopp.data_ord) AS data_ord,
CAST(MAX(ISNULL(dopp.flag_evaso_prod, 0)) AS BIT) AS flag_evaso_prod,
SUM(dopp.qta_pian) AS qta_pian,
SUM(dopp.colli_pian) AS colli_pian,
MAX(dopp.colli_pedana) AS colli_pedana,
MAX(dopp.qta_cnf) AS qta_cnf,
-- flag_evaso_prod,
kg_ord AS qta_ord,
qta_pian,
kg_ord,
colli_ord,
colli_pian,
qta_cnf,
colli_pedana,
pedane_ord,
CRP_OF_FabbisognoOre.ore_uomo_necessarie,
cod_jfas,
luogo,
ore_uomo_necessarie,
produttivita,
unt_mis,
flag_sospeso,
varieta,
jtb_fasi.max_allocazione,
CRP_OF_FabbisognoOre.cod_jcom,
t.magaz,
qta_cnf_semilavorato
FROM (SELECT commesse.cod_jcom AS cod_jcom_tab,
commesse.descrizione AS descr_comm,
commesse.kg_ord AS kg_ord_comm,
varieta.cod_mart AS cod_mart_varieta,
semilavorato.qta_cnf AS qta_cnf_semilavorato,
crp.*
FROM CRP_OF_FabbisognoOre_json crp
OUTER APPLY OPENJSON(cod_jcom, N'$') WITH (
cod_jcom VARCHAR(200) N'$.cod_jcom',
descrizione VARCHAR(200) N'$.desc_comm',
kg_ord FLOAT '$.kg_ord'
) AS commesse
CROSS APPLY OPENJSON(varieta, N'$') WITH (
cod_mart VARCHAR(200),
semilavorato NVARCHAR(MAX) AS JSON
) AS varieta
OUTER APPLY OPENJSON(varieta.semilavorato, '$[0]')
WITH (qta_cnf NUMERIC(20, 5)) AS semilavorato) CRP_OF_FabbisognoOre
LEFT OUTER JOIN jtb_fasi ON CRP_OF_FabbisognoOre.luogo = jtb_fasi.cod_jfas
LEFT OUTER JOIN dopp
ON (CRP_OF_FabbisognoOre.luogo_lavoro = dopp.luogo_lavoro
OR dopp.cod_jfas LIKE
'%' + CRP_OF_FabbisognoOre.cod_jfas + '%')
AND CRP_OF_FabbisognoOre.cod_mart = dopp.cod_prod
AND ((dopp.cod_jfas LIKE '%RACC%' AND
dopp.data_ord = CRP_OF_FabbisognoOre.data_cons) OR
dopp.cod_jcom = CRP_OF_FabbisognoOre.cod_jcom_tab)
AND CRP_OF_FabbisognoOre.cod_mart_varieta LIKE
'%' + dopp.cod_mart + '%'
CROSS APPLY (SELECT (SELECT dopp2.id, dopp2.data_piano
FROM dtb_ordr_pian_prod dopp2
WHERE CRP_OF_FabbisognoOre.luogo_lavoro = dopp2.luogo_lavoro
AND CRP_OF_FabbisognoOre.cod_mart = dopp2.cod_prod
AND CRP_OF_FabbisognoOre.cod_jcom_tab = dopp2.cod_jcom
AND CRP_OF_FabbisognoOre.cod_mart_varieta = dopp2.cod_mart
AND dopp2.magaz = 1
FOR JSON PATH) AS magaz) t
WHERE (dopp.qta_pian IS NULL
OR data_cons > GETDATE())
GROUP BY CRP_OF_FabbisognoOre.luogo_lavoro, CRP_OF_FabbisognoOre.cod_jfas, data_cons,
CRP_OF_FabbisognoOre.cod_anag,
CRP_OF_FabbisognoOre.cod_tcol_UL, rag_soc, cliente, citta,
CRP_OF_FabbisognoOre.cod_mart,
CRP_OF_FabbisognoOre.descrizione, prodotto, CRP_OF_FabbisognoOre.qta_ord,
kg_ord, colli_ord, pedane_ord,
CRP_OF_FabbisognoOre.unt_mis, produttivita, flag_sospeso, varieta,
jtb_fasi.max_allocazione,
CRP_OF_FabbisognoOre.cod_jcom, CRP_OF_FabbisognoOre.ore_uomo_necessarie,
qta_cnf_semilavorato, t.magaz) dopp
cod_tcol_UL,
desc_pedana,
varieta
FROM CRP_OF_FabbisognoOre_JSON
WHERE (qta_pian IS NULL
OR data_cons >= CAST(GETDATE() AS DATE))) dopp
INNER JOIN mtb_aart ma ON dopp.cod_prod = ma.cod_mart) t
WHERE [filter]),
TempCount AS (SELECT COUNT(*) AS rows_count