Modifiche e correzioni CRP

This commit is contained in:
2023-06-30 12:20:42 +02:00
parent bfc51d97fd
commit a3d3648f6d
6 changed files with 189 additions and 107 deletions

View File

@@ -56,7 +56,7 @@
type="button"
class="btn btn-warning"
id="confirmButton"
<%= canConfirm ? "" : "disabled" %>
<%= !loading && canConfirm ? "" : "disabled" %>
<%= msg && `title="${msg}"` || "" %>>
Conferma
</button>

View File

@@ -421,38 +421,38 @@ const _pianificazioneProduzioneOrto = {
}
]),
tableOrdiniDiVendita: undefined,
contextMenuMagaz: [
{
text: "Aggiorna",
spriteCssClass: "fa fa-sync-alt",
attr: {
"data-command": "Refresh"
}
},
{
text: 'Annulla "prendi da magazzino"',
spriteCssClass: "fa fa-warehouse-alt",
attr: {
"data-command": "UNDO_MAGAZ"
}
}
],
contextMenuCampagna: [
{
text: "Aggiorna",
spriteCssClass: "fa fa-sync-alt",
attr: {
"data-command": "Refresh"
}
},
{
text: "Genera ordine di Campagna",
spriteCssClass: "fa fa-farm",
attr: {
"data-command": "CAMPAGNA"
}
},
],
// contextMenuMagaz: [
// {
// text: "Aggiorna",
// spriteCssClass: "fa fa-sync-alt",
// attr: {
// "data-command": "Refresh"
// }
// },
// {
// text: 'Annulla "prendi da magazzino"',
// spriteCssClass: "fa fa-warehouse-alt",
// attr: {
// "data-command": "UNDO_MAGAZ"
// }
// }
// ],
// contextMenuCampagna: [
// {
// text: "Aggiorna",
// spriteCssClass: "fa fa-sync-alt",
// attr: {
// "data-command": "Refresh"
// }
// },
// {
// text: "Genera ordine di Campagna",
// spriteCssClass: "fa fa-farm",
// attr: {
// "data-command": "CAMPAGNA"
// }
// },
// ],
contextMenuEditCampagna: [
{
text: "Modifica ordine di Campagna",
@@ -476,22 +476,22 @@ const _pianificazioneProduzioneOrto = {
}
}
],
contextMenuSede: [
{
text: "Aggiorna",
spriteCssClass: "fa fa-sync-alt",
attr: {
"data-command": "Refresh"
}
},
{
text: "Genera ordine di Sede",
spriteCssClass: "fa fa-warehouse",
attr: {
"data-command": "SEDE"
}
}
],
// contextMenuSede: [
// {
// text: "Aggiorna",
// spriteCssClass: "fa fa-sync-alt",
// attr: {
// "data-command": "Refresh"
// }
// },
// {
// text: "Genera ordine di Sede",
// spriteCssClass: "fa fa-warehouse",
// attr: {
// "data-command": "SEDE"
// }
// }
// ],
contextMenuEditSede: [
{
text: "Modifica ordine di Sede",
@@ -719,14 +719,58 @@ const _pianificazioneProduzioneOrto = {
if (dataItems) {
e.sender.remove(".k-menu-item");
let menu;
let menu = [
{
text: "Aggiorna",
spriteCssClass: "fa fa-sync-alt",
attr: {
"data-command": "Refresh"
}
}
];
const menuSede = {
text: "Genera ordine di Sede",
spriteCssClass: "fa fa-warehouse",
attr: {
"data-command": "SEDE"
}
};
if (dataItems.every(dataItem => dataItem.magaz)) {
menu = self.contextMenuMagaz;
menu = [
...menu,
{
text: 'Annulla "prendi da magazzino"',
spriteCssClass: "fa fa-warehouse-alt",
attr: {
"data-command": "UNDO_MAGAZ"
}
}
];
} else if (dataItems.every(dataItem => dataItem.luogo_lavoro === "CAMPAGNA")) {
menu = self.contextMenuCampagna;
menu = [
...menu,
{
text: "Genera ordine di Campagna",
spriteCssClass: "fa fa-farm",
attr: {
"data-command": "CAMPAGNA"
}
}
];
if (dataItems.every(dataItem => dataItem.cod_jfas === "CONF")) {
menu = [
...menu,
menuSede
];
}
} else {
menu = self.contextMenuSede;
menu = [
...menu,
menuSede
];
}
e.sender.append(menu);
@@ -785,6 +829,7 @@ const _pianificazioneProduzioneOrto = {
if (ret?.returnId === 1) {
await self.savePianoProduzione(true);
await self.tableOrdiniDiVendita.dataSource.read();
}
});
@@ -1239,7 +1284,7 @@ const _pianificazioneProduzioneOrto = {
}
}
if (moment(date).isBefore()) {
if (moment(date).isBefore(moment(), "day")) {
return {
disabled: true
};

View File

@@ -163,6 +163,8 @@ function PopupGenerateOrders() {
if (row.cod_jfas === "RACC") {
if (row.semilavorato?.length > 0) {
data = row.cod_sl ??= row.semilavorato[0].cod_sl;
row.qta_cnf = row.semilavorato[0].qta_cnf;
row.colli_pedana = row.semilavorato[0].colli_pedana;
}
if (type === "display") {
@@ -390,7 +392,7 @@ function PopupGenerateOrders() {
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>", {
@@ -429,7 +431,7 @@ function PopupGenerateOrders() {
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"
@@ -604,6 +606,7 @@ function PopupGenerateOrders() {
{
field: "articolo",
title: "Articolo",
width: "70%",
attributes: {
class: "!k-text-left"
},
@@ -616,6 +619,10 @@ function PopupGenerateOrders() {
}
}
}
},
{
field: "cod_jfas",
title: "Fase"
}
]
);
@@ -825,7 +832,9 @@ function PopupGenerateOrders() {
(!order.magaz && order.cod_mart === data.cod_mart)) {
order = {
...order,
cod_sl: dataItem.cod_sl
cod_sl: dataItem.cod_sl,
qta_cnf: dataItem.qta_cnf,
colli_pedana: dataItem.colli_pedana
};
}
@@ -1203,8 +1212,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);

View File

@@ -18,8 +18,8 @@ WITH righe AS (SELECT dopp.id,
prod.cod_mart AS cod_prod,
prod.descrizione AS desc_prod,
prod.cod_mart + ' - ' + prod.descrizione AS field_prod,
prod.qta_cnf,
prod.colli_pedana,
ISNULL(sl.qta_cnf, prod.qta_cnf) AS qta_cnf,
ISNULL(sl.colli_pedana, prod.colli_pedana) AS colli_pedana,
ma.cod_mart,
ma.descrizione,
ma.cod_mart + ' - ' + ma.descrizione AS prodotto,
@@ -31,8 +31,9 @@ WITH righe AS (SELECT dopp.id,
FOR XML PATH, ROOT) AS partite,
qta_ord,
qta_ord AS kg_ord,
qta_ord / prod.qta_cnf AS colli_ord,
qta_ord / prod.qta_cnf / prod.colli_pedana AS pedane_ord,
CEILING(qta_ord / ISNULL(sl.qta_cnf, prod.qta_cnf)) AS colli_ord,
CEILING(qta_ord / ISNULL(sl.qta_cnf, prod.qta_cnf) /
ISNULL(sl.colli_pedana, prod.colli_pedana)) AS pedane_ord,
cod_tcol,
prod_teorica,
n_persone,
@@ -52,6 +53,8 @@ WITH righe AS (SELECT dopp.id,
(SELECT jtb_cicl.cod_jfas AS cod_jfas_sl,
jtb_cicl.cod_prod AS cod_sl,
jtb_cicl.descrizione_prod AS descr_sl,
sl.qta_cnf,
sl.colli_pedana,
jtb_dist_mate.perc_sfrido,
CONVERT(VARCHAR(20), CONVERT(INTEGER, mtb_part.qta_esistente)) + ' ' +
mtb_aart.unt_mis AS giacenza
@@ -113,6 +116,7 @@ FROM (SELECT data_piano,
(SELECT *
FROM righe
WHERE righe.data_piano = dtb_ordt_pian_prod.data_piano
ORDER BY id
FOR XML PATH, ROOT)
END AS righe
FROM dtb_ordt_pian_prod

View File

@@ -1,25 +1,41 @@
WITH dopp AS (SELECT DISTINCT luogo_lavoro,
dopp.cod_anag,
dopp.cod_prod,
cod_sl,
dopp.cod_jcom,
cod_mart,
magaz,
dopp.gestione,
dopp.data_ord,
dopp.num_ord,
SUM(CASE
WHEN do.num_ord IS NULL THEN qta_ord
WHEN do.flag_evaso_prod = 'E' THEN do.qta_evasa_prod
ELSE do.qta_prod END)
OVER (PARTITION BY luogo_lavoro, dopp.cod_anag, dopp.cod_prod, dopp.cod_jcom, cod_mart, magaz) AS qta_pian
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
WHERE magaz = 0
AND data_piano >= GETDATE()),
WITH dopp AS (SELECT luogo_lavoro,
cod_anag,
cod_prod,
cod_sl,
cod_jcom,
cod_mart,
qta_cnf,
colli_pedana,
magaz,
SUM(qta_pian) AS qta_pian
FROM (SELECT DISTINCT luogo_lavoro,
dopp.cod_anag,
dopp.cod_prod,
cod_sl,
dopp.cod_jcom,
dopp.cod_mart,
ma.qta_cnf,
ma.colli_pedana,
magaz,
CASE
WHEN do.num_ord IS NOT NULL THEN
SUM(CASE
WHEN do.flag_evaso_prod = 'E' THEN do.qta_evasa_prod
ELSE do.qta_prod END)
OVER (PARTITION BY id, luogo_lavoro, dopp.cod_anag, dopp.cod_prod, dopp.cod_jcom, ma.cod_mart, magaz)
ELSE
SUM(qta_ord)
OVER (PARTITION BY do.num_ord, luogo_lavoro, dopp.cod_anag, dopp.cod_prod, dopp.cod_jcom, ma.cod_mart, magaz)
END
AS qta_pian
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) t
GROUP BY luogo_lavoro, cod_anag, cod_prod, cod_sl, cod_jcom, cod_mart, qta_cnf, colli_pedana, magaz),
TempResult AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS row_number,
*
FROM (SELECT DISTINCT CRP_OF_FabbisognoOre.luogo_lavoro,
@@ -30,30 +46,36 @@ WITH dopp AS (SELECT DISTINCT luogo_lavoro,
rag_soc,
cliente,
citta,
CRP_OF_FabbisognoOre.cod_mart AS cod_prod,
CRP_OF_FabbisognoOre.descrizione AS desc_prod,
CRP_OF_FabbisognoOre.cod_mart AS cod_prod,
CRP_OF_FabbisognoOre.descrizione AS desc_prod,
prodotto,
CRP_OF_FabbisognoOre.qta_ord,
dopp.qta_pian,
CASE
WHEN kg_ord > ISNULL(dopp.qta_pian, 0)
THEN kg_ord - ISNULL(dopp.qta_pian, 0)
ELSE 0 END AS kg_ord,
ISNULL(dopp.qta_pian, 0) AS kg_pian,
WHEN ROUND(kg_ord, 0) > ISNULL(dopp.qta_pian, 0)
THEN ROUND(kg_ord, 0) - ISNULL(dopp.qta_pian, 0)
ELSE 0 END AS kg_ord,
ISNULL(dopp.qta_pian, 0) AS kg_pian,
CASE
WHEN colli_ord > (ISNULL(dopp.qta_pian, 0) / ma.qta_cnf) THEN
colli_ord - (ISNULL(dopp.qta_pian, 0) / ma.qta_cnf)
ELSE 0 END AS colli_ord,
(ISNULL(dopp.qta_pian, 0) / ma.qta_cnf) AS colli_pian,
WHEN colli_ord >
CEILING((ISNULL(dopp.qta_pian, 0) / ISNULL(dopp.qta_cnf, ma.qta_cnf)))
THEN
colli_ord -
CEILING((ISNULL(dopp.qta_pian, 0) / ISNULL(dopp.qta_cnf, ma.qta_cnf)))
ELSE 0 END AS colli_ord,
CEILING(ISNULL(dopp.qta_pian, 0) / ISNULL(dopp.qta_cnf, ma.qta_cnf)) AS colli_pian,
CASE
WHEN pedane_ord >
((ISNULL(dopp.qta_pian, 0) / ma.qta_cnf) / ma.colli_pedana) THEN
((ISNULL(dopp.qta_pian, 0) / ISNULL(dopp.qta_cnf, ma.qta_cnf)) /
ISNULL(dopp.colli_pedana, ma.colli_pedana)) THEN
pedane_ord -
((ISNULL(dopp.qta_pian, 0) / ma.qta_cnf) / ma.colli_pedana)
ELSE 0 END AS pedane_ord,
((ISNULL(dopp.qta_pian, 0) / ma.qta_cnf) / ma.colli_pedana) AS pedane_pian,
ma.qta_cnf,
ma.colli_pedana,
CEILING((ISNULL(dopp.qta_pian, 0) / ISNULL(dopp.qta_cnf, ma.qta_cnf)) /
ISNULL(dopp.colli_pedana, ma.colli_pedana))
ELSE 0 END AS pedane_ord,
CEILING((ISNULL(dopp.qta_pian, 0) / ISNULL(dopp.qta_cnf, ma.qta_cnf)) /
ISNULL(dopp.colli_pedana, ma.colli_pedana)) AS pedane_pian,
ISNULL(dopp.qta_cnf, ma.qta_cnf) AS qta_cnf,
ISNULL(dopp.colli_pedana, ma.colli_pedana) AS colli_pedana,
CRP_OF_FabbisognoOre.unt_mis,
ore_uomo_necessarie *
CASE
@@ -62,7 +84,7 @@ WITH dopp AS (SELECT DISTINCT luogo_lavoro,
(CRP_OF_FabbisognoOre.qta_ord - dopp.qta_pian) /
CRP_OF_FabbisognoOre.qta_ord,
1)
ELSE 0 END AS prod_teorica,
ELSE 0 END AS prod_teorica,
produttivita,
flag_sospeso,
varieta,
@@ -76,11 +98,12 @@ WITH dopp AS (SELECT DISTINCT luogo_lavoro,
AND X.Y.value('(cod_jcom)[1]', 'VARCHAR(100)') = dopp2.cod_jcom
AND CRP_OF_FabbisognoOre.varieta LIKE '%' + dopp2.cod_mart + '%'
AND dopp2.magaz = 1
FOR XML PATH, ROOT) AS magaz,
CAST(CASE WHEN dopp.qta_pian IS NOT NULL THEN 1 ELSE 0 END AS BIT) AS parz,
FOR XML PATH, ROOT) AS magaz,
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 kg_ord - dopp.qta_pian <= 0 THEN 1
ELSE 0 END AS BIT) AS compl
WHEN dopp.qta_pian IS NOT NULL AND ROUND(kg_ord, 0) - dopp.qta_pian <= 0
THEN 1
ELSE 0 END AS BIT) AS compl
FROM (SELECT *, CAST(cod_jcom AS XML) AS cod_jcom_xml
FROM CRP_OF_FabbisognoOre) CRP_OF_FabbisognoOre
INNER JOIN mtb_aart ma ON CRP_OF_FabbisognoOre.cod_mart = ma.cod_mart

View File

@@ -5,7 +5,8 @@ SELECT mtb_aart.cod_mart,
CASE
WHEN jtb_dist_clav_dir.hr_time = 0 THEN 80
ELSE ROUND(jtb_cicl.qta_prod * jtb_cicl.rap_conv_prod * mtb_aart.peso_kg /
(jtb_dist_clav_dir.hr_time / 3600), 0) END AS kgH
(jtb_dist_clav_dir.hr_time / 3600), 0) END AS kgH,
jtb_dist_clav_dir.cod_jfas
FROM jtb_cicl
INNER JOIN jtb_dist_clav_dir
ON jtb_cicl.cod_prod = jtb_dist_clav_dir.cod_prod