You are on page 1of 76

[BUYER_ACTIVE_VW.DEPTID_SETID.

FieldChange]
SetDefault(DEPTID);
[BUYER_ACTIVE_VW.LOCATION_SETID.FieldChange]
SetDefault(LOCATION);
[BUYER_ACTIVE_VW.ORIGIN_PO_SETID.FieldChange]
SetDefault(ORIGIN);
[BUYER_ACTIVE_VW.SHIPTO_SETID.FieldChange]
SetDefault(SHIPTO_ID);
[MMC_ADL_ITM_EMB.MMC_EMBALAGEM_ID.FieldChange]
If %Component = Component.MMC_ADL_ITEMS_GBL Then
SQLExec("SELECT INV_ITEM_WEIGHT from SYSADM.PS_MMC_ADL_EMBALAG WHERE BUSINESS
_UNIT = :1 AND MMC_EMBALAGEM_ID = :2", FetchValue(BUSINESS_UNIT, CurrentRowNumbe
r()), FetchValue(MMC_EMBALAGEM_ID, CurrentRowNumber()), &PESO_EMB);
&PESO_TOTAL = (MMC_ADL_ITEMS.INV_ITEM_WEIGHT * QTY) + &PESO_EMB;
UpdateValue(INV_ITEM_WEIGHT, CurrentRowNumber(), &PESO_TOTAL);
End-If;
[MMC_ADL_ITM_EMB.MMC_EMBALAGEM_ID.SaveEdit]
If %Component = Component.MMC_ADL_ITEMS_GBL Then
For &I = 1 To ActiveRowCount(Scroll.MMC_ADL_ITM_EMB)
SQLExec("SELECT INV_ITEM_WEIGHT from SYSADM.PS_MMC_ADL_EMBALAG WHERE BUSIN
ESS_UNIT = :1 AND MMC_EMBALAGEM_ID = :2", FetchValue(BUSINESS_UNIT, &I), FetchVa
lue(MMC_EMBALAGEM_ID, &I), &PESO_EMB);
&PESO_TOTAL = (MMC_ADL_ITEMS.INV_ITEM_WEIGHT * FetchValue(QTY, &I)) + &PES
O_EMB;
UpdateValue(INV_ITEM_WEIGHT, &I, &PESO_TOTAL);
End-For;
End-If;
[MMC_ADL_ITM_EMB.MMC_EMB_FINALIDADE.RowDelete]
/*******************************************************************************
****************************************
Fabiano Cunha - MMC - 26/08/2008 - Travar manipulao de embalagens de armazem.
********************************************************************************
*************************************/
Local Rowset &rs0, &rs1;
If %Component = Component.MMC_ADL_ITEMS_GBL Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_ADL_ITM_EMB);
If (&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.MMC_EMB_FINALIDADE.Value = "A")
Then
Error "No premitido excluir embalagens do tipo Armazm no plano de peas, apena
s no PAB";

End-If;
End-If;
[MMC_ADL_ITM_EMB.MMC_EMB_FINALIDADE.RowInit]
/*******************************************************************************
****************************************
Fabiano Cunha - MMC - 26/08/2008 - Travar manipulao de embalagens de armazem.
********************************************************************************
*************************************/
Local Rowset &rs0, &rs1;
If %Component = Component.MMC_ADL_ITEMS_GBL Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_ADL_ITM_EMB);
If (&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.MMC_EMB_FINALIDADE.Value = "A")
Then
&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.MMC_EMBALAGEM_ID.Enabled = False
;
&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.QTY.Enabled = False;
&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.UNIT_MEASURE_PACK.Enabled = Fals
e;
&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.MMC_EMB_FINALIDADE.Enabled = Fal
se;
&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.MMC_TIPO_EMBALAGEM.Enabled = Fal
se;
&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.INV_ITEM_WEIGHT.Enabled = False;
&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.UNIT_MEASURE_WT.Enabled = False;
Else
&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.MMC_EMBALAGEM_ID.Enabled = True;
&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.QTY.Enabled = True;
&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.UNIT_MEASURE_PACK.Enabled = True
;
&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.MMC_EMB_FINALIDADE.Enabled = Tru
e;
&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.MMC_TIPO_EMBALAGEM.Enabled = Tru
e;
&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.INV_ITEM_WEIGHT.Enabled = True;
&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.UNIT_MEASURE_WT.Enabled = True;
End-If;
End-If;
[MMC_ADL_ITM_EMB.MMC_EMB_FINALIDADE.SaveEdit]
/*******************************************************************************
****************************************
Fabiano Cunha - MMC - 26/08/2008 - Travar manipulao de embalagens de armazem.
********************************************************************************
*************************************/
/*******************************************************************************
*************************************************Fabiano Cunha - 02/03/2009 - Bl
oqueio para no permitir que exista mais de uma embalagem de linha para o mesmo it
em.
********************************************************************************
************************************************/
Local Rowset &rs0, &rs1;

If %Component = Component.MMC_ADL_ITEMS_GBL Then


&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_ADL_ITM_EMB);
If (&rs1(CurrentRowNumber(1)).IsNew) And
(&rs1(CurrentRowNumber(1)).MMC_ADL_ITM_EMB.MMC_EMB_FINALIDADE.Value = "
A") And
(&rs0(1).MMC_ADL_ITEMS.ITEM_ORIGIN_BBL.Value = 0) Then
Error "No premitido adicionar embalagens do tipo Armazem no plano de peas, a
penas no PAB";
End-If;
&qtdeA = 0;
&qtdeP = 0;
For &i = 1 To &rs1.ActiveRowCount
If (&rs1(&i).MMC_ADL_ITM_EMB.MMC_EMB_FINALIDADE.Value = "L") And
(&rs1(&i).MMC_ADL_ITM_EMB.MMC_TIPO_EMBALAGEM.Value = "A") Then
&qtdeA = &qtdeA + 1;
End-If;
If &qtdeA > 1 Then
Error ("Existe mais de uma embalagem de linha Auxiliar para o item.");
End-If;
If (&rs1(&i).MMC_ADL_ITM_EMB.MMC_EMB_FINALIDADE.Value = "L") And
(&rs1(&i).MMC_ADL_ITM_EMB.MMC_TIPO_EMBALAGEM.Value = "P") Then
&qtdeP = &qtdeP + 1;
End-If;
If &qtdeP > 1 Then
Error ("Existe mais de uma embalagem de linha Principal para o item.");
End-If;
End-For;
End-If;
[MMC_ADL_ITM_EMB.QTY.FieldChange]
If %Component = Component.MMC_ADL_ITEMS_GBL Then
SQLExec("SELECT INV_ITEM_WEIGHT from SYSADM.PS_MMC_ADL_EMBALAG WHERE BUSINESS
_UNIT = :1 AND MMC_EMBALAGEM_ID = :2", FetchValue(BUSINESS_UNIT, CurrentRowNumbe
r()), FetchValue(MMC_EMBALAGEM_ID, CurrentRowNumber()), &PESO_EMB);
&PESO_TOTAL = (MMC_ADL_ITEMS.INV_ITEM_WEIGHT * QTY) + &PESO_EMB;
UpdateValue(INV_ITEM_WEIGHT, CurrentRowNumber(), &PESO_TOTAL);
End-If;
[MMC_ADL_ITM_EMB.UNIT_MEASURE_WT.FieldDefault]
If %Component = Component.MMC_ADL_ITEMS_GBL Then
If None(UNIT_MEASURE_WT) Then
UNIT_MEASURE_WT = "KG";
End-If;
End-If;
[MMC_PAB_EMBITVW.INV_ITEM_ID.SaveEdit]
/*******************************************************************************

**************************************************
Fabiano Cunha - MMC - SDS.2772 - Verificar se todos os itens possue a embalagem
principal cadastrada.
********************************************************************************
*************************************************/
/* A pedido do Fred e da Maria Carolina, foi desativado esta funo.
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB_EMB Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_EMBITVW);
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_EMB);
&item = &rs1(CurrentRowNumber()).MMC_PAB_EMBITVW.INV_ITEM_ID.Value;
&i = 1;
&existeEmb = "N";
For &i = 1 To &rs2.ActiveRowCount
If (&existeEmb = "N") And
(&rs2(&i).MMC_PAB_EMB.MMC_TIPO_EMBALAGEM.Value = "P") Then
&existeEmb = "Y";
End-If;
End-For;
If &existeEmb = "N" Then
Error "O item: " | &item | ", linha: " | CurrentRowNumber() | " no possue e
mbalagem principal definida";
End-If;
End-If;
*/
[MMC_PAB_EMBITVW.MMC_LOT_MINIMO.SaveEdit]
/*******************************************************************************
**************************************************
Fabiano Cunha - MMC - SDS.2772 - Verificar se as quantidades informadas para o i
tem multiplo do lote minimo
********************************************************************************
*************************************************/
Local Rowset &rs0, &rs1, &rs2;
/*******************************************************************************
************************************************
Fabiano cunha - Convertar qtdes de peas por embalagem
********************************************************************************
************************************************/
Function ConvertQtdeEmb(&setid, &item, &undPadrao, &undPAB, &txPAB, &undEmb, &qt
yEmb) Returns number ;
&qtde = 0;
SQLExec("select CONVERSION_RATE from SYSADM.PS_inv_item_uom where setid = :1
AND INV_ITEM_ID =:2 AND UNIT_OF_MEASURE = :3", &rs1(CurrentRowNumber()).MMC_PAB_
EMBITVW.SETID.Value, &item, &rs2(&i).MMC_PAB_EMB.UNIT_MEASURE_PACK.Value, &txcon
verte);
If None(&txconverte) Then
&taxa = 0;
Else

&taxa = &txconverte;
End-If;
/*converteu a qtde da embalagem para a unidade padro da pea */
&qtde = &qtyEmb * &taxa;
If (&undPAB <> &undPadrao) Then
&taxa = &txPAB;
&qtde = &qtde / &taxa;
End-If;
Return &qtde;
End-Function;

If %Component = Component.MMC_PAB_EMB Then


/*
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_EMBITVW);
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_EMB);
&undPAB = &rs1(CurrentRowNumber()).MMC_PAB_EMBITVW.UNIT_OF_MEASURE.Value;
&item = &rs1(CurrentRowNumber()).MMC_PAB_EMBITVW.INV_ITEM_ID.Value;
SQLExec("select UNIT_MEASURE_STD from SYSADM.PS_MASTER_ITEM_TBL where setid =
:1 and inv_item_id = :2", &rs1(CurrentRowNumber()).MMC_PAB_EMBITVW.SETID.Value,
&item, &undPadrao);
If (&undBase <> &undPadrao) And
(&txconverte = 0) Then
Error "O item: " | &item | " , linha: " | CurrentRowNumber() | ", possui u
ma UM de compra diferente da UM padro e no possui taxa de converso, favor reprovar
esta reviso para que o comprador possar colocar a taxa de convero para o item";
Else
&qtdeEmbPrincipal = 0;
&qtdeEmbAuxiliar = 0;
For &i = 1 To &rs2.ActiveRowCount
If &rs2(&i).MMC_PAB_EMB.MMC_TIPO_EMBALAGEM.Value = "P" Then
&qtdeEmbPrincipal = &qtdeEmbPrincipal + ConvertQtdeEmb(&rs1(CurrentR
owNumber()).MMC_PAB_EMBITVW.SETID.Value, &item, &undPadrao, &undPAB, &rs1(Curren
tRowNumber()).MMC_PAB_EMBITVW.CONVERSION_RATE.Value, &rs2(&i).MMC_PAB_EMB.UNIT_M
EASURE_PACK.Value, &rs2(&i).MMC_PAB_EMB.QTY.Value);
End-If;
If &rs2(&i).MMC_PAB_EMB.MMC_TIPO_EMBALAGEM.Value = "A" Then
&qtdeEmbAuxiliar = &qtdeEmbAuxiliar + &rs2(&i).MMC_PAB_EMB.QTY.Value
;
End-If;
If None(&rs2(&i).MMC_PAB_EMB.MMC_EMBALAGEM_ID.Value) Then
&existe_linha_sem_Emb = "Y";
End-If;
End-For;
If None(&qtdeEmbAuxiliar) Then
&qtdeEmbAuxiliar = 1;

End-If;
If None(&existe_linha_sem_Emb) Then
&qtdeTotal = &qtdeEmbPrincipal * &qtdeEmbAuxiliar;
If (&qtdeTotal >= &rs1(CurrentRowNumber()).MMC_PAB_EMBITVW.MMC_LOT_MINI
MO.Value) Then
If Mod(&qtdeTotal, &rs1(CurrentRowNumber()).MMC_PAB_EMBITVW.MMC_LOT_
MINIMO.Value) <> 0 Then
Error "O item: " | &item | " , linha: " | CurrentRowNumber() | ",
possui embalgens que sua(s) capacidade(s) de transportes (" | &qtdeTotal | ") no
multipo do lote mnimo (" | &rs1(CurrentRowNumber()).MMC_PAB_EMBITVW.MMC_LOT_MIN
IMO.Value | ") de compra";
End-If;
Else
If Mod(&rs1(CurrentRowNumber()).MMC_PAB_EMBITVW.MMC_LOT_MINIMO.Value
, &qtdeTotal) <> 0 Then
Error "O item: " | &item | " , linha: " | CurrentRowNumber() | ",
possui embalgens que sua(s) capacidade(s) de transportes (" | &qtdeTotal | ") no
multipo do lote mnimo (" | &rs1(CurrentRowNumber()).MMC_PAB_EMBITVW.MMC_LOT_MIN
IMO.Value | ") de compra";
End-If
End-If;
End-If;
End-If;
*/
End-If;
[MMC_PAB_HDR.ADDRESS_SEQ_NUM.FieldChange]
/*******************************************************************************
***************************
Ronald Costa - MMC - 12/08/2008 - SDS.2772 - Preenchimento dos dados do forneced
or.
********************************************************************************
*************************/

Declare Function preencheDadosPAB PeopleCode MMC_PAB_WRK.FUNCLIB SavePostChange;


If %Component = Component.MMC_PAB Then
preencheDadosPAB(MMC_PAB_HDR.ADDRESS_SEQ_NUM.Value, MMC_PAB_WRK.SETID.Value,
MMC_PAB_HDR.VENDOR_ID.Value);
End-If;
[MMC_PAB_HDR.ADDRESS_SEQ_NUM.RowInit]
/*******************************************************************************
***************************
Ronald Costa - MMC - 12/08/2008 - SDS.2772 - Preenchimento dos dados do forneced
or.
********************************************************************************
*************************/
/***********mmcb.2772.sn**************/

Declare Function preencheDadosPAB PeopleCode MMC_PAB_WRK.FUNCLIB SavePostChange;


If %Component = Component.MMC_PAB Then
preencheDadosPAB(MMC_PAB_HDR.ADDRESS_SEQ_NUM.Value, MMC_PAB_WRK.SETID.Value,
MMC_PAB_HDR.VENDOR_ID.Value);
End-If;
/**********mmcb.2772.en***************/
[MMC_PAB_HDR.MMC_ALTERA_OC.FieldChange]
/*******************************************************************************
*****
Augusto Vilarinho Neto - MMC - 03/12/2013 - MMCB.SDS4784 Marca todos os itens para alterao.
********************************************************************************
****/
Local
Local
Local
Local

Rowset &LEVEL0, &LEVEL1, &LEVEL2;


Row &LEVEL0_ROW, &LEVEL1_ROW, &LEVEL2_ROW;
Record &RECORD;
Field &FIELD;

If %Page = Page.MMC_PAB_HDR Then


If (MMC_ALTERA_OC = "Y") Then
&LEVEL0 = GetLevel0();
&LEVEL0_ROW = &LEVEL0(1);
&LEVEL1 = &LEVEL0_ROW.GetRowset(Scroll.MMC_PAB_LN_M_VW);
&LEVEL1_ROW = &LEVEL1(1);
&LEVEL2 = &LEVEL1_ROW.GetRowset(Scroll.MMC_PAB_ITM_VW);
For &I = 1 To &LEVEL2.ActiveRowCount
&LEVEL2_ROW = &LEVEL2(&I);
&RECORD = &LEVEL2_ROW.MMC_PAB_ITM_VW;
&FIELD = &RECORD.MMC_ALTERA_OC;
&FIELD.Value = "Y";
End-For;
End-If;
End-If;
[MMC_PAB_HDR.MMC_CONT_COMERCIAL.SaveEdit]
If %Component = Component.MMC_PAB Then
If None(MMC_CONT_COMERCIAL) Then
Error "Contato comercial deve ser preenchido";
End-If;
End-If;
[MMC_PAB_HDR.MMC_CONT_FISCAL.SaveEdit]
If %Component = Component.MMC_PAB Then

If None(MMC_CONT_FISCAL) Then
Error "Contato fical deve ser preenchido";
End-If;
End-If;
[MMC_PAB_HDR.MMC_PAB_ID.RowInit]
/*******************************************************************************
**********
* Itamar Junior - MMC - 06/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Verificando se existe algum item que esteja com a data de vencimento menor que
a atual
* no PAB que est sendo consultado. Se existir, ento uma mensagem apresentada na te
la
* para o usurio.
********************************************************************************
**********/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
/************************************* mmcb.sds3089.sn *************************
***********/
If %Component = "MMC_PAB" Then
&existeItemExpirado = 0;
/*** Verificando se existem algum item no PAB que esteja expirado ***/
/****************** SDS.3439.so ***************
SQLExec("SELECT COUNT(*) FROM SYSADM.PS_MMC_PAB_LN A, SYSADM.PS_MMC_PAB_ITEM
B WHERE A.BUSINESS_UNIT = :1 AND A.MMC_PAB_ID = :2 AND A.REVISION_NUMBER = :3 AN
D B.BUSINESS_UNIT = A.BUSINESS_UNIT AND B.MMC_PAB_ID = A.MMC_PAB_ID AND B.EFFDT
= A.EFFDT AND B.DATE_OBSOLETE <= SYSDATE AND B.STATUS = 'A'", BUSINESS_UNIT, MMC
_PAB_ID, REVISION_NUMBER, &existeItemExpirado);
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
SQLExec("SELECT COUNT(*) FROM SYSADM.PS_MMC_PAB_LN_M_VW A, SYSADM.PS_MMC_PAB_
ITEM B WHERE A.BUSINESS_UNIT = :1 AND A.MMC_PAB_ID = :2 AND A.REVISION_NUMBER =
:3 AND B.BUSINESS_UNIT = A.BUSINESS_UNIT AND B.MMC_PAB_ID = A.MMC_PAB_ID AND B.E
FFDT = A.EFFDT AND B.DATE_OBSOLETE <= SYSDATE AND B.STATUS = 'A'", BUSINESS_UNIT
, MMC_PAB_ID, REVISION_NUMBER, &existeItemExpirado);
/****************** SDS.3439.en ***************/
If &existeItemExpirado = 1 Then
WinMessage("Existe " | &existeItemExpirado | " item neste PAB com a data d
e validade vencida.");
End-If;
If &existeItemExpirado > 1 Then
WinMessage("Existem " | &existeItemExpirado | " itens neste PAB com a data
de validade vencida.");
End-If;
End-If;
/************************************* mmcb.sds3089.en *************************

***********/
[MMC_PAB_HDR.MMC_PAB_ID.SaveEdit]
/*******************************************************************************
***************************
Fabiano Cunha - MMC - 19/09/2008 - SDS. 2772 - Verificar se no existe outro pab v
igente ou aberto para o fornecedor e local.
********************************************************************************
*************************/
/*******************************************************************************
**************************
* Vinicius Montijo Favero - MMC - 09/04/2015 - MMC.HD23620
*
* Ajustar tela do pab para que no faa a validao de fornecedor existente para quando
for cancelar o *
* PAB
*
********************************************************************************
*************************/
If %Component = Component.MMC_PAB Then
SQLExec("SELECT 'X' FROM SYSADM.PS_MMC_PAB_HDR WHERE BUSINESS_UNIT = :1 AND M
MC_PAB_ID <> :2 AND VENDOR_ID = :3 AND ADDRESS_SEQ_NUM = :4 AND MMC_ST_PAB <> 'C
'", BUSINESS_UNIT, MMC_PAB_ID, VENDOR_ID, ADDRESS_SEQ_NUM, &EXISTE);
/*If All(&EXISTE) Then*/ /*MMC.HD236207.LO*/
If All(&EXISTE) And
MMC_ST_PAB <> "C" Then /*MMC.HD236207.LN*/
Error "J existe um PAB Vigente ou Aberto para o fornecedor informado";
End-If;
End-If;
[MMC_PAB_HDR.MMC_PAB_ID.SavePreChange]
/*******************************************************************************
***************************
Fabiano Cunha - MMC - 12/08/2008 - SDS. 2772 - Gerao da numerao do PAB.
********************************************************************************
*************************/
Declare Function mmc_numeracao_id PeopleCode MMC_NUMERACAO.MMC_NUMERACAO_ID Save
PostChange;
If %Component = Component.MMC_PAB Then
If MMC_PAB_ID = "NEXT" Then
MMC_PAB_ID = mmc_numeracao_id(9);
End-If;
End-If;
[MMC_PAB_HDR.VENDOR_ID.FieldChange]
/*******************************************************************************
**********
* Ronald Costa - MMC - DATA - mmcb.2772 -Limpar campos na Tela
********************************************************************************
**********/
/*******************************************************************************
**********
* Itamar Junior - MMC - 06/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico -

MRPs
* Buscando o local do fornecedor para a impresso no PAB
********************************************************************************
**********/
Declare Function BUSCA_SETID PeopleCode MMC_BU_SETID.SETID SavePreChange; /* mmc
b.sds3089.ln */

/***********mmcb.2772.sn**************/
If %Component = Component.MMC_PAB Then
MMC_PAB_HDR.ADDRESS_SEQ_NUM.Value = "";
MMC_PAB_WRK.ADDRESS1.Value = "";
MMC_PAB_WRK.COUNTY.Value = "";
MMC_PAB_WRK.STATE.Value = "";
MMC_PAB_WRK.CGC_BRL.Value = "";
MMC_PAB_WRK.CITY.Value = "";
MMC_PAB_WRK.IE_BRL.Value = "";
/************************************* mmcb.sds3089.sn **********************
**************/
/*** Buscando o local do fornecedor ***/
&SETID_GERAL = BUSCA_SETID();
SQLExec("SELECT VNDR_LOC FROM SYSADM.PS_VENDOR_LOC A WHERE A.SETID = :1 AND A
.VENDOR_ID = :2 AND A.EFF_STATUS = 'A' AND EFFDT = (SELECT MAX(B.EFFDT) FROM SYS
ADM.PS_VENDOR_LOC B WHERE B.SETID = A.SETID AND B.VENDOR_ID = A.VENDOR_ID AND B.
EFF_STATUS = 'A')", &SETID_GERAL, VENDOR_ID, &localForn);
MMC_PAB_WRK.VNDR_LOC = &localForn;
/************************************* mmcb.sds3089.en **********************
**************/
End-If;
/**********mmcb.2772.en***************/
[MMC_PAB_HDR.VENDOR_ID.RowInit]
/*******************************************************************************
**********
Fabiano Cunha - MMC - SDS.2772 ********************************************************************************
**********/
/*******************************************************************************
**********
* Itamar Junior - MMC - 06/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Buscando o local do fornecedor para a impresso no PAB
********************************************************************************
**********/
/*******************************************************************************
**********
* Lucas Porto (Enc Bleno Sampaio) - MMC - 12/04/2011 - mmcb.hd113938
* Quando tenta-se inativar um endereo de fornecedor no cadsatro, acusa erro de PA
B usando
* este endereo, mas a tela de PAB no permite alterar este endereo.
********************************************************************************

**********/
Declare Function BUSCA_SETID PeopleCode MMC_BU_SETID.SETID SavePreChange; /* mmc
b.sds3089.ln */
If %Component = Component.MMC_PAB And
%Mode <> "A" Then
Gray(VENDOR_ID);
/*Gray(ADDRESS_SEQ_NUM);*/ /*mmcb.hd113938.lo*/
Gray(SHIPTO_ID);
/************************************* mmcb.sds3089.sn **********************
**************/
/*** Buscando o local do fornecedor ***/
&SETID_GERAL = BUSCA_SETID();
SQLExec("SELECT VNDR_LOC FROM SYSADM.PS_VENDOR_LOC A WHERE A.SETID = :1 AND A
.VENDOR_ID = :2 AND A.EFF_STATUS = 'A' AND EFFDT = (SELECT MAX(B.EFFDT) FROM SYS
ADM.PS_VENDOR_LOC B WHERE B.SETID = A.SETID AND B.VENDOR_ID = A.VENDOR_ID AND B.
EFF_STATUS = 'A')", &SETID_GERAL, VENDOR_ID, &localForn);
MMC_PAB_WRK.VNDR_LOC = &localForn;
/************************************* mmcb.sds3089.en **********************
**************/
End-If;
[MMC_PAB_HDR.VENDOR_ID.SaveEdit]
/*******************************************************************************
**********************************
Fabiano Cunha - MMC - SDS.2772 ********************************************************************************
*********************************/
If %Component = Component.MMC_PAB Then
Gray(VENDOR_ID);
Gray(ADDRESS_SEQ_NUM);
Gray(SHIPTO_ID);
End-If;
[MMC_PAB_ITEM.BUSINESS_UNIT.SavePreChange]
/*******************************************************************************
**********
* Itamar Junior - MMC - 02/03/2010 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Retirando um item inativo do PAB quando for criada e salva uma nova reviso.
* No deve acontecer nada com um item inativado em um reviso j existente.
********************************************************************************
**********/
/*Local Rowset &rs0, &rs1, &rs2;*/
/************************************* mmcb.sds3089.sn *************************
***********/
/*If %Component = "MMC_PAB" Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
For &i = 1 To &rs2.ActiveRowCount*/

/*** Excluindo automaticamente os itens inativos da nova reviso ***/


/*
If &rs2(&i).MMC_PAB_ITEM.STATUS.Value = "I" Then
&itemInativo = "TRUE";*/
/*** Verificando se a atual reviso j existe no banco de dados, seno existir o item
inativo no pode ser bloqueado ***/
/*
SQLExec("SELECT 'FALSE' FROM SYSADM.PS_MMC_PAB_LN WHERE BUSINESS_UNIT
= :1 and MMC_PAB_ID = :2 AND REVISION_NUMBER = :3", BUSINESS_UNIT, MMC_PAB_ID,
MMC_PAB_LN.REVISION_NUMBER, &itemInativo);*/
/*** Se a reviso existir no banco, ento ela j foi adicionada e o item inativo no dev
e ser excludo ***/
/*
If &itemInativo <> "FALSE" Then*/
/*** Excluso apenas no grid, pois a reviso ainda no foi salva, logo podemos apenas
excluir o item da tela ***/
/*
RowFlush(Record.MMC_PAB_ITEM);
End-If;
End-If
End-For;
End-If;*/
/************************************* mmcb.sds3089.en *************************
***********/
[MMC_PAB_ITEM.CONVERSION_RATE.SaveEdit]
/*******************************************************************************
*************************************************
Fabiano Cunha - MMC - 18/08/2008 - SDS.2772 - verificar se era preciso informar
uma taxa de conversao
********************************************************************************
************************************************/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
/*******************************************************************************
*********
* Rafael Nascimento (Enc. Bleno Sampaio) - MMCB - 25/02/2011 - mmcb.hd110730
*
* Ajuste para salvar taxa de converso como 1 ao invs de 0, pedido do depto process
o *
********************************************************************************
*********/
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
/****************** SDS.3439.so ***************
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
/****************** SDS.3439.en ***************/

&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITM_VW);
If &rs2(CurrentRowNumber()).MMC_PAB_ITM_VW.FLAG.Value = "Y" Then
If (&rs2(CurrentRowNumber()).MMC_PAB_ITM_VW.CONVERSION_RATE.Enabled) And
/*(&rs2(CurrentRowNumber()).MMC_PAB_ITM_VW.CONVERSION_RATE.Value = 0
) */ /*mmcb.hd110730.lo*/
(&rs2(CurrentRowNumber()).MMC_PAB_ITM_VW.CONVERSION_RATE.Value = 0)
/*mmcb.hd110730.ln*/ Then
/****************** SDS.3439.so ***************
Error " preciso informar a taxa de converso para o item: (" | &rs2(Curren
tRowNumber()).MMC_PAB_ITM_VW.INV_ITEM_ID.Value | "). Reviso: (" | &rs1(CurrentRow
Number(1)).MMC_PAB_LN.EFFDT.Value | "). Favor verificar!";
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
Error " preciso informar a taxa de converso para o item: (" | &rs2(Curren
tRowNumber()).MMC_PAB_ITM_VW.INV_ITEM_ID.Value | "). Reviso: (" | &rs1(CurrentRow
Number(1)).MMC_PAB_LN_M_VW.EFFDT.Value | "). Favor verificar!";
/****************** SDS.3439.en ***************/
End-If;
End-If;
/*******************************mmcb.hd110730.sn*****************************
**/
If (&rs2(CurrentRowNumber()).MMC_PAB_ITM_VW.CONVERSION_RATE.Value = 0) Then
&rs2(CurrentRowNumber()).MMC_PAB_ITM_VW.CONVERSION_RATE.Value = 1;
End-If;
/*******************************mmcb.hd110730.en*****************************
**/
End-If;
[MMC_PAB_ITEM.DATE_IN_EFFECT.FieldChange]
/*******************************************************************************
*************************************************
Ronald Costa - MMC - 19/08/2008 - SDS.2772 - Alterao da data de Validade. E esta n
ao pode ser menor que a data da reviso.
********************************************************************************
************************************************/
/*******************************************************************************
*************************************************
* Itamar Junior - MMC - 07/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Conforme combinado com a Carol e Ercilio, agora o sistema no ir somar 100 anos d
ata atual, mas colocar fixo a data 31/12/9999
********************************************************************************
************************************************/
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB Then
/************************************* mmcb.sds3089.so **********************
**************/
/*&data = AddToDate(DATE_IN_EFFECT, 100, 0, 0);
MMC_PAB_ITEM.DATE_OBSOLETE.Value = &data;*/
/************************************* mmcb.sds3089.eo **********************
**************/

/************************************* mmcb.sds3089.sn **********************


**************/
MMC_PAB_ITEM.DATE_OBSOLETE.Value = "9999-12-31";
/************************************* mmcb.sds3089.en **********************
**************/
End-If;
[MMC_PAB_ITEM.DATE_OBSOLETE.FieldChange]
/*******************************************************************************
*************************************************
Fabiano Cunha - MMC - 25/08/2008 - SDS.2772 - Alterao da data de Validade.
********************************************************************************
************************************************/
If %Component = Component.MMC_PAB Then
If (DATE_IN_EFFECT >= MMC_PAB_ITEM.DATE_OBSOLETE.Value) Then
Error "A data de Validade deve ser maior que a data de Vigncia";
End-If;
End-If;
[MMC_PAB_ITEM.DATE_OBSOLETE.SaveEdit]
/*******************************************************************************
*************************************************
Fabiano Cunha - MMC - 25/08/2008 - SDS.2772 - Alterao da data de Validade.
********************************************************************************
************************************************/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
/****************** SDS.3439.so ***************
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
/****************** SDS.3439.en ***************/
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
If ((&rs2(CurrentRowNumber()).MMC_PAB_ITEM.DATE_IN_EFFECT.Value) >= &rs2(Curr
entRowNumber()).MMC_PAB_ITEM.DATE_OBSOLETE.Value) Then
/****************** SDS.3439.so ***************
Error "A data de Validade do item (" | &rs2(CurrentRowNumber()).MMC_PAB_IT
EM.INV_ITEM_ID.Value | "), reviso: " | &rs1(CurrentRowNumber(1)).MMC_PAB_LN.EFFDT
.Value | " deve ser maior que a data de Vigncia.";

******************* SDS.3439.eo ***************/


/****************** SDS.3439.sn ***************/
Error "A data de Validade do item (" | &rs2(CurrentRowNumber()).MMC_PAB_IT
EM.INV_ITEM_ID.Value | "), reviso: " | &rs1(CurrentRowNumber(1)).MMC_PAB_LN_M_VW.
EFFDT.Value | " deve ser maior que a data de Vigncia.";
/****************** SDS.3439.en ***************/
End-If;
End-If;
[MMC_PAB_ITEM.INV_ITEM_ID.FieldChange]
/********************************************************************
Ronald Costa - MMC - 20/08/2008 - SDS.2772 - Buscar NCM
*********************************************************************/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
Local Rowset &rws0, &rws1, &rws2;
/***********mmcb.2772.sn**************/
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
/****************** SDS.3439.so ***************
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
/****************** SDS.3439.en ***************/
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
SQLExec("SELECT A.TAX_CLASS_BRL FROM SYSADM.PS_INV_ITEMS A, SYSADM.PS_SET_CNT
RL_GROUP G_E WHERE A.INV_ITEM_ID =:1 AND A.SETID = G_E.SETID AND A.EFFDT =(SELEC
T MAX (A_ED.EFFDT)FROM PS_INV_ITEMS A_ED WHERE A.SETID = A_ED.SETID AND A.INV_IT
EM_ID = A_ED.INV_ITEM_ID) AND G_E.SETCNTRLVALUE =:2 AND G_E.REC_GROUP_ID = (SELE
CT REC_GROUP_ID FROM SYSADM.PS_REC_GROUP_REC G_EE WHERE G_EE.RECNAME = 'VENDOR')
", &rs2(CurrentRowNumber()).MMC_PAB_ITEM.INV_ITEM_ID.Value, MMC_PAB_HDR.BUSINESS
_UNIT, &NCM);
If &rs2(CurrentRowNumber()).MMC_PAB_ITEM.TAX_CLASS_BRL.Value <> &NCM Then
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.MMC_FLAG_APROV.Value = "N";
End-If;
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.TAX_CLASS_BRL.Value = &NCM;
End-If;

/***********mmcb.2772.en**************/
[MMC_PAB_ITEM.INV_ITEM_ID.RowInit]
/*******************************************************************************
**********
* Itamar Junior - MMC - 06/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Verificando se existe algum item que esteja com a data de vencimento menor que
a atual
* no PAB que est sendo consultado. Se existir, ento o campo item deve ficar em neg
rito
********************************************************************************
**********/
/************************************* mmcb.sds3089.sn *************************
***********/
If %Component = "MMC_PAB" Then
&existeItemExpirado = "FALSE";
/*** Verificando se existem algum item no PAB que esteja expirado ***/
SQLExec("SELECT 'TRUE' FROM SYSADM.PS_MMC_PAB_ITEM WHERE BUSINESS_UNIT = :1 A
ND MMC_PAB_ID = :2 AND LINE_NBR = :3 AND INV_ITEM_ID = :4 AND EFFDT = TO_DATE(:5
,'YYYY-MM-DD') AND DATE_OBSOLETE <= SYSDATE AND STATUS = 'A'", BUSINESS_UNIT, MM
C_PAB_ID, LINE_NBR, INV_ITEM_ID, EFFDT, &existeItemExpirado);
If &existeItemExpirado = "TRUE" Then
MMC_PAB_ITEM.INV_ITEM_ID.Style = "STRONG";
End-If;
End-If;
/************************************* mmcb.sds3089.en *************************
***********/
[MMC_PAB_ITEM.INV_ITEM_ID.SavePostChange]
/*******************************************************************************
**********
* Itamar Junior - MMC - 06/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Verificando se existe algum item que esteja com a data de vencimento menor que
a atual
* no PAB que est sendo consultado. Se existir, ento o campo item deve ficar em neg
rito
********************************************************************************
**********/
/************************************* mmcb.sds3089.sn *************************
***********/
If %Component = "MMC_PAB" And
STATUS <> "I" Then
&existeItemExpirado = "FALSE";
/*** Verificando se existem algum item no PAB que esteja expirado ***/
SQLExec("SELECT 'TRUE' FROM DUAL WHERE SYSDATE >= TO_DATE(:1,'YYYY-MM-DD')",
DATE_OBSOLETE, &existeItemExpirado);
If &existeItemExpirado = "TRUE" Then

SQLExec("UPDATE SYSADM.PS_MMC_PAB_ITEM SET COMMENTS_254 = :1 WHERE BUSINES


S_UNIT = :2 AND MMC_PAB_ID = :3 AND INV_ITEM_ID = :4", "Item Vencido", BUSINESS_
UNIT, MMC_PAB_ID, INV_ITEM_ID);
COMMENTS_254 = "Item Vencido";
MMC_PAB_ITEM.INV_ITEM_ID.Style = "STRONG";
End-If;
End-If;
/************************************* mmcb.sds3089.en *************************
***********/
[MMC_PAB_ITEM.LEAD_TIME.SaveEdit]
/*******************************************************************************
**********
* Itamar Junior - MMC - 06/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Verificando se o lead time do item foi preenchido, quando o campo estiver ativ
o.
********************************************************************************
**********/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
/****************** SDS.3439.so ***************
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
/****************** SDS.3439.en ***************/
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
If &rs2(CurrentRowNumber()).MMC_PAB_ITEM.MMC_FLG_LEADTIME.Value = "N" Then
If (&rs2(CurrentRowNumber()).MMC_PAB_ITEM.LEAD_TIME.Enabled) And
(&rs2(CurrentRowNumber()).MMC_PAB_ITEM.LEAD_TIME.Value = 0) Then
/****************** SDS.3439.so ***************
Error " preciso informar o valor de lead time para o item: (" | &rs2(Cur
rentRowNumber()).MMC_PAB_ITEM.INV_ITEM_ID.Value | "). Reviso: (" | &rs1(CurrentRo
wNumber(1)).MMC_PAB_LN.EFFDT.Value | "). Favor verificar!";
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
Error " preciso informar o valor de lead time para o item: (" | &rs2(Cur
rentRowNumber()).MMC_PAB_ITEM.INV_ITEM_ID.Value | "). Reviso: (" | &rs1(CurrentRo
wNumber(1)).MMC_PAB_LN_M_VW.EFFDT.Value | "). Favor verificar!";
/****************** SDS.3439.en ***************/
End-If;

End-If;
End-If;
[MMC_PAB_ITEM.LINE_NBR.RowInit]
If %Component = Component.MMC_PAB Then
If None(LINE_NBR) Then
LINE_NBR = 1;
End-If;
End-If;
[MMC_PAB_ITEM.LINE_NBR.RowInsert]
/*******************************************************************************
*************************************************
Fabiano Cunha - MMC - SDS.2772 - AO INCLUIR um novo item dever gerar a numeracao
da linha
********************************************************************************
************************************************/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
/****************** SDS.3439.so ***************
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
/****************** SDS.3439.en ***************/
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
If (((&rs2(CurrentRowNumber(2)).MMC_PAB_ITEM.LINE_NBR.Value = 1) Or
None(&rs2(CurrentRowNumber(2)).MMC_PAB_ITEM.LINE_NBR.Value)) And
None(&rs2(CurrentRowNumber(2)).MMC_PAB_ITEM.INV_ITEM_ID.Value)) Then
&valor = 0;
For &i = 1 To &rs2.ActiveRowCount
If &rs2(&i).MMC_PAB_ITEM.LINE_NBR.Value > &valor Then
&valor = &rs2(&i).MMC_PAB_ITEM.LINE_NBR.Value;
End-If;
End-For;
&valor = &valor + 1;
&rs2(CurrentRowNumber(2)).MMC_PAB_ITEM.LINE_NBR.Value = &valor;
End-If;
End-If;

[MMC_PAB_ITEM.MMC_FLAG_APROV.RowInit]
/*******************************************************************************
*************************************************
Fabiano Cunha - MMC - SDS.2772 - Ao copiar uma reviso do PAB, dever voltar o flag
de aprovao de NCM para N, pois pode ser revisto o NCM.
********************************************************************************
************************************************/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
/****************** SDS.3439.so ***************
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
/****************** SDS.3439.en ***************/
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
/* apenas pode analisar alteracao de preco se a revisao nao estiver aprovada
ou cancelada */
If (&rs2(CurrentRowNumber(2)).IsNew Or
%Mode = "A") Then
&rs2(CurrentRowNumber(2)).MMC_PAB_ITEM.MMC_FLAG_APROV.Value = "N";
End-If;
End-If;
[MMC_PAB_ITEM.MMC_FLAG_APROV.SavePreChange]
/*******************************************************************************
**********
* Itamar Junior - MMC - 06/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Se a NCM for alterada, ento o flag de aprovao dever ser alterado de Y para N
* para que esta estarao seja aprovada pelo fiscal
********************************************************************************
**********/
Declare Function BUSCA_SETID PeopleCode MMC_BU_SETID.SETID SavePreChange;
/************************************* mmcb.sds3089.sn *************************
***********/
&SETID = BUSCA_SETID();
If %Component = "MMC_PAB" Then
SQLExec("SELECT 'TRUE' FROM SYSADM.PS_MMC_PAB_ITEM A WHERE A.BUSINESS_UNIT =
:1 AND A.MMC_PAB_ID = :2 AND A.LINE_NBR = :3 AND TAX_CLASS_BRL <> :4 AND A.EFFDT
= (SELECT MAX(B.EFFDT) FROM SYSADM.PS_MMC_PAB_ITEM B WHERE B.BUSINESS_UNIT = A.

BUSINESS_UNIT AND B.MMC_PAB_ID = A.MMC_PAB_ID AND B.LINE_NBR = A.LINE_NBR)", BUS


INESS_UNIT, MMC_PAB_ID, LINE_NBR, TAX_CLASS_BRL, &alterou);
SQLExec("SELECT 'TRUE' FROM SYSADM.PS_INV_ITEMS A WHERE A.EFFDT = ( SELECT MA
X(B.EFFDT) FROM SYSADM.PS_INV_ITEMS B WHERE B.SETID = A.SETID AND B.INV_ITEM_ID
= A.INV_ITEM_ID ) AND A.SETID = :1 AND A.INV_ITEM_ID = :2 AND A.TAX_CLASS_BRL <>
:3", &SETID, INV_ITEM_ID, TAX_CLASS_BRL, &alterouCad);
If All(&alterou) Or
All(&alterouCad) Then
MMC_PAB_ITEM.MMC_FLAG_APROV.Value = "N";
Else
MMC_PAB_ITEM.MMC_FLAG_APROV.Value = "Y";
End-If;
End-If;
/************************************* mmcb.sds3089.en *************************
***********/
[MMC_PAB_ITEM.MMC_FLG_LEADTIME.FieldChange]
/*******************************************************************************
*************************************************
Ronald Costa - MMC - 18/08/2008 - SDS.2772 - Atribuio do campo lead Time
********************************************************************************
************************************************/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
Local Rowset &rs0, &rs1, &rs2;
&FLAGN = MMC_PAB_HDR.LEAD_TIME.Value;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
/****************** SDS.3439.so ***************
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
/****************** SDS.3439.en ***************/
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
&flag = &rs2(CurrentRowNumber(2)).MMC_PAB_ITEM.MMC_FLG_LEADTIME.Value;
If &flag = "Y" Then
&rs2(CurrentRowNumber(2)).MMC_PAB_ITEM.LEAD_TIME.Enabled = False;
&rs2(CurrentRowNumber(2)).MMC_PAB_ITEM.LEAD_TIME.Value = 0;
Else
&rs2(CurrentRowNumber(2)).MMC_PAB_ITEM.LEAD_TIME.Value = &FLAGN;
&rs2(CurrentRowNumber(2)).MMC_PAB_ITEM.LEAD_TIME.Enabled = True;

End-If;
End-If;
[MMC_PAB_ITEM.MMC_FLG_LEADTIME.RowInit]
/*******************************************************************************
*************************************************
Ronald Costa - MMC - 18/08/2008 - SDS.2772 - Atribuio do campo lead Time
********************************************************************************
************************************************/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
/***********mmcb.2772.sn**************/
Local Rowset &rs0, &rs1, &rs2;
&FLAGN = MMC_PAB_HDR.LEAD_TIME.Value;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
/****************** SDS.3439.so ***************
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
/****************** SDS.3439.en ***************/
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
&Flag = &rs2(CurrentRowNumber(2)).MMC_PAB_ITEM.MMC_FLG_LEADTIME.Value;
If &Flag = "Y" Then
MMC_PAB_ITEM.LEAD_TIME.Enabled = False;
Else
If &rs2(CurrentRowNumber(2)).MMC_PAB_ITEM.INV_ITEM_ID.Enabled Then
MMC_PAB_HDR.LEAD_TIME.Value = &FLAGN;
MMC_PAB_ITEM.LEAD_TIME.Enabled = True;
Else
MMC_PAB_ITEM.LEAD_TIME.Enabled = False;
End-If;
End-If;
End-If;
/**********mmcb.2772.en***************/
[MMC_PAB_ITEM.MMC_FLG_PRICE.RowInit]
/*******************************************************************************
*************************************************
Fabiano Cunha - MMC - SDS.2772 - Ao copiar uma reviso do PAB, dever voltar o flag
de aprovao de preo para N, pois pode ser que o preo ir se manter.
********************************************************************************
************************************************/

/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
/****************** SDS.3439.so ***************
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
/****************** SDS.3439.en ***************/
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
/* apenas pode analisar alteracao de preco se a revisao nao estiver aprovada
ou cancelada */
If (&rs2(CurrentRowNumber(2)).IsNew) Then
&rs2(CurrentRowNumber(2)).MMC_PAB_ITEM.MMC_FLG_PRICE.Value = "N";
&rs2(CurrentRowNumber(2)).MMC_PAB_ITEM.MMC_PRECO_PRATICAD.Value = 0;
End-If;
End-If;
[MMC_PAB_ITEM.MMC_PERCENT_COMPRA.FieldChange]
/*******************************************************************************
**********
* Itamar Junior - MMC - 06/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Sempre que este campo alterado, a data de inicio e fim de vigncia zerada, para
que o
* analista, seja forado a alter-la.
********************************************************************************
**********/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
Local Rowset &rws0, &rws1, &rws2;
/************************************ mmcb.sds3089.sn **************************
******************/
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();

/****************** SDS.3439.so ***************


&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
/****************** SDS.3439.en ***************/
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
/*** sempre que este campo for alterado, as datas so zeradas, para forar o pree
nchimento deste campo pelo analista***/
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.DATE_IN_EFFECT.Value = "";
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.DATE_OBSOLETE.Value = "";
End-If;
/************************************ mmcb.sds3089.sn **************************
******************/
[MMC_PAB_ITEM.MMC_PERCENT_COMPRA.RowInsert]
/*******************************************************************************
*************************************************
* Itamar Junior - MMC - 07/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Conforme combinado com a Carol e Ercilio, agora o sistema no ir somar 100 anos d
ata atual, mas colocar fixo a data 31/12/9999
********************************************************************************
************************************************/
/************************************* mmcb.sds3089.sn *************************
***********/
If %Component = Component.MMC_PAB Then
If None(MMC_PAB_ITEM.MMC_PERCENT_COMPRA.Value) Then
MMC_PAB_ITEM.MMC_PERCENT_COMPRA.Value = "100";
End-If;
End-If;
/************************************* mmcb.sds3089.en *************************
***********/
[MMC_PAB_ITEM.MMC_PERCENT_COMPRA.SaveEdit]
/*******************************************************************************
***********************
Ronald Costa - MMC - 20/08/2008 - SDS.2772 - Verificao e validao do percentual de co
mpra
********************************************************************************
********************/
/*******************************************************************************
**********
* Itamar Junior - MMC - 06/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Realizando filtros para o campo de percentual de compras, conforme orientao da S
DS
********************************************************************************
**********/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs

* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
Local Rowset &rs0, &rs1, &rs2;
/***********mmcb.2772.sn**************/
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
/****************** SDS.3439.so ***************
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
/****************** SDS.3439.en ***************/
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
If CurrentRowNumber(1) = 1 Then
/****************** SDS.3439.so ***************
SQLExec("SELECT SUM(c.MMC_PERCENT_COMPRA) FROM SYSADM.PS_MMC_PAB_HDR A , SYSADM.
PS_MMC_PAB_LN B , SYSADM.PS_MMC_PAB_ITEM C WHERE A.BUSINESS_UNIT =:1 AND A.SHIPT
O_ID = :2 AND A.VENDOR_ID <> :3 AND A.MMC_ST_PAB <> 'C' AND A.BUSINESS_UNIT = B.
BUSINESS_UNIT AND A.MMC_PAB_ID = B.MMC_PAB_ID AND B.EFFDT = ( SELECT MAX(B_E.EFF
DT) FROM SYSADM.PS_MMC_PAB_LN B_E WHERE B_E.BUSINESS_UNIT = B.BUSINESS_UNIT AND
B_E.MMC_PAB_ID = B.MMC_PAB_ID AND B_E.MMC_ST_REV <> 'C') AND C.BUSINESS_UNIT = B
.BUSINESS_UNIT AND C.MMC_PAB_ID = B.MMC_PAB_ID AND C.EFFDT = B.EFFDT AND C.INV_
ITEM_ID =:4 AND C.STATUS = 'A'", MMC_PAB_HDR.BUSINESS_UNIT.Value, MMC_PAB_HDR.SH
IPTO_ID.Value, MMC_PAB_HDR.VENDOR_ID.Value, &rs2(CurrentRowNumber()).MMC_PAB_ITE
M.INV_ITEM_ID.Value, &compra);
&total = &rs2(CurrentRowNumber()).MMC_PAB_ITEM.MMC_PERCENT_COMPRA.Value +
&compra;
If (&total > 100) And
(&rs2(CurrentRowNumber()).MMC_PAB_ITEM.STATUS.Value = "A") Then
Error " A reviso (" | &rs1(CurrentRowNumber(1)).MMC_PAB_LN.EFFDT.Value |
") possui o item (" | &rs2(CurrentRowNumber()).MMC_PAB_ITEM.INV_ITEM_ID.Value |
") na linha " | CurrentRowNumber() | ". A soma do percentual de compra (" | &to
tal | "%) deste item neste PAB e em outros excede 100%, favor revisar os PABs em
que este item esteja.";
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
SQLExec("SELECT SUM(c.MMC_PERCENT_COMPRA) FROM SYSADM.PS_MMC_PAB_HDR A , S
YSADM.PS_MMC_PAB_LN_M_VW B , SYSADM.PS_MMC_PAB_ITEM C WHERE A.BUSINESS_UNIT =:1
AND A.SHIPTO_ID = :2 AND A.VENDOR_ID <> :3 AND A.MMC_ST_PAB <> 'C' AND A.BUSINES
S_UNIT = B.BUSINESS_UNIT AND A.MMC_PAB_ID = B.MMC_PAB_ID AND B.EFFDT = ( SELECT
MAX(B_E.EFFDT) FROM SYSADM.PS_MMC_PAB_LN_M_VW B_E WHERE B_E.BUSINESS_UNIT = B.BU
SINESS_UNIT AND B_E.MMC_PAB_ID = B.MMC_PAB_ID AND B_E.MMC_ST_REV <> 'C') AND C.B
USINESS_UNIT = B.BUSINESS_UNIT AND C.MMC_PAB_ID = B.MMC_PAB_ID AND C.EFFDT = B.E
FFDT AND C.INV_ITEM_ID =:4 AND C.STATUS = 'A'", MMC_PAB_HDR.BUSINESS_UNIT.Value
, MMC_PAB_HDR.SHIPTO_ID.Value, MMC_PAB_HDR.VENDOR_ID.Value, &rs2(CurrentRowNumbe
r()).MMC_PAB_ITEM.INV_ITEM_ID.Value, &compra);
&total = &rs2(CurrentRowNumber()).MMC_PAB_ITEM.MMC_PERCENT_COMPRA.Value +

&compra;
If (&total > 100) And
(&rs2(CurrentRowNumber()).MMC_PAB_ITEM.STATUS.Value = "A") Then
Error " A reviso (" | &rs1(CurrentRowNumber(1)).MMC_PAB_LN_M_VW.EFFDT.Va
lue | ") possui o item (" | &rs2(CurrentRowNumber()).MMC_PAB_ITEM.INV_ITEM_ID.Va
lue | ") na linha " | CurrentRowNumber() | ". Este possui mais de um PAB e a som
a do percentual de compra (" | &total | ") excede 100%, favor revisar os PABs qu
e este item esteja.";
/****************** SDS.3439.en ***************/
End-If;
End-If;
End-If;
/**********mmcb.2772.en***************/
/************************************* mmcb.sds3089.sn *************************
***********/
If %Component = "MMC_PAB" Then
If MMC_PERCENT_COMPRA > 100 Then
Error ("No permitido salvar um item com o percentual de compra maior que 10
0%.");
End-If;
If MMC_PERCENT_COMPRA < 100 And
STATUS = "A" Then
&result = MessageBox(1, "", 0, 0, "Ateno: O percentual de compra do item ("
| INV_ITEM_ID | ") est menor que 100%.");
If &result = 2 Then
Error ("Ao cancelada! Pab disponvel para edio!");
End-If;
End-If;
End-If;
/************************************* mmcb.sds3089.en *************************
***********/
[MMC_PAB_ITEM.PRICE.FieldChange]
/*******************************************************************************
************************************************
Fabiano Cunha - MMC - SDS.3030 mmc.SDS3030 - Quando for digitado qualquer preo de
vemos guardar o preo antes da digitao.
********************************************************************************
************************************************/
/*******************************************************************************
**********
* Itamar Junior - MMC - 06/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Sempre que este campo alterado, a data de inicio e fim de vigncia zerada, para
que o
* analista, seja forado a alter-la.
********************************************************************************
**********/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso

* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.


********************************************************************************
**********/
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
/****************** SDS.3439.so ***************
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
/****************** SDS.3439.en ***************/
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
/*** sempre que este campo for alterado, as datas so zeradas, para forar o pree
nchimento deste campo pelo analista***/
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.DATE_IN_EFFECT.Value = ""; /*** mmcb.sd
s3089.ln ***/
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.DATE_OBSOLETE.Value = ""; /*** mmcb.sds
3089.ln ***/
If &rs2(CurrentRowNumber()).MMC_PAB_ITEM.MMC_PRECO_PRATICAD.Value = 0 Then
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.MMC_PRECO_PRATICAD.Value = &rs2(Curr
entRowNumber()).MMC_PAB_ITEM.PRICE.OriginalValue;
End-If;
End-If
[MMC_PAB_ITEM.PRICE.SaveEdit]
/*******************************************************************************
*************************************************
Fabiano Cunha - MMC - SDS.2772 - ao fazer alterao de preo e o valor for a maior, de
ver alterar o flag de alteracao de preo e sempre guardar o valor antigo e o valor
novo.
********************************************************************************
************************************************/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
/****************** SDS.3439.so ***************
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/

&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
/****************** SDS.3439.en ***************/
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);

/* apenas pode analisar alteracao de preco se a revisao nao estiver aprovada


ou cancelada */
/****************** SDS.3439.so ***************
If (&rs1(CurrentRowNumber(1)).MMC_PAB_LN.MMC_ST_REV.Value = "PA") Then
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
If (&rs1(CurrentRowNumber(1)).MMC_PAB_LN_M_VW.MMC_ST_REV.Value = "PA") Then
/******************* SDS.3439.en ***************/
/* verificar se os precos estao diferentes e se o item esta ativo */
If (&rs2(CurrentRowNumber()).MMC_PAB_ITEM.MMC_PRECO_PRATICAD.Value) <> (&r
s2(CurrentRowNumber()).MMC_PAB_ITEM.MMC_PRICE_OLD.Value) And
(&rs2(CurrentRowNumber()).MMC_PAB_ITEM.STATUS.Value = "A") Then
/* caso o novo preco esta maior que o anterior, dever guardar esta alter
acao e indicar alteracao de preco */
If (&rs2(CurrentRowNumber()).MMC_PAB_ITEM.PRICE.Value) > (&rs2(CurrentR
owNumber()).MMC_PAB_ITEM.MMC_PRECO_PRATICAD.Value) Then
/* se o preco antigo for zero, devera apenas guardar o preco atual e
nao indicar alteracao de preco */
If None(&rs2(CurrentRowNumber()).MMC_PAB_ITEM.MMC_PRICE_OLD.Value) T
hen
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.MMC_FLG_PRICE.Value = "N";
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.MMC_PRICE_OLD.Value = &rs2(
CurrentRowNumber()).MMC_PAB_ITEM.MMC_PRECO_PRATICAD.Value;
Else
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.MMC_FLG_PRICE.Value = "Y";
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.MMC_PRICE_OLD.Value = &rs2(
CurrentRowNumber()).MMC_PAB_ITEM.MMC_PRECO_PRATICAD.Value;
End-If;
Else /* caso o preco atual seja menor que o antigo, apenas guardar o va
lor do preco atual */
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.MMC_PRICE_OLD.Value = &rs2(Cur
rentRowNumber()).MMC_PAB_ITEM.MMC_PRECO_PRATICAD.Value;
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.MMC_FLG_PRICE.Value = "N";
End-If;
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.MMC_PRECO_PRATICAD.Value = 0;
End-If; /* Fim do verifica preo diferente e item ativo */
End-If;
End-If;
[MMC_PAB_ITEM.STATUS.SavePreChange]
/*******************************************************************************
**********
* Itamar Junior - MMC - 06/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Alterando o comentrio do item para cancelado, quando ele for inativado
********************************************************************************
**********/

/************************************* mmcb.sds3089.sn *************************


***********/
If %Component = "MMC_PAB" Then
If STATUS = "I" Then
MMC_PAB_ITEM.COMMENTS_254.Value = "Item Cancelado";
End-If;
End-If;
/************************************* mmcb.sds3089.en *************************
***********/
[MMC_PAB_ITEM.UNIT_OF_MEASURE.FieldChange]
/*******************************************************************************
*************************************************
Fabiano Cunha - MMC - 18/08/2008 - SDS.2772 - verificar se a unidade de medida i
nformada diferente da UM padro, ser for, dever digitar o codigo de converso da nova
unidade para a unidade padro.
********************************************************************************
************************************************/
/*******************************************************************************
**********
* Itamar Junior - MMC - 06/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Sempre que este campo alterado, a data de inicio e fim de vigncia zerada, para
que o
* analista, seja forado a alter-la.
********************************************************************************
**********/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
/****************** SDS.3439.so ***************
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
/****************** SDS.3439.en ***************/
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
/*** sempre que este campo for alterado, as datas so zeradas, para forar o pree
nchimento deste campo pelo analista***/
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.DATE_IN_EFFECT.Value = ""; /*** mmcb.sd
s3089.ln ***/
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.DATE_OBSOLETE.Value = ""; /*** mmcb.sds
3089.ln ***/

&UM_INFORMADA = &rs2(CurrentRowNumber()).MMC_PAB_ITEM.UNIT_OF_MEASURE.Value;
&INV_ITEM_ID = &rs2(CurrentRowNumber()).MMC_PAB_ITEM.INV_ITEM_ID.Value;
SQLExec("select 'X' from sysadm.ps_MASTER_ITEM_TBL WHERE SETID = :1 AND INV_I
TEM_ID = :2 AND UNIT_MEASURE_STD = :3", MMC_PAB_WRK.SETID, &INV_ITEM_ID, &UM_INF
ORMADA, &Existe_um);
If None(&Existe_um) Then
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.FLAG.Value = "Y";
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.CONVERSION_RATE.Enabled = True;
Else
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.CONVERSION_RATE.Enabled = False;
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.CONVERSION_RATE.Value = 0;
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.FLAG.Value = "N";
End-If;
End-If;
[MMC_PAB_ITEM.UNIT_OF_MEASURE.RowInit]
/*******************************************************************************
*************************************************
Fabiano Cunha - MMC - 26/08/2008 - SDS.2772 - verificar se era preciso informar
uma taxa de conversao
********************************************************************************
************************************************/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
/****************** SDS.3439.so ***************
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
******************* SDS.3439.eo ***************/
/****************** SDS.3439.sn ***************/
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
/****************** SDS.3439.en ***************/
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
If &rs2(CurrentRowNumber()).MMC_PAB_ITEM.FLAG.Value = "Y" Then
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.CONVERSION_RATE.Enabled = True;
Else
&rs2(CurrentRowNumber()).MMC_PAB_ITEM.CONVERSION_RATE.Enabled = False;
End-If;
End-If;

[MMC_PAB_ITEM_VW.MMC_FLAG_APROV.SaveEdit]
/*******************************************************************************
***********************
Fabiano Cunha - MMC - SDS.2772 - Verificar a obrigatoriedade dos campos de NCM e
comentario.
********************************************************************************
**********************/
If %Component = Component.MMC_PAB_FISC Then
If MMC_FLAG_APROV = "N" Then
If None(TAX_CLASS_CAT_BRL) Then
Error " obrigatrio informar o NCM sugerido";
End-If;
If None(COMMENT_TEXT) Then
Error " obrigatrio preencher o comentrio.";
End-If;
End-If;
End-If;
[MMC_PAB_ITEM_VW.MMC_FLAG_APROV.SavePostChange]
/*******************************************************************************
*************************************************
Fabiano Cunha - SDS 2772 - MMC - 19/02/2009 - Ajuste na aprovao dos fiscal. Aps apr
ovar o NCM dos itens
********************************************************************************
************************************************/
/*******************************************************************************
*************************************************
* Vincius Alves Mello - MMC - mmcb.hd91586 - 14/05/2010
*
* Audita as alteraes e libera o flag de aprovao quando o NCM esta diferente do cadas
tro
*
********************************************************************************
************************************************/
Local Rowset &RS0, &RS1;
If %Component = Component.MMC_PAB_FISC Then
&RS0 = GetLevel0();
&RS1 = &RS0(1).GetRowset(Scroll.MMC_PAB_ITEM_VW);
&RCNT = ActiveRowCount(Record.MMC_PAB_ITEM_VW);
&I = CurrentRowNumber(1);
If &RS1(&I).MMC_PAB_ITEM_VW.MMC_FLAG_APROV.Value = "Y" Then
SQLExec("SELECT D.TAX_CLASS_BRL,'Y', %DATEOUT(D.EFFDT) FROM SYSADM.PS_INV_
ITEMS D WHERE D.SETID = :1 AND D.INV_ITEM_ID = :2 AND
D.EFFDT = (SELECT MAX(
D_E.EFFDT) FROM SYSADM.PS_INV_ITEMS D_E WHERE D_E.SETID = D.SETID AND D_E.INV_I
TEM_ID = D.INV_ITEM_ID AND D_E.EFFDT <= TO_DATE(SYSDATE))", MMC_PAB_FIS_VW.SETI
D, &RS1(&I).MMC_PAB_ITEM_VW.INV_ITEM_ID.Value, &NCM, &existe_ncm, &DATA_EFFDT);
SQLExec("SELECT 'X' FROM SYSADM.PS_MASTER_ITEM_TBL T WHERE T.SETID = :1 AN
D T.INV_ITEM_ID = :2", MMC_PAB_FIS_VW.SETID, &RS1(&I).MMC_PAB_ITEM_VW.INV_ITEM_I
D.Value, &EXISTE_CAD);

If All(&existe_ncm, &EXISTE_CAD) And


(&NCM <> &RS1(&I).MMC_PAB_ITEM_VW.TAX_CLASS_BRL.Value) Then
SQLExec("UPDATE SYSADM.PS_INV_ITEMS SET TAX_CLASS_BRL = :1 WHERE SETID
= :2 AND INV_ITEM_ID = :3 AND EFFDT = %DATEIN(:4)", &RS1(&I).MMC_PAB_ITEM_VW.
TAX_CLASS_BRL.Value, MMC_PAB_FIS_VW.SETID, &RS1(&I).MMC_PAB_ITEM_VW.INV_ITEM_ID.
Value, &DATA_EFFDT);
SQLExec(" UPDATE SYSADM.PS_MMC_PAB_ITEM SET PROCESS_FLAG= 'Y' WHERE BUS
INESS_UNIT = :1 AND MMC_PAB_ID = :2 AND EFFDT= %datein(:3) AND LINE_NBR = :4
AND PROCESS_FLAG = 'N'", &RS1(&I).MMC_PAB_ITEM_VW.BUSINESS_UNIT.Value, &RS1(&I
).MMC_PAB_ITEM_VW.MMC_PAB_ID.Value, &RS1(&I).MMC_PAB_ITEM_VW.REVISION_DT.Value,
&RS1(&I).MMC_PAB_ITEM_VW.LINE_NBR.Value);
Else
If None(&existe_ncm) And
All(&EXISTE_CAD) Then
&sql = "insert into SYSADM.PS_INV_ITEMS (SETID, INV_ITEM_ID, EFFDT,
UPC_ID, POTENCY_RATING, INV_ITEM_TEMPLATE, INV_ITEM_TYPE, RECYCLE_FLAG, REUSABLE
_FLAG, DISPOSABLE_FLAG , INV_STOCK_TYPE, PACKING_CD, STOR_RULES_ID,SHIP_TYPE_ID
, RECOM_STOR_TEMP , RECOM_HUMIDITY_PCT, INV_PROD_GRADE, MAX_CAPACITY , HAZ_CLAS
S_CD , INTL_HAZARD_ID, CHARGE_CODE, SHELF_LIFE ,AVAIL_STATUS , INV_ITEM_HEIGHT,
INV_ITEM_LENGTH, INV_ITEM_WIDTH , INV_ITEM_WEIGHT, INV_ITEM_VOLUME, INV_ITEM_SIZ
E, INV_ITEM_COLOR , UNIT_MEASURE_DIM, UNIT_MEASURE_WT, UNIT_MEASURE_TEMP, UNIT_
MEASURE_VOL, COMMODITY_CD, HARMONIZED_CD, MSDS_ID, LAST_MAINT_OPRID, LAST_DTTM_U
PDATE, DESCR254, COMMODITY_CD_EU, AVAIL_LEAD_TIME, RETEST_LEAD_TIME, CHARGE_MARK
UP_PCNT, CHARGE_MARKUP_AMT, CONSUMABLE_FLG";
&sql = &sql | ", RETURNABLE_FLG, SERVICEABLE_FLG, TAX_CLASS_BRL, LT_
GRP_ID_BBL, TOF_PBL, PURCH_PROP_BRL, ITEM_ORIGIN_BBL, IPI_TYPE_BBL, UNIT_MEAS_SR
F_BBL, SERVICE_ITEM_BBL, TAX_TYPE_BBL, SERV_LOC_BBL, KIT_FISC_TREAT_BBL, ICMS_ST
_FLG_BBL, PISST_FLG_BBL, COFINSST_FLG_BBL, INSS_FLG_BBL,IR_FLG_BBL, INSSTAX_BRL_
PCT, IRTAX_BRL_PCT, IR_RET_FLG_BBL, PIS_CR_FLG_BBL, COF_CR_FLG_BBL)";
&sql1 = &sql | "VALUES(:1,:2,TO_dATE('1900-01-01','YYYY-MM-DD'),' ',
' ',' ',' ','N','N','N',' ',' ',' ',' ','0','0',' ','0','NONE',' ',' ',0,'1',0,0
,0,0,0,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', NULL,' ',' ',0,0,0,0,'N','N','N'
,:3,' ',' ',' ','0','P',' ','N','IS',' ','1','Y','N','N','N','N', 0, 0, 'Y', 'Y'
, 'Y')";
SQLExec(&sql1, MMC_PAB_FIS_VW.SETID, &RS1(&I).MMC_PAB_ITEM_VW.INV_IT
EM_ID.Value, &RS1(&I).MMC_PAB_ITEM_VW.TAX_CLASS_BRL.Value);
SQLExec(" UPDATE SYSADM.PS_MMC_PAB_ITEM SET PROCESS_FLAG= 'Y' WHERE
BUSINESS_UNIT = :1 AND MMC_PAB_ID = :2 AND EFFDT= %datein(:3) AND LINE_NBR =
:4 AND PROCESS_FLAG = 'N'", &RS1(&I).MMC_PAB_ITEM_VW.BUSINESS_UNIT.Value, &RS1
(&I).MMC_PAB_ITEM_VW.MMC_PAB_ID.Value, &RS1(&I).MMC_PAB_ITEM_VW.REVISION_DT.Valu
e, &RS1(&I).MMC_PAB_ITEM_VW.LINE_NBR.Value);
End-If;
End-If;
/************************************* mmcb.hd91586.sn *******************
******************/
SQLExec("Insert into SYSADM.PSAUDIT (AUDIT_OPRID, AUDIT_STAMP, AUDIT_ACTN,
RECNAME, FIELDNAME, OLDVALUE, NEWVALUE, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY

7, KEY8, KEY9, KEY10, KEY11, KEY12, KEY13, KEY14, KEY15) Values (:1, SYSDATE, 'C
', 'MMC_PAB_ITEM', 'MMC_FLAG_APROV', ' ', 'Y', :2, :3, %datein(:4), :5, :6, :7,
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ')", %OperatorId, &RS1(&I).MMC_PAB_ITE
M_VW.BUSINESS_UNIT.Value, &RS1(&I).MMC_PAB_ITEM_VW.MMC_PAB_ID.Value, &RS1(&I).MM
C_PAB_ITEM_VW.REVISION_DT.Value, &RS1(&I).MMC_PAB_ITEM_VW.LINE_NBR.Value, &RS1(&
I).MMC_PAB_ITEM_VW.INV_ITEM_ID.Value, &RS1(&I).MMC_PAB_ITEM_VW.TAX_CLASS_BRL.Val
ue);
/************************************* mmcb.hd91586.en *******************
******************/
End-If;
End-If;
[MMC_PAB_LN.BUSINESS_UNIT.SavePreChange]
/*******************************************************************************
**********
* Itamar Junior - MMC - 02/03/2010 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Avisando se um item est ou no em duplicidade e tambm verificando se a data deste
item
* esto ou no em conflito.
********************************************************************************
**********/
Local Rowset &rs0, &rs1, &rs2, &ps0, &ps1, &ps2;
/************************************* mmcb.sds3089.sn *************************
***********/
/*If %Component = "MMC_PAB" Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
&ps0 = GetLevel0();
&ps1 = &ps0(1).GetRowset(Scroll.MMC_PAB_LN);
&ps2 = &ps1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
For &i = 1 To &rs2.ActiveRowCount
&cont = 0;
For &j = 1 To &ps2.ActiveRowCount
If &rs2(&i).MMC_PAB_ITEM.INV_ITEM_ID.Value = &ps2(&j).MMC_PAB_ITEM.INV_
ITEM_ID.Value And
&ps2(&j).MMC_PAB_WRK.MMC_FLAG.Value = "N" And
&ps2(&j).MMC_PAB_ITEM.STATUS.Value = "A" Then
&cont = &cont + 1;
&ps2(&j).MMC_PAB_WRK.MMC_FLAG.Value = "Y";
End-If;*/
/***Verificando se as datas de um mesmo item no PAB esto ou no inconsistentes ***/
/*If &ps2(CurrentRowNumber()).MMC_PAB_ITEM.DATE_IN_EFFECT.Value > &rs2(CurrentRo
wNumber()).MMC_PAB_ITEM.DATE_IN_EFFECT.Value And
&ps2(CurrentRowNumber()).MMC_PAB_ITEM.DATE_IN_EFFECT.Value < &rs2
(CurrentRowNumber()).MMC_PAB_ITEM.DATE_OBSOLETE.Value Then
Error ("Data de Vigncia em conflito para as linhas do item (" | &rs2(
&i).MMC_PAB_ITEM.INV_ITEM_ID.Value | ") presente neste PAB. ");
End-If;

End-For;
If &cont > 1 Then
WinMessage("Ateno: O item (" | &rs2(&i).MMC_PAB_ITEM.INV_ITEM_ID.Value |
") ocorre (" | &cont | ") vezes neste PAB.");
End-If;
End-For;*/
/***Voltando status do FLAG, pois desta forma possvel validar a duplicidade dos i
tens em um novo post do painel ***/
/*For &i = 1 To &rs2.ActiveRowCount
&rs2(&i).MMC_PAB_WRK.MMC_FLAG.Value = "N";
End-For;
End-If;*/
/************************************* mmcb.sds3089.en *************************
***********/
[MMC_PAB_LN.MMC_ST_REV.FieldChange]
/*******************************************************************************
**************************************
Ronald Costa - MMC - 20/08/2008 - mmcb.SDS.2772- Controle para permitir que uma
reviso seja aprovado, apenas pelo workflow
********************************************************************************
**************************************/
Local Rowset &rs0, &rs1;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
&st = &rs1(CurrentRowNumber()).MMC_PAB_LN.MMC_ST_REV.Value;
If &st = "AP" Then
Error MsgGet(1000, 13, "Voc no pode aprovar uma Reviso");
End-If;
End-If;
[MMC_PAB_LN.MMC_ST_REV.RowDelete]
/*******************************************************************************
*************************************************
Fabiano Cunha - MMC - SDS.2772 - Deixar Apagar apenas as revises que estao aberta
s.
********************************************************************************
***********************************************/
Local Rowset &rs0, &rs1, &rs2, &rs3;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);

If (&rs1(CurrentRowNumber()).MMC_PAB_LN.MMC_ST_REV.Value <> "A") Then


Error MsgGet(1000, 13, "Apenas revises que estejam abertas podem ser apagad
as.");
End-If;
End-If;
[MMC_PAB_LN.MMC_ST_REV.RowInit]
/*******************************************************************************
**************************************************
Ronald Costa - MMC - 20/08/2008 - SDS.2772 - Verifica se o Status est pendente ap
rov ou aprovado deixando os campos desabilitados
********************************************************************************
*************************************************/
Declare Function habitarCamposRevisao PeopleCode MMC_ST_REV SavePreChange;
If %Component = Component.MMC_PAB Then
&retorno = habitarCamposRevisao(GetLevel0(), CurrentRowNumber(), CurrentRowNu
mber(1));
End-If;
[MMC_PAB_LN.MMC_ST_REV.RowInsert]
/*******************************************************************************
**************************************
Ronald Costa - MMC - 20/08/2008 - SDS.2772 - Inserir uma reviso com status em abe
rto, habilitando todos os campos
********************************************************************************
**************************************/
Local Rowset &rs0, &rs1, &rs2, &rs3;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITEM);
&st = &rs1(CurrentRowNumber()).MMC_PAB_LN.MMC_ST_REV.Value;
&j = CurrentRowNumber();

&rs1(&j).MMC_PAB_LN.REVISION_NUMBER.Enabled = True;
&rs1(&j).MMC_PAB_LN.EFFDT.Enabled = True;
&rs1(&j).MMC_PAB_LN.MMC_ST_REV.Enabled = True;
&rs1(&j).MMC_PAB_LN.MMC_ST_REV.Value = "A";
&rs1(&j).MMC_PAB_WRK.MMC_BOTAO.Enabled = True;
For &I = 1 To &rs2.ActiveRowCount
&rs2(&I).MMC_PAB_ITEM.CONVERSION_RATE.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.BUSINESS_UNIT.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.MMC_PAB_ID.Enabled = True;

&rs2(&I).MMC_PAB_ITEM.EFFDT.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.INV_ITEM_ID.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.UNIT_OF_MEASURE.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.TAX_CLASS_BRL.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.PRICE.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.MMC_FLG_PRICE.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.DATE_IN_EFFECT.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.DATE_OBSOLETE.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.LEAD_TIME.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.MMC_LOT_MINIMO.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.COMMENTS_254.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.MMC_PERCENT_COMPRA.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.PROCESS_FLAG.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.PROCESS_INSTANCE.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.STATUS.Enabled = True;
&rs2(&I).MMC_PAB_ITEM.MMC_FLG_LEADTIME.Enabled = True;
End-For;
End-If;
[MMC_PAB_LN.MMC_ST_REV.SaveEdit]
/*******************************************************************************
*************************************************
Ronald Costa - MMC - 19/08/2008 - SDS.2772 - Verificao de Status da Reviso
********************************************************************************
************************************************/
Declare Function habitarCamposRevisao PeopleCode MMC_ST_REV SavePreChange;
Local Rowset &rs0, &rs1, &rs2, &rs3;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
&st = &rs1(CurrentRowNumber()).MMC_PAB_LN.MMC_ST_REV.Value;
&qtde_pend_aprov = 0;
For &i = 1 To &rs1.ActiveRowCount
If (&rs1(&i).MMC_PAB_LN.MMC_ST_REV.Value = "PA") Then
&qtde_pend_aprov = &qtde_pend_aprov + 1;
End-If;
End-For;
If (&qtde_pend_aprov > 1) Then
Error "Existe mais de uma Revio Pendente de Aprovao! permitido apenas uma Rev
iso Pendente de Aprovao por vez.";
Else
If (&st = "AP") And
(&rs1(CurrentRowNumber()).IsChanged) Then
Error MsgGet(1000, 13, "Voc no pode aprovar uma Reviso");
Else
&retorno = habitarCamposRevisao(GetLevel0(), CurrentRowNumber(), Curren
tRowNumber(1));
End-If;
End-If
End-If;

[MMC_PAB_LN.MMC_ST_REV.SavePostChange]
/*******************************************************************************
***************************************************
Fabiano Cunha - MMC - SDS.2772 - Ao salvar uma reviso e seu status esta aprovao pen
dente, inicar o workflow de aprovao. gerar e/ou apagar as revises do pab com dados
logisticos e embalagens.
********************************************************************************
***************************************************/
/*******************************************************************************
*************************************************
Fabianoa Cunha - MMC 03/10/2009 - SDS.3090 - para iniciar o workflow foi criado
um etapa chamada de pre-workflow. o Nivel 1 dever ir na intranet e fazer o start
do workflow.
********************************************************************************
************************************************/
Local Rowset &rs0, &rs1, &rs2, &rs3;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
/* deletar as revises de logistica e embalagem caso a reviso seja deletada */
For &i = 1 To &rs1.RowCount
If &rs1(&i).MMC_PAB_LN.IsDeleted Then
SQLExec("delete from sysadm.ps_mmc_pab_logist where business_unit = :1
and mmc_pab_id = :2 and revision_dt = %datein(:3)", &rs1(&i).MMC_PAB_LN.BUSINESS
_UNIT.Value, &rs1(&i).MMC_PAB_LN.MMC_PAB_ID.Value, &rs1(&i).MMC_PAB_LN.EFFDT.Val
ue);
SQLExec("delete from sysadm.ps_mmc_pab_emb where business_unit = :1 and
mmc_pab_id =:2 and revision_dt = %datein(:3)", &rs1(&i).MMC_PAB_LN.BUSINESS_UNI
T.Value, &rs1(&i).MMC_PAB_LN.MMC_PAB_ID.Value, &rs1(&i).MMC_PAB_LN.EFFDT.Value);
End-If;
End-For;
For &i = 1 To &rs1.ActiveRowCount
If (&rs1(&i).MMC_PAB_LN.MMC_ST_REV.Value = "PA") And
(&rs1(&i).IsChanged Or
&rs1(&i).IsNew) Then
&bus = &rs1(&i).MMC_PAB_LN.BUSINESS_UNIT.Value | Rept(" ", 6 - Len(&rs1
(&i).MMC_PAB_LN.BUSINESS_UNIT.Value));
&pab = &rs1(&i).MMC_PAB_LN.MMC_PAB_ID.Value | Rept(" ", 12 - Len(&rs1(&
i).MMC_PAB_LN.MMC_PAB_ID.Value));
&CHAVE = &bus | &pab | String(&rs1(&i).MMC_PAB_LN.EFFDT.Value);
rem &CHAVE = "POPRO PB000000005 2008-09-08";
SQLExec("SELECT DEPTID FROM SYSADM.PS_MMC_PAB_P_COMPR A WHERE A.BUSINES
S_UNIT = :1 AND A.MMC_USER_COMPRADOR = :2", &rs1(&i).MMC_PAB_LN.BUSINESS_UNIT.
Value, &rs1(&i).MMC_PAB_LN.MMC_USER_COMPRADOR.Value, &DEPART);
/*
If &rs1(&i).MMC_PAB_LN.BUSINESS_UNIT.Value = "POREV" Then
&DEPARTAMENTO = "335";

Else
&DEPARTAMENTO = "384";
End-If;
*/
If All(&DEPART) Then
&DEPARTAMENTO = &DEPART;
&SOLICITANTE = &rs1(&i).MMC_PAB_LN.MMC_USER_COMPRADOR.Value;
&MSG = "INICIO WORKFLOW";
/****************** SDS.3090.S.O ***************
SQLExec("DECLARE V_RETORNO VARCHAR2(10); BEGIN MMC_SP_PU_INICIA_WORK
FLOW(5,:1,:2,:3, :4, V_RETORNO); END;", &CHAVE, &DEPARTAMENTO, &SOLICITANTE, &MS
G);
****************** SDS.3090.E.O *************** */
/****************** SDS.3090.S.N *************** */
SQLExec("DECLARE V_RETORNO VARCHAR2(10); BEGIN
sysadm.mmc_pk_pu.m
mc_sp_pu_inicia_preworkflow(5,:1,:2,:3, :4, V_RETORNO); END;", &CHAVE, &DEPARTAM
ENTO, &SOLICITANTE, &MSG);
/****************** SDS.3090.E.N *************** */
Else
Error ("No possivel iniciar workflow devido a no parametrizao de Solicit
ante por Departamento!");
End-If;
End-If;
End-For;
End-If;
[MMC_PAB_LN.MMC_ST_REV.SavePreChange]
/*******************************************************************************
**********
Fabiano Cunha - MMC - SDS.2772 - Ao salvar uma reviso e seu status esta aprovao
pendente, inicar o workflow de aprovao. gerar e/ou apagar as revises do pab
com dados logisticos e embalagens.
********************************************************************************
**********/
/*******************************************************************************
**********
* Itamar Junior - MMC - 19/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Inativando alguns campos da tabela de item, quando a reviso no estiver aberta
********************************************************************************
**********/
/* funco para gerar a reviso com os dados logisticos */
Declare Function GerarRevisaoLogistica PeopleCode MMC_PAB_WRK.FUNCLIB SavePostCh
ange;
Declare Function GerarRevisaoEmbalagens PeopleCode MMC_PAB_WRK.FUNCLIB SavePostC
hange;
Local Rowset &rs0, &rs1, &rs2, &rs3;
/*******************************************************************************
************************************************
Fabiano Cunha - MMC - 10/09/2008 - SDS.2772 - Funo para manipulacao dos campos na

tela do PAB.
********************************************************************************
***********************************************/
Function habitarCamposRevisao(&rs0 As Rowset, &rownumber, &rownumber1) Returns b
oolean ;
&retorno = False;
If &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber).MMC_PAB_LN.MMC_ST_REV.Val
ue = "PA" Or
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber).MMC_PAB_LN.MMC_ST_REV.
Value = "AP" Or
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber).MMC_PAB_LN.MMC_ST_REV.
Value = "C" Then
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber).MMC_PAB_LN.REVISION_NUMBE
R.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber).MMC_PAB_LN.EFFDT.Enabled
= False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber).MMC_PAB_LN.MMC_ST_REV.Ena
bled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber).MMC_PAB_LN.CURRENCY_CD.En
abled = False;
/************************************* mmcb.sds3089.sn *******************
*****************/
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber).MMC_PAB_LN.PYMNT_TERMS_CD
.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber).MMC_PAB_LN.LEAD_TIME.Enab
led = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber).MMC_PAB_LN.FREIGHT_TERMS.
Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber).MMC_PAB_WRK.MMC_BOTAO.Ena
bled = False;
/************************************* mmcb.sds3089.en *******************
*****************/
For &I = 1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(
Scroll.MMC_PAB_ITEM).ActiveRowCount
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.CONVERSION_RATE.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.BUSINESS_UNIT.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.MMC_PAB_ID.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.EFFDT.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.INV_ITEM_ID.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.UNIT_OF_MEASURE.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.TAX_CLASS_BRL.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.PRICE.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.MMC_FLG_PRICE.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.DATE_IN_EFFECT.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_

PAB_ITEM)(&I).MMC_PAB_ITEM.DATE_OBSOLETE.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.LEAD_TIME.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.MMC_LOT_MINIMO.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.COMMENTS_254.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.MMC_PERCENT_COMPRA.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.PROCESS_FLAG.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.PROCESS_INSTANCE.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.STATUS.Enabled = False;
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_
PAB_ITEM)(&I).MMC_PAB_ITEM.MMC_FLG_LEADTIME.Enabled = False;
End-For;
&retorno = True;
End-If;
Return &retorno;
End-Function;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
/* deletar as revises de logistica e embalagem caso a reviso seja deletada */
For &I = 1 To &rs1.RowCount
If &rs1(&I).MMC_PAB_LN.IsDeleted Then
SQLExec("delete from sysadm.ps_mmc_pab_logist where business_unit = :1
and mmc_pab_id = :2 and revision_dt = %datein(:3)", &rs1(&I).MMC_PAB_LN.BUSINESS
_UNIT.Value, &rs1(&I).MMC_PAB_LN.MMC_PAB_ID.Value, &rs1(&I).MMC_PAB_LN.EFFDT.Val
ue);
SQLExec("delete from sysadm.ps_mmc_pab_emb where business_unit = :1 and
mmc_pab_id =:2 and revision_dt = %datein(:3)", &rs1(&I).MMC_PAB_LN.BUSINESS_UNI
T.Value, &rs1(&I).MMC_PAB_LN.MMC_PAB_ID.Value, &rs1(&I).MMC_PAB_LN.EFFDT.Value);
End-If;
End-For;

If ((&rs1(CurrentRowNumber(1)).MMC_PAB_LN.MMC_ST_REV.Value = "PA") And


&rs1(CurrentRowNumber(1)).IsChanged) Then
/* Gerar reviso dos dados logisticos */
If &rs1(CurrentRowNumber(1)).IsChanged Then
&rs0 = GetLevel0();
&ret = GerarRevisaoLogistica(&rs0, CurrentRowNumber(1));
End-If;
/* gerar reviso dos dados de embalagem */

If &rs1(CurrentRowNumber(1)).IsChanged Then
&rs0 = GetLevel0();
&ret = GerarRevisaoEmbalagens(&rs0, CurrentRowNumber(1));
End-If;
End-If;
End-If;
[MMC_PAB_LN.MMC_USER_COMPRADOR.SaveEdit]
/*******************************************************************************
*************************************************
Fabiano Cunha - MMC - 26/08/2008 - SDS.2772 - Colocar o usurio e a data e hora da
modifio.
********************************************************************************
************************************************/
/***********mmcb.2772.sn**************/
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
If (&rs1(CurrentRowNumber(1)).IsNew) Or
(&rs1(CurrentRowNumber(1)).IsChanged) Then
&rs1(CurrentRowNumber(1)).MMC_PAB_LN.MMC_USER_COMPRADOR.Value = %UserId;
&rs1(CurrentRowNumber(1)).MMC_PAB_LN.DT_TIMESTAMP.Value = %Datetime;
End-If;
End-If;
/**********mmcb.2772.en***************/
[MMC_PAB_LN.REVISION_NUMBER.RowDelete]
/*******************************************************************************
*************************************************
Ronald Costa - MMC - 18/08/2008 - SDS.2772 - Decremento do Nmero da Reviso
********************************************************************************
************************************************/
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
If &rs1(CurrentRowNumber(1)).MMC_PAB_LN.REVISION_NUMBER.Value = MMC_PAB_HDR.R
EVISION_NUMBER Then
MMC_PAB_HDR.REVISION_NUMBER = MMC_PAB_HDR.REVISION_NUMBER - 1;
If MMC_PAB_HDR.REVISION_NUMBER < 1 Then
MMC_PAB_HDR.REVISION_NUMBER = 1;
End-If;
End-If;
End-If;

[MMC_PAB_LN.REVISION_NUMBER.RowInsert]
/*******************************************************************************
*************************************************
Ronald Costa - MMC - 18/08/2008 - SDS.2772 -Incremento ao Nmero da Reviso.
********************************************************************************
************************************************/
/***********mmcb.2772.sn**************/
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB Then
MMC_PAB_HDR.REVISION_NUMBER = MMC_PAB_HDR.REVISION_NUMBER + 1;
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
&rs1(CurrentRowNumber(1)).MMC_PAB_LN.REVISION_NUMBER.Value = MMC_PAB_HDR.REVI
SION_NUMBER;
&rs1(CurrentRowNumber(1)).MMC_PAB_LN.MMC_USER_COMPRADOR.Value = %UserId;
&rs1(CurrentRowNumber(1)).MMC_PAB_LN.DT_TIMESTAMP.Value = %Datetime;
End-If;
/**********mmcb.2772.en***************/
[MMC_PAB_LN_VW.MMC_FREQUENCIA.FieldChange]
/*******************************************************************************
***************************
Fabiano Cunha - MMC - 14/08/2008 - SDS 2772 - Alterar a frequencia, dever habilit
ar o campo valor, ou flagar
********************************************************************************
**************************/
If %Component = Component.MMC_PAB_PCM Then
Evaluate MMC_FREQUENCIA
When = "D"
FLAG_MONDAY = "Y";
FLAG_TUESDAY = "Y";
FLAG_WEDNESDAY = "Y";
FLAG_THURSDAY = "Y";
FLAG_FRIDAY = "Y";
Break;
When = "S"
FLAG_MONDAY = "N";
FLAG_TUESDAY = "N";
FLAG_WEDNESDAY = "N";
FLAG_THURSDAY = "N";
FLAG_FRIDAY = "N";
Break;
When = "M"
FLAG_MONDAY = "N";
FLAG_TUESDAY = "N";
FLAG_WEDNESDAY = "N";
FLAG_THURSDAY = "N";
FLAG_FRIDAY = "N";
Break;
End-Evaluate;

End-If;
[MMC_PAB_LOGH_VW.BUSINESS_UNIT.SavePreChange]
/*******************************************************************************
**********
* Fabiano Cunha - MMC - SDS. 2772 - Ao salvar uma alterao na parte logistica, deve
r ser
* notificado as pessoas que estao no grupo de logistica.
********************************************************************************
**********/
/*******************************************************************************
**********
* Itamar Junior - MMC - 19/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Acrescentando o flag do item da BU_ITEMS_INV no email de notificao do sistema
********************************************************************************
**********/
Declare Function BUSCA_SETID PeopleCode MMC_BU_SETID.SETID SavePreChange; /* mmc
b.sds3089.ln */
Declare Function PU_BuscarEmail PeopleCode MMC_PU_WRK.BUTTON SavePreChange;
Declare Function PU_GravarEmail PeopleCode MMC_PU_WRK.BUTTON SavePreChange;
Local Rowset &rs0, &rs1, &rs2;
If %Component = Component.MMC_PAB_PCM Then
&SETID = BUSCA_SETID(); /* mmcb.sds3089.ln */
/*&emails = PU_BuscarEmail("MMCSA", "PAB", "LOGISTICA"); */ /* mmcb.sds3089.l
o */
&emails = PU_BuscarEmail(&SETID, "PAB", "LOGISTICA"); /* mmcb.sds3089.ln */
&assunto = "Notificao do PAB - Alteraes dados logsticos ";
&emitente = "peoplesoft@mmcb.com.br";
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_PCM_VW);
&espaco_html = "&nbsp;";
&FORNECEDOR = MMC_PAB_PCM_VW.NAME1.Value;
&CNPJ = MMC_PAB_LOGH_VW.CGC_BRL.Value;
&PAB = MMC_PAB_LOGH_VW.MMC_PAB_ID.Value;
&DT_REVISAO = String(MMC_PAB_LOGH_VW.REVISION_DT.Value);
SQLExec("SELECT oprid ||' - ' || oprdefndesc FROM SYSADM.PSOPRDEFN WHERE OPRI
D = :1", %UserId, &usuario);
&ANALISTA = &usuario;
&SEG_OLD = MMC_PAB_LN_VW.FLAG_MONDAY.OriginalValue;
&SEG_NEW = MMC_PAB_LN_VW.FLAG_MONDAY.Value;
&TER_OLD = MMC_PAB_LN_VW.FLAG_TUESDAY.OriginalValue;
&TER_NEW = MMC_PAB_LN_VW.FLAG_TUESDAY.Value;

&QUA_OLD = MMC_PAB_LN_VW.FLAG_WEDNESDAY.OriginalValue;
&QUA_NEW = MMC_PAB_LN_VW.FLAG_WEDNESDAY.Value;
&QUI_OLD = MMC_PAB_LN_VW.FLAG_THURSDAY.OriginalValue;
&QUI_NEW = MMC_PAB_LN_VW.FLAG_THURSDAY.Value;
&SEX_OLD = MMC_PAB_LN_VW.FLAG_FRIDAY.OriginalValue;
&SEX_NEW = MMC_PAB_LN_VW.FLAG_FRIDAY.Value;
&SAB_OLD = MMC_PAB_LN_VW.FLAG_SATURDAY.OriginalValue;
&SAB_NEW = MMC_PAB_LN_VW.FLAG_SATURDAY.Value;
&DOM_OLD = MMC_PAB_LN_VW.FLAG_SUNDAY.OriginalValue;
&DOM_NEW = MMC_PAB_LN_VW.FLAG_SUNDAY.Value;
&FREQ_OLD = MMC_PAB_LN_VW.MMC_FREQUENCIA.OriginalValue;
&FREQ_NEW = MMC_PAB_LN_VW.MMC_FREQUENCIA.Value;

/************************************* mmcb.sds3089.sn **********************


**************/
&MSG = "<html> <head> <meta http-equiv=Content-Type content=text/html; charse
t=windows-1252> </head> <body> <div id=notificaoPAB align=center> <table width=8
5% border=1> <tr> <td colspan=10> <div align=center> <strong>Notifica&ccedil;&a
tilde;o PAB </strong></div></td> </tr> <tr> <td width=9%> <strong>PAB </strong>
</td> <td width=17% colspan=3>" | &PAB | "</td> <td colspan=2> <strong>Dt Revis
&atilde;o </strong> </td> <td colspan=4> " | &DT_REVISAO | " </td> </tr> <tr>
<td colspan=2><strong>FORNECEDOR</strong></td> <td colspan=8>" | &FORNECEDOR |
"</td> </tr> <tr> <td> <strong>CNPJ</strong> </td> <td colspan=4> " | &CNPJ |
" </td> <td colspan=3> <strong>Dt Altera&ccedil;&atilde;o</strong></td> <td cols
pan=2> " | &DT_REVISAO | "</td> </tr> <tr> <td colspan=2><strong>USUARIO/ANALIS
TA</strong></td> <td colspan=8>" | &ANALISTA | "</td> </tr> <tr> <td colspan=10
>&nbsp;</td> </tr> <tr> <td colspan=2> <div align=center><strong>Dia</strong
></div> </td> <td width=10%><div align=center><strong>SEG</strong></div></td> <
td width=9%><div align=center> <strong>TER</strong></div></td> <td width=7%> <d
iv align=center> <strong>QUA</strong> </div></td> <td width=10%><div align=cente
r><strong>QUI</strong> </div></td> <td width=11%><div align=center><strong>SEX</
strong></div></td> <td width=11%><div align=center><strong>SAB</strong></div></t
d> <td width= 7%><div align=center><strong>DOM</strong></div></td> <td width=9%>
<strong>FREQ</strong> <div align=center></div></td> </tr> <tr> <td colspan=2><d
iv align=center><strong>Antigos</strong></div></td> <td><div align=center>" | &S
EG_OLD | "</div></td> <td><div align=center>" | &TER_OLD | "</div></td> <td><div
align=center>" | &QUA_OLD | "</div></td> <td><div align=center>" | &QUI_OLD | "
</div></td> <td><div align=center>" | &SEX_OLD | "</div></td> <td><div align=cen
ter>" | &SAB_OLD | "</div></td> <td><div align=center>" | &DOM_OLD | "</div></td
> <td><div align=center>" | &FREQ_OLD | "</div></td> </tr> <tr> <td colspan=2><d
iv align=center><strong>Novos</strong></div></td> <td><div align=center>" | &SEG
_NEW | "</div></td> <td><center>" | &TER_NEW | " </center></td> <td><div align=c
enter>" | &QUA_NEW | "</div></td> <td><div align=center>" | &QUI_NEW | "</div></
td> <td><div align=center>" | &SEX_NEW | " </div></td> <td><div align=center>" |
&SAB_NEW | "</div></td> <td><div align=center>" | &DOM_NEW | "</div></td> <td><
div align=center>" | &FREQ_NEW | "</div></td> </tr> <tr> <td colspan=10>&nbsp;</
td> </tr> <tr> <td colspan=2 rowspan=2><div align=center><strong>ITEM</strong></
div> </td><td colspan=4><div align=center><strong>Planej. MRP</strong> </div></t
d><td
colspan=2> <div align=center> <strong>Est. M&aacute;ximo</strong>
</div> </td> <td colspan=2><div align=center><strong>Est. M&iacute;nimo </stron
g> </div></td></tr> <tr> <td colspan=2><div align=center><strong>Antigo</strong>
</div></td> <td colspan=2><div align=center><strong>Novo</strong></div> </td> <t
d colspan=1><div align=center> <strong> Antigo </strong></div></td> <td colspan=

1><div align=center><strong>Novo</strong></div> </td><td colspan=1><div align=ce


nter> <strong> Antigo </strong></div></td> <td colspan=1><div align=center><stro
ng>Novo</strong></div> </td></tr>";
/************************************* mmcb.sds3089.en **********************
**************/
/************************************* mmcb.sds3089.so **********************
**************/
/*&MSG = "<html> <head> <meta http-equiv=Content-Type content=text/html; char
set=windows-1252> </head> <body> <div id=notificaoPAB align=center> <table width
=85% border=1> <tr> <td colspan=10> <div align=center> <strong>Notifica&ccedil;
&atilde;o PAB </strong></div></td> </tr> <tr> <td width=9%> <strong>PAB </stron
g></td> <td width=17% colspan=3>" | &PAB | "</td> <td colspan=2> <strong>Dt Rev
is&atilde;o </strong> </td> <td colspan=4> " | &DT_REVISAO | " </td> </tr> <tr>
<td colspan=2><strong>FORNECEDOR</strong></td> <td colspan=8>" | &FORNECEDOR
| "</td> </tr> <tr> <td> <strong>CNPJ</strong> </td> <td colspan=4> " | &CNPJ
| " </td> <td colspan=3> <strong>Dt Altera&ccedil;&atilde;o</strong></td> <td co
lspan=2> " | &DT_REVISAO | "</td> </tr> <tr> <td colspan=2><strong>USUARIO/ANAL
ISTA</strong></td> <td colspan=8>" | &ANALISTA | "</td> </tr> <tr> <td colspan=
10>&nbsp;</td> </tr> <tr> <td colspan=2> <div align=center><strong>Dia</stro
ng></div> </td> <td width=10%><div align=center><strong>SEG</strong></div></td>
<td width=9%><div align=center> <strong>TER</strong></div></td> <td width=7%>
<div align=center> <strong>QUA</strong> </div></td> <td width=10%><div align=cen
ter><strong>QUI</strong> </div></td> <td width=11%><div align=center><strong>SEX
</strong></div></td> <td width=11%><div align=center><strong>SAB</strong></div><
/td> <td width= 7%><div align=center><strong>DOM</strong></div></td> <td width=9
%><strong>FREQ</strong> <div align=center></div></td> </tr> <tr> <td colspan=2>
<div align=center><strong>Antigos</strong></div></td> <td><div align=center>" |
&SEG_OLD | "</div></td> <td><div align=center>" | &TER_OLD | "</div></td> <td><d
iv align=center>" | &QUA_OLD | "</div></td> <td><div align=center>" | &QUI_OLD |
"</div></td> <td><div align=center>" | &SEX_OLD | "</div></td> <td><div align=c
enter>" | &SAB_OLD | "</div></td> <td><div align=center>" | &DOM_OLD | "</div></
td> <td><div align=center>" | &FREQ_OLD | "</div></td> </tr> <tr> <td colspan=2>
<div align=center><strong>Novos</strong></div></td> <td><div align=center>" | &S
EG_NEW | "</div></td> <td><center>" | &TER_NEW | " </center></td> <td><div align
=center>" | &QUA_NEW | "</div></td> <td><div align=center>" | &QUI_NEW | "</div>
</td> <td><div align=center>" | &SEX_NEW | " </div></td> <td><div align=center>"
| &SAB_NEW | "</div></td> <td><div align=center>" | &DOM_NEW | "</div></td> <td
><div align=center>" | &FREQ_NEW | "</div></td> </tr> <tr> <td colspan=10>&nbsp;
</td> </tr> <tr> <td colspan=2 rowspan=2><div align=center><strong>ITEM</strong>
</div> </td> <td
colspan=4> <div align=center> <strong>Est. M&aacute;xi
mo</strong> </div> </td> <td colspan=4><div align=center><strong>Est M&iacute;ni
mo </strong> </div></td> </tr> <tr> <td colspan=2><div align=center><strong>Anti
go</strong></div></td> <td colspan=2><div align=center><strong>Novo</strong></di
v> </td> <td colspan=2><div align=center> <strong> Antigo </strong></div></td> <
td colspan=2><div align=center><strong>Novo</strong></div> </td> </tr>";*/
/************************************* mmcb.sds3089.eo **********************
**************/
&linhas = " ";
For &i = 1 To &rs1.ActiveRowCount
&rs2 = &rs1(&i).GetRowset(Scroll.MMC_PAB_LOGIST);
&ITEM = &rs1(&i).MMC_PAB_PCM_VW.LINE_NBR.Value | " - " | &rs1(&i).MMC_PAB_
PCM_VW.INV_ITEM_ID.Value;
&DESCR = &rs1(&i).MASTER_ITEM_TBL.DESCR.Value;
&ITEM = &ITEM | " - <font size=1>" | &DESCR | "</<font>";
&EST_MAX_OLD = &rs2(1).MMC_PAB_LOGIST.QTY_MAX.OriginalValue;
&EST_MAX_NEW = &rs2(1).MMC_PAB_LOGIST.QTY_MAX.Value;

&EST_MIN_OLD = &rs2(1).MMC_PAB_LOGIST.QTY_MIN.OriginalValue;
&EST_MIN_NEW = &rs2(1).MMC_PAB_LOGIST.QTY_MIN.Value;
&ITM_PLA_NEW = &rs1(&i).MMC_PAB_WRK.FORECAST_ITEM_FLAG.Value; /*** mmcb.sd
s3089.ln ***/
/************************************* mmcb.sds3089.sn *******************
*****************/
/*** Buscando o flag do item na PS_BU_ITEM_INV para saber se ou no um item
programado no MRP ***/
SQLExec("SELECT B.FORECAST_ITEM_FLAG FROM SYSADM.PS_SHIPTO_TBL A, SYSADM.P
S_BU_ITEMS_INV B WHERE A.BUSINESS_UNIT_RECV = :1 AND B.BUSINESS_UNIT = BUSINESS_
UNIT_IN AND B.INV_ITEM_ID = :2", MMC_PAB_LN_VW.BUSINESS_UNIT, &rs1(&i).MMC_PAB_P
CM_VW.INV_ITEM_ID.Value, &ITM_PLA_OLD);
/************************************* mmcb.sds3089.en *******************
*****************/

/************************************* mmcb.sds3089.sn *******************


*****************/
&linhas = " <tr> <td colspan=2> " | &ITEM | " </td> <td colspan=2> <div al
ign=center>" | &ITM_PLA_OLD | " </div> </td> <td colspan=2> <div align=center>"
| &ITM_PLA_NEW | " </div> </td><td colspan=1> <div align=center> " | &EST_MAX_O
LD | " </div> </td> <td colspan=1> <div align=center> " | &EST_MAX_NEW | " </di
v> </td> <td colspan=1> <div align=center> " | &EST_MIN_OLD | " </div> </td> <td
colspan=1> <center> " | &EST_MIN_NEW | " </center> </td> </tr> " | &linhas;
/************************************* mmcb.sds3089.en *******************
*****************/
/************************************* mmcb.sds3089.eo *******************
*****************/
/*&linhas = " <tr> <td colspan=2> " | &ITEM | " </td> <td colspan=2> <div
align=center> " | &EST_MAX_OLD | " </div> </td> <td colspan=2> <div align=cente
r> " | &EST_MAX_NEW | " </div> </td> <td colspan=2> <div align=center> " | &EST_
MIN_OLD | " </div> </td> <td colspan=2> <center> " | &EST_MIN_NEW | " </center>
</td> </tr> " | &linhas;*/
/************************************* mmcb.sds3089.so *******************
*****************/
End-For;
&rodape = "</table> </div> </body> </html>";
&MSG = &MSG | &linhas | &rodape;
If All(&emails) And
All(&ITEM) Then
&ret = PU_GravarEmail(&PAB, %Datetime, "H", &assunto, &emitente, &emails,
" ", &MSG);
End-If;
End-If;
[MMC_PAB_LOGH_VW.REVISION_DT.SaveEdit]
/*******************************************************************************
******************************************************
Fabiano Cunha - MMC - SDS. 2772 - Ao salvar uma alterao na parte logistica, dever v
erificar se no existe revises posteriores a reviso atual.
********************************************************************************

*****************************************************/
If %Component = Component.MMC_PAB_PCM Then
SQLExec("SELECT EFFDT FROM SYSADM.PS_MMC_PAB_ln WHERE BUSINESS_UNIT = :1 AND
MMC_PAB_ID = :2 AND EFFDT > %DATEIN(:3) ORDER BY EFFDT", BUSINESS_UNIT, MMC_PAB_
ID, REVISION_DT, &EXISTE);
If All(&EXISTE) Then
Error "Existe(m) outra(s) reviso(es) mais recentes do PAB : " | BUSINESS_UNI
T | " - " | MMC_PAB_ID | " - " | &EXISTE;
End-If;
End-If;
[MMC_PAB_WRK.BTN_DELETE.FieldChange]
/*******************************************************************************
**********
* Itamar Junior - MMC - 06/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Inserindo boto para desmarcar todos os flags do grid
********************************************************************************
**********/
/************************************* mmcb.sds3089.sn *************************
***********/
If %Component = "MMC_PAB_FISC" Then
&L = GetLevel0()(1).GetRowset(Scroll.MMC_PAB_ITEM_VW);
For &Q = &L.ActiveRowCount To 1 Step - 1;
&L.GETROW(&Q).GETRECORD(Record.MMC_PAB_ITEM_VW).GetField(Field.MMC_FLAG_AP
ROV).VALUE = "N";
End-For;
End-If;
/************************************* mmcb.sds3089.en *************************
***********/
[MMC_PAB_WRK.BTN_SELECT.FieldChange]
/*******************************************************************************
**********
* Itamar Junior - MMC - 06/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Inserindo boto para selecionar todos os flags do grid
********************************************************************************
**********/
/************************************* mmcb.sds3089.sn *************************
***********/
If %Component = "MMC_PAB_FISC" Then
&L = GetLevel0()(1).GetRowset(Scroll.MMC_PAB_ITEM_VW);
For &Q = &L.ActiveRowCount To 1 Step - 1;
&L.GETROW(&Q).GETRECORD(Record.MMC_PAB_ITEM_VW).GetField(Field.MMC_FLAG_AP
ROV).VALUE = "Y";
End-For;
End-If;
/************************************* mmcb.sds3089.en *************************
***********/
[MMC_PAB_WRK.FORECAST_ITEM_FLAG.RowInit]
/*******************************************************************************
**********

* Itamar Junior - MMC - 06/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs


* Buscando na BU_ITEMS_INV se o item est ou no parametrizado no MRP
********************************************************************************
**********/
/************************************* mmcb.sds3089.sn *************************
***********/
If %Component = "MMC_PAB_PCM" Then
/*** Buscando o flag do item na PS_BU_ITEM_INV para saber se ou no um item pro
gramado no MRP ***/
SQLExec("SELECT B.FORECAST_ITEM_FLAG FROM SYSADM.PS_SHIPTO_TBL A, SYSADM.PS_B
U_ITEMS_INV B WHERE A.BUSINESS_UNIT_RECV = :1 AND B.BUSINESS_UNIT = BUSINESS_UNI
T_IN AND B.INV_ITEM_ID = :2", MMC_PAB_PCM_VW.BUSINESS_UNIT, MMC_PAB_PCM_VW.INV_I
TEM_ID, &flagProgMRP);
FORECAST_ITEM_FLAG = &flagProgMRP;
End-If;
/************************************* mmcb.sds3089.en *************************
***********/
[MMC_PAB_WRK.FORECAST_ITEM_FLAG.SavePreChange]
/*******************************************************************************
**********
* Itamar Junior - MMC - 06/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Salvando na BU_ITEMS_INV a parametrizao ou no do item no MRP
********************************************************************************
**********/
/************************************* mmcb.sds3089.sn *************************
***********/
If %Component = "MMC_PAB_PCM" Then
/*** Buscando a unidade de estoque baseando-se na unidade de compra ***/
SQLExec("SELECT BUSINESS_UNIT_IN FROM SYSADM.PS_SHIPTO_TBL WHERE BUSINESS_UNI
T_RECV = :1", MMC_PAB_PCM_VW.BUSINESS_UNIT, &uniNegocio);
/*** Salvando na BU_ITEMS_INV a parametrizao ou no do item no MRP ***/
SQLExec("UPDATE SYSADM.PS_BU_ITEMS_INV SET FORECAST_ITEM_FLAG = :1 WHERE BUSI
NESS_UNIT = :2 AND INV_ITEM_ID = :3", FORECAST_ITEM_FLAG, &uniNegocio, MMC_PAB_P
CM_VW.INV_ITEM_ID);
End-If;
/************************************* mmcb.sds3089.so *************************
***********/
[MMC_PAB_WRK.FUNCLIB.SavePostChange]
/*******************************************************************************
**************************************************
Fabiano Cunha - MMC - 12/08/2008 - Repositrio de funes usada no PAB.
********************************************************************************
*************************************************/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs

* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
Function preencheDadosPAB(&ADDRESS_SEQ_NUM, &SETID, &VENDOR_ID)
SQLExec("select CGC_BRL, IE_BRL from sysadm.ps_VNDR_ADDR_SCROL where setid= :
1 AND VENDOR_ID = :2 AND ADDRESS_SEQ_NUM = :3 ", &SETID, &VENDOR_ID, &ADDRESS_SE
Q_NUM, &CGC_BRL, &ie_brl);
SQLExec("SELECT A.ADDRESS1, A.COUNTY, A.STATE, A.CITY FROM PS_VENDOR_ADDR A
WHERE A.SETID =:1 AND A.VENDOR_ID = :2 AND A.ADDRESS_SEQ_NUM = :3 AND A.EFFDT
= (SELECT MAX(A_ED.EFFDT) FROM PS_VENDOR_ADDR A_ED WHERE A.SETID = A_ED.SETID
AND A.VENDOR_ID = A_ED.VENDOR_ID AND A.ADDRESS_SEQ_NUM = A_ED.ADDRESS_SEQ_NUM an
d A_ED.EFF_STATUS = 'A')", &SETID, &VENDOR_ID, &ADDRESS_SEQ_NUM, &ADDRESS1, &COU
NTY, &STATE, &CITY);
MMC_PAB_HDR.ADDRESS_SEQ_NUM.Value = &ADDRESS_SEQ_NUM;
SETID = &SETID;
MMC_PAB_HDR.VENDOR_ID.Value = &VENDOR_ID;
MMC_PAB_WRK.CGC_BRL.Value = &CGC_BRL;
MMC_PAB_WRK.CITY.Value = &CITY;
MMC_PAB_WRK.ADDRESS1.Value = &ADDRESS1;
MMC_PAB_WRK.COUNTY.Value = &COUNTY;
MMC_PAB_WRK.STATE.Value = &STATE;
MMC_PAB_WRK.IE_BRL.Value = &ie_brl;
End-Function;
/*******************************************************************************
*************************************************
Fabiano Cunha - MMC 01/10/2008 - SDS 2772 - Gerar reviso com dados logisticos
********************************************************************************
*************************************************/
/************************************* mmcb.sds3439.so *************************
***********
Function GerarRevisaoEmbalagens(&rs0 As Rowset, &n1 As number) Returns boolean
&retorno = False;
REM caso tenha sido deletado itens do pab, dever deletar o item na revisao log
istica ;
For &rownumber1 = 1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN).RowCount
For &I = 1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(
Scroll.MMC_PAB_ITM_VW).RowCount
If (&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.
MMC_PAB_ITM_VW)(&I).IsDeleted) Then
SQLExec("delete from SYSADM.PS_MMC_PAB_EMB WHERE BUSINESS_UNIT = :1
AND MMC_PAB_ID = :2 AND REVISION_DT = %datein(:3) and line_nbr = :4", &rs0(1).Ge
tRowset(Scroll.MMC_PAB_LN)(&rownumber1).MMC_PAB_LN.BUSINESS_UNIT.Value, &rs0(1).
GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).MMC_PAB_LN.MMC_PAB_ID.Value, &rs0(1).G
etRowset(Scroll.MMC_PAB_LN)(&rownumber1).MMC_PAB_LN.EFFDT.Value, &rs0(1).GetRows
et(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_

ITM_VW.LINE_NBR.Value);
End-If;
End-For;
End-For;
REM pegar as linhas ativas no buffer e gerar e/ou alterar dados EMBALAGEM ;
For &rownumber1 = &n1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN).ActiveRowCount
If (&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).MMC_PAB_LN.MMC_ST_RE
V.Value = "PA") And
(&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).IsChanged) Then
For &I = 1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRows
et(Scroll.MMC_PAB_ITM_VW).ActiveRowCount
REM se o item for tracado na reviso deve deletar o mesmo da logistica
e buscar a ultima reviso para o mesmo ;
If ((&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scr
oll.MMC_PAB_ITM_VW)(&I).IsChanged) And
((&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(
Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value) <> (&rs0(1).GetRowset(
Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM
_VW.LINE_NBR.OriginalValue))) Then
SQLExec("delete from SYSADM.PS_MMC_PAB_EMB WHERE BUSINESS_UNIT =
:1 AND MMC_PAB_ID = :2 AND REVISION_DT = %datein(:3) AND line_nbr = :4", &rs0(1)
.GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).MMC_PAB_LN.BUSINESS_UNIT.Value, &rs0(
1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).MMC_PAB_LN.MMC_PAB_ID.Value, &rs0(1
).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).MMC_PAB_LN.EFFDT.Value, &rs0(1).GetR
owset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_P
AB_ITM_VW.LINE_NBR.Value);
End-If;
REM busacar os dados da ultima reviso valida caso exista ;
REM Devido ao fato que o item pode possuir mais de uma embalagem, de
vera usar o createsql;
&sql = CreateSQL("SELECT MMC_PAB_ID, MMC_EMBALAGEM_ID,QTY, UNIT_MEAS
URE_PACK, MMC_EMB_FINALIDADE, MMC_TIPO_EMBALAGEM, INV_ITEM_WEIGHT, UNIT_MEASURE_
WT FROM SYSADM.PS_MMC_PAB_EMB A WHERE A.BUSINESS_UNIT = :1 AND A.MMC_PAB_ID = :
2 AND A.REVISION_DT =(SELECT MAX(REVISION_DT) FROM SYSADM.PS_MMC_PAB_EMB A_E WH
ERE A.BUSINESS_UNIT = A_E.BUSINESS_UNIT AND A.MMC_PAB_ID = A_E.MMC_PAB_ID AND
A_E.REVISION_DT < %DATEIN(:3) AND A_E.line_nbr = :4) AND NOT EXISTS (SELECT 'X
' FROM SYSADM.PS_MMC_PAB_EMB A_E WHERE A.BUSINESS_UNIT = A_E.BUSINESS_UNIT AND
A.MMC_PAB_ID = A_E.MMC_PAB_ID AND A_E.REVISION_DT >= %DATEIN(:3) AND A_E.LINE_
NBR = :4 ) AND A.line_nbr = :4", &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber
1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.BUSINESS_UNIT.Value, &rs0
(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&
I).MMC_PAB_ITM_VW.MMC_PAB_ID.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownum
ber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.EFFDT.Value, &rs0(1).G
etRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MM
C_PAB_ITM_VW.LINE_NBR.Value, &E_mmc_pab_id, &E_EMBALAGEM, &E_qty, &E_UNIT_MEASUR
E, &E_EMB_FINALIDADE, &E_TIPO_EMBALAGEM, &E_INV_ITEM_WEIGHT, &E_UNIT_MEASURE_WT)
;
&qtde_linha = 0;
While &sql.Fetch(&E_mmc_pab_id, &E_EMBALAGEM, &E_qty, &E_UNIT_MEASUR
E, &E_EMB_FINALIDADE, &E_TIPO_EMBALAGEM, &E_INV_ITEM_WEIGHT, &E_UNIT_MEASURE_WT)
&qtde_linha = &qtde_linha + 1;
REM se existir dever incluir o item e os dados retornados ;

If All(&E_mmc_pab_id) Then
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_EMB(BUSINESS_UNIT, MMC_
PAB_ID, REVISION_DT, line_nbr, MMC_EMBALAGEM_ID,QTY, UNIT_MEASURE_PACK, MMC_EMB_
FINALIDADE, MMC_TIPO_EMBALAGEM,INV_ITEM_WEIGHT, UNIT_MEASURE_WT, PROCESS_FLAG, P
ROCESS_INSTANCE, STATUS, MMC_ST_REV) VALUES (:1,:2,%DATEIN(:3), :4, :5,:6,:7,:8,
:9,:10,:11,'N',0,'A','AP')", &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).G
etRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.BUSINESS_UNIT.Value, &rs0(1).
GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).M
MC_PAB_ITM_VW.MMC_PAB_ID.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1
).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.EFFDT.Value, &rs0(1).GetRo
wset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PA
B_ITM_VW.LINE_NBR.Value, &E_EMBALAGEM, &E_qty, &E_UNIT_MEASURE, &E_EMB_FINALIDAD
E, &E_TIPO_EMBALAGEM, &E_INV_ITEM_WEIGHT, &E_UNIT_MEASURE_WT);
REM caso no exista inserir o item com os valores padro ;
Else
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_EMB(BUSINESS_UNIT, MMC_
PAB_ID, REVISION_DT, line_nbr, MMC_EMBALAGEM_ID,QTY, UNIT_MEASURE_PACK, MMC_EMB_
FINALIDADE, MMC_TIPO_EMBALAGEM,INV_ITEM_WEIGHT, UNIT_MEASURE_WT, PROCESS_FLAG, P
ROCESS_INSTANCE, STATUS, MMC_ST_REV) VALUES (:1,:2,%DATEIN(:3), :4, :5,:6,:7,:8,
:9,:10,:11,'N',0,'A','AP')", &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).G
etRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.BUSINESS_UNIT.Value, &rs0(1).
GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).M
MC_PAB_ITM_VW.MMC_PAB_ID.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1
).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.EFFDT.Value, &rs0(1).GetRo
wset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PA
B_ITM_VW.LINE_NBR.Value, " ", 0, " ", "A", "P", 0, " ");
End-If;
End-While;
If &qtde_linha = 0 Then
&sql = CreateSQL("SELECT MMC_PAB_ID, MMC_EMBALAGEM_ID,QTY, UNIT_M
EASURE_PACK, MMC_EMB_FINALIDADE, MMC_TIPO_EMBALAGEM, INV_ITEM_WEIGHT, UNIT_MEASU
RE_WT FROM SYSADM.PS_MMC_PAB_EMB A WHERE A.BUSINESS_UNIT = :1 AND A.MMC_PAB_ID
= :2 AND A.REVISION_DT =(SELECT MAX(REVISION_DT) FROM SYSADM.PS_MMC_PAB_EMB A_E
WHERE A.BUSINESS_UNIT = A_E.BUSINESS_UNIT AND A.MMC_PAB_ID = A_E.MMC_PAB_ID A
ND A_E.REVISION_DT = %DATEIN(:3) AND A_E.line_nbr = :4) AND A.line_nbr = :4",
&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_V
W)(&I).MMC_PAB_ITM_VW.BUSINESS_UNIT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(
&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.MMC_PAB_ID.Valu
e, &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_IT
M_VW)(&I).MMC_PAB_ITM_VW.EFFDT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rown
umber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value, &E_m
mc_pab_id, &E_EMBALAGEM, &E_qty, &E_UNIT_MEASURE, &E_EMB_FINALIDADE, &E_TIPO_EMB
ALAGEM, &E_INV_ITEM_WEIGHT, &E_UNIT_MEASURE_WT);
&qtde_linha = 0;
While &sql.Fetch(&E_mmc_pab_id, &E_EMBALAGEM, &E_qty, &E_UNIT_MEA
SURE, &E_EMB_FINALIDADE, &E_TIPO_EMBALAGEM, &E_INV_ITEM_WEIGHT, &E_UNIT_MEASURE_
WT)
&qtde_linha = &qtde_linha + 1;
REM se existir dever incluir o item e os dados retornados ;
End-While;
If &qtde_linha = 0 Then
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_EMB(BUSINESS_UNIT, MMC_
PAB_ID, REVISION_DT, line_nbr, MMC_EMBALAGEM_ID,QTY, UNIT_MEASURE_PACK, MMC_EMB_
FINALIDADE, MMC_TIPO_EMBALAGEM,INV_ITEM_WEIGHT, UNIT_MEASURE_WT, PROCESS_FLAG, P

ROCESS_INSTANCE, STATUS, MMC_ST_REV) VALUES (:1,:2,%DATEIN(:3), :4, :5,:6,:7,:8,


:9,:10,:11,'N',0,'A','AP')", &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).G
etRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.BUSINESS_UNIT.Value, &rs0(1).
GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).M
MC_PAB_ITM_VW.MMC_PAB_ID.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1
).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.EFFDT.Value, &rs0(1).GetRo
wset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PA
B_ITM_VW.LINE_NBR.Value, " ", 0, " ", "A", "P", 0, " ");
End-If;
End-If;
End-For;
End-If;
End-For;
&retorno = True;
Return &retorno;
End-Function;
************************************* mmcb.sds3439.eo **************************
**********/
/************************************* mmcb.sds3439.so *************************
***********
Function GerarRevisaoLogistica(&rs0 As Rowset, &n1 As number) Returns boolean
&retorno = False;
REM caso tenha sido deletado itens do pab, dever deletar o item na revisao log
istica ;;
For &rownumber1 = 1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN).RowCount
For &I = 1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(
Scroll.MMC_PAB_ITM_VW).RowCount
If (&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.
MMC_PAB_ITM_VW)(&I).IsDeleted) Then
SQLExec("delete from SYSADM.PS_MMC_PAB_LOGIST WHERE BUSINESS_UNIT =
:1 AND MMC_PAB_ID = :2 AND REVISION_DT = %datein(:3) and LINE_NBR = :4", &rs0(1)
.GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).MMC_PAB_LN.BUSINESS_UNIT.Value, &rs0(
1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).MMC_PAB_LN.MMC_PAB_ID.Value, &rs0(1
).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).MMC_PAB_LN.EFFDT.Value, &rs0(1).GetR
owset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_P
AB_ITM_VW.LINE_NBR.Value);
End-If;
End-For;
End-For;
REM pegar as linhas ativas no buffer e gerar e/ou alterar dados logisticos ;
For &rownumber1 = &n1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN).ActiveRowCount
If (&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).MMC_PAB_LN.MMC_ST_RE
V.Value = "PA") And
((&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).IsChanged) Or
(&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).IsNew)) Then
For &I = 1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRows
et(Scroll.MMC_PAB_ITM_VW).ActiveRowCount
REM se o item for tracado na reviso deve deletar o mesmo da logistica
e buscar a ultima reviso para o mesmo ;
If ((&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scr
oll.MMC_PAB_ITM_VW)(&I).IsChanged) And
((&rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(

Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value) <> (&rs0(1).GetRowset(


Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM
_VW.LINE_NBR.OriginalValue))) Then
SQLExec("delete from SYSADM.PS_MMC_PAB_LOGIST WHERE BUSINESS_UNIT
= :1 AND MMC_PAB_ID = :2 AND REVISION_DT = %datein(:3) and line_nbr = :4", &rs0
(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).MMC_PAB_LN.BUSINESS_UNIT.Value, &r
s0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).MMC_PAB_LN.MMC_PAB_ID.Value, &rs
0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).MMC_PAB_LN.EFFDT.Value, &rs0(1).G
etRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MM
C_PAB_ITM_VW.LINE_NBR.Value);
End-If;
REM busacar os dados da ultima reviso valida caso exista ;
SQLExec("SELECT MMC_PAB_ID, QTY_MAX, QTY_MIN FROM SYSADM.PS_MMC_PAB_
LOGIST A WHERE A.BUSINESS_UNIT = :1 AND A.MMC_PAB_ID = :2 AND A.REVISION_DT
=(SELECT MAX(REVISION_DT) FROM SYSADM.PS_MMC_PAB_LOGIST A_E WHERE A.BUSINESS_UN
IT = A_E.BUSINESS_UNIT AND A.MMC_PAB_ID
= A_E.MMC_PAB_ID AND A_E.REVISION_
DT < %DATEIN(:3) AND A_E.line_nbr = :4 ) AND NOT EXISTS (SELECT 'X' FROM SYS
ADM.PS_MMC_PAB_LOGIST A_E WHERE A.BUSINESS_UNIT = A_E.BUSINESS_UNIT AND A.MMC_P
AB_ID
= A_E.MMC_PAB_ID AND A_E.REVISION_DT >= %DATEIN(:3) AND A_E.line_n
br = :4 ) AND A.line_nbr = :4", &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumbe
r1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.BUSINESS_UNIT.Value, &rs
0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(
&I).MMC_PAB_ITM_VW.MMC_PAB_ID.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownu
mber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.EFFDT.Value, &rs0(1).
GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).M
MC_PAB_ITM_VW.LINE_NBR.Value, &L_mmc_pab_id, &L_qty_max, &L_qty_min);
REM se existir dever incluir o item e os dados retornados ;
If All(&L_mmc_pab_id) Then
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_LOGIST(BUSINESS_UNIT, MMC_
PAB_ID, REVISION_DT, line_nbr, QTY_MAX, QTY_MIN, PROCESS_FLAG, PROCESS_INSTANCE,
STATUS) VALUES (:1,:2,%DATEIN(:3), :4, :5,:6,'N',0,'A')", &rs0(1).GetRowset(Scr
oll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW
.BUSINESS_UNIT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowse
t(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.MMC_PAB_ID.Value, &rs0(1).GetRowset(
Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM
_VW.EFFDT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scr
oll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value, &L_qty_max, &L_qty_min);
REM caso no exista inserir o item com os valores padro ;
Else
SQLExec("SELECT MMC_PAB_ID, QTY_MAX, QTY_MIN FROM SYSADM.PS_MMC_P
AB_LOGIST A WHERE A.BUSINESS_UNIT = :1 AND A.MMC_PAB_ID = :2 AND A.REVISION_DT
=(SELECT MAX(REVISION_DT) FROM SYSADM.PS_MMC_PAB_LOGIST A_E WHERE A.BUSINESS
_UNIT = A_E.BUSINESS_UNIT AND A.MMC_PAB_ID
= A_E.MMC_PAB_ID AND A_E.REVISI
ON_DT = %DATEIN(:3) AND A_E.line_nbr = :4 ) AND A.line_nbr = :4", &rs0(1).
GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).M
MC_PAB_ITM_VW.BUSINESS_UNIT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumb
er1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.MMC_PAB_ID.Value, &rs0(
1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I
).MMC_PAB_ITM_VW.EFFDT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).
GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value, &L_mmc_pab_i
d, &L_qty_max, &L_qty_min);
If None(&L_mmc_pab_id) Then
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_LOGIST(BUSINESS_UNIT, M
MC_PAB_ID, REVISION_DT, line_nbr, QTY_MAX, QTY_MIN, PROCESS_FLAG, PROCESS_INSTAN
CE, STATUS) VALUES (:1,:2,%DATEIN(:3), :4, :5,:6,'N',0,'A')", &rs0(1).GetRowset(
Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM

_VW.BUSINESS_UNIT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRo
wset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.MMC_PAB_ID.Value, &rs0(1).GetRows
et(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_
ITM_VW.EFFDT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN)(&rownumber1).GetRowset(
Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value, 0, 0);
End-If;
End-If;
End-For;
End-If;
End-For;
&retorno = True;
Return &retorno;
End-Function;
************************************** mmcb.sds3439.eo *************************
***********/
/************************************* mmcb.sds3439.sn *************************
***********/
Function GerarRevisaoLogistica(&rs0 As Rowset, &n1 As number) Returns boolean
&retorno = False;
/* caso tenha sido deletado itens do pab, dever deletar o item na revisao logi
stica */;
For &rownumber1 = 1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW).RowCount
For &I = 1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRo
wset(Scroll.MMC_PAB_ITM_VW).RowCount
If (&rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Sc
roll.MMC_PAB_ITM_VW)(&I).IsDeleted) Then
SQLExec("delete from SYSADM.PS_MMC_PAB_LOGIST WHERE BUSINESS_UNIT =
:1 AND MMC_PAB_ID = :2 AND REVISION_DT = %datein(:3) and LINE_NBR = :4", &rs0(1)
.GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).MMC_PAB_LN_M_VW.BUSINESS_UNIT.Va
lue, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).MMC_PAB_LN_M_VW.MMC_
PAB_ID.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).MMC_PAB_LN_
M_VW.EFFDT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRows
et(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value);
End-If;
End-For;
End-For;
/* pegar as linhas ativas no buffer e gerar e/ou alterar dados logisticos */
For &rownumber1 = &n1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW).ActiveRowC
ount
If (&rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).MMC_PAB_LN_M_VW
.MMC_ST_REV.Value = "PA") And
((&rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).IsChanged)
Or
(&rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).IsNew)) T
hen
For &I = 1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).Ge
tRowset(Scroll.MMC_PAB_ITM_VW).ActiveRowCount
/* se o item for tracado na reviso deve deletar o mesmo da logistica
e buscar a ultima reviso para o mesmo */
If ((&rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowse
t(Scroll.MMC_PAB_ITM_VW)(&I).IsChanged) And
((&rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRo
wset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value) <> (&rs0(1).GetRo
wset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).M

MC_PAB_ITM_VW.LINE_NBR.OriginalValue))) Then
SQLExec("delete from SYSADM.PS_MMC_PAB_LOGIST WHERE BUSINESS_UNIT
= :1 AND MMC_PAB_ID = :2 AND REVISION_DT = %datein(:3) and line_nbr = :4", &rs0
(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).MMC_PAB_LN_M_VW.BUSINESS_UNIT
.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).MMC_PAB_LN_M_VW.M
MC_PAB_ID.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).MMC_PAB_
LN_M_VW.EFFDT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetR
owset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value);
End-If;
/* busacar os dados da ultima reviso valida caso exista */
SQLExec("SELECT MMC_PAB_ID, QTY_MAX, QTY_MIN FROM SYSADM.PS_MMC_PAB_
LOGIST A WHERE A.BUSINESS_UNIT = :1 AND A.MMC_PAB_ID = :2 AND A.REVISION_DT
=(SELECT MAX(REVISION_DT) FROM SYSADM.PS_MMC_PAB_LOGIST A_E WHERE A.BUSINESS_UN
IT = A_E.BUSINESS_UNIT AND A.MMC_PAB_ID
= A_E.MMC_PAB_ID AND A_E.REVISION_
DT < %DATEIN(:3) AND A_E.line_nbr = :4 ) AND NOT EXISTS (SELECT 'X' FROM SYS
ADM.PS_MMC_PAB_LOGIST A_E WHERE A.BUSINESS_UNIT = A_E.BUSINESS_UNIT AND A.MMC_P
AB_ID
= A_E.MMC_PAB_ID AND A_E.REVISION_DT >= %DATEIN(:3) AND A_E.line_n
br = :4 ) AND A.line_nbr = :4", &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&row
number1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.BUSINESS_UNIT.Value
, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PA
B_ITM_VW)(&I).MMC_PAB_ITM_VW.MMC_PAB_ID.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_
LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.EFFDT.
Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.M
MC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value, &L_mmc_pab_id, &L_qty_max, &L_
qty_min);
/* se existir dever incluir o item e os dados retornados */
If All(&L_mmc_pab_id) Then
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_LOGIST(BUSINESS_UNIT, MMC_
PAB_ID, REVISION_DT, line_nbr, QTY_MAX, QTY_MIN, PROCESS_FLAG, PROCESS_INSTANCE,
STATUS) VALUES (:1,:2,%DATEIN(:3), :4, :5,:6,'N',0,'A')", &rs0(1).GetRowset(Scr
oll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_I
TM_VW.BUSINESS_UNIT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1
).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.MMC_PAB_ID.Value, &rs0(1).
GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(
&I).MMC_PAB_ITM_VW.EFFDT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownu
mber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value, &L_qt
y_max, &L_qty_min);
/* caso no exista inserir o item com os valores padro */
Else
SQLExec("SELECT MMC_PAB_ID, QTY_MAX, QTY_MIN FROM SYSADM.PS_MMC_P
AB_LOGIST A WHERE A.BUSINESS_UNIT = :1 AND A.MMC_PAB_ID = :2 AND A.REVISION_DT
=(SELECT MAX(REVISION_DT) FROM SYSADM.PS_MMC_PAB_LOGIST A_E WHERE A.BUSINESS
_UNIT = A_E.BUSINESS_UNIT AND A.MMC_PAB_ID
= A_E.MMC_PAB_ID AND A_E.REVISI
ON_DT = %DATEIN(:3) AND A_E.line_nbr = :4 ) AND A.line_nbr = :4", &rs0(1).
GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(
&I).MMC_PAB_ITM_VW.BUSINESS_UNIT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW
)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.MMC_PAB_ID.Va
lue, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC
_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.EFFDT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN
_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR
.Value, &L_mmc_pab_id, &L_qty_max, &L_qty_min);
If None(&L_mmc_pab_id) Then
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_LOGIST(BUSINESS_UNIT, M
MC_PAB_ID, REVISION_DT, line_nbr, QTY_MAX, QTY_MIN, PROCESS_FLAG, PROCESS_INSTAN
CE, STATUS) VALUES (:1,:2,%DATEIN(:3), :4, :5,:6,'N',0,'A')", &rs0(1).GetRowset(
Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PA

B_ITM_VW.BUSINESS_UNIT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumb
er1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.MMC_PAB_ID.Value, &rs0(
1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_V
W)(&I).MMC_PAB_ITM_VW.EFFDT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&ro
wnumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value, 0,
0);
End-If;
End-If;
End-For;
End-If;
End-For;
&retorno = True;
Return &retorno;
End-Function;
/************************************* mmcb.sds3439.en *************************
***********/
/*******************************************************************************
*************************************************
Fabiano Cunha - MMC 01/10/2008 - SDS 2772 - Gerar reviso com dados das embalagens
********************************************************************************
*************************************************/
Function GerarRevisaoEmbalagens(&rs0 As Rowset, &n1 As number) Returns boolean
&retorno = False;
/* caso tenha sido deletado itens do pab, dever deletar o item na revisao logi
stica */
For &rownumber1 = 1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW).RowCount
For &I = 1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRo
wset(Scroll.MMC_PAB_ITM_VW).RowCount
If (&rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Sc
roll.MMC_PAB_ITM_VW)(&I).IsDeleted) Then
SQLExec("delete from SYSADM.PS_MMC_PAB_EMB WHERE BUSINESS_UNIT = :1
AND MMC_PAB_ID = :2 AND REVISION_DT = %datein(:3) and line_nbr = :4", &rs0(1).Ge
tRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).MMC_PAB_LN_M_VW.BUSINESS_UNIT.Value
, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).MMC_PAB_LN_M_VW.MMC_PAB
_ID.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).MMC_PAB_LN_M_V
W.EFFDT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(
Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value);
End-If;
End-For;
End-For;
/* pegar as linhas ativas no buffer e gerar e/ou alterar dados EMBALAGEM */
For &rownumber1 = &n1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW).ActiveRowC
ount
If (&rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).MMC_PAB_LN_M_VW
.MMC_ST_REV.Value = "PA") And
(&rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).IsChanged) T
hen
For &I = 1 To &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).Ge
tRowset(Scroll.MMC_PAB_ITM_VW).ActiveRowCount
/* se o item for tracado na reviso deve deletar o mesmo da logistica

e buscar a ultima reviso para o mesmo */


If ((&rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowse
t(Scroll.MMC_PAB_ITM_VW)(&I).IsChanged) And
((&rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRo
wset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value) <> (&rs0(1).GetRo
wset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).M
MC_PAB_ITM_VW.LINE_NBR.OriginalValue))) Then
SQLExec("delete from SYSADM.PS_MMC_PAB_EMB WHERE BUSINESS_UNIT =
:1 AND MMC_PAB_ID = :2 AND REVISION_DT = %datein(:3) AND line_nbr = :4", &rs0(1)
.GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).MMC_PAB_LN_M_VW.BUSINESS_UNIT.Va
lue, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).MMC_PAB_LN_M_VW.MMC_
PAB_ID.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).MMC_PAB_LN_
M_VW.EFFDT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRows
et(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value);
End-If;
/* busacar os dados da ultima reviso valida caso exista */
/* Devido ao fato que o item pode possuir mais de uma embalagem, dev
era usar o createsql*/
&sql = CreateSQL("SELECT MMC_PAB_ID, MMC_EMBALAGEM_ID,QTY, UNIT_MEAS
URE_PACK, MMC_EMB_FINALIDADE, MMC_TIPO_EMBALAGEM, INV_ITEM_WEIGHT, UNIT_MEASURE_
WT FROM SYSADM.PS_MMC_PAB_EMB A WHERE A.BUSINESS_UNIT = :1 AND A.MMC_PAB_ID = :
2 AND A.REVISION_DT =(SELECT MAX(REVISION_DT) FROM SYSADM.PS_MMC_PAB_EMB A_E WH
ERE A.BUSINESS_UNIT = A_E.BUSINESS_UNIT AND A.MMC_PAB_ID = A_E.MMC_PAB_ID AND
A_E.REVISION_DT < %DATEIN(:3) AND A_E.line_nbr = :4) AND NOT EXISTS (SELECT 'X
' FROM SYSADM.PS_MMC_PAB_EMB A_E WHERE A.BUSINESS_UNIT = A_E.BUSINESS_UNIT AND
A.MMC_PAB_ID = A_E.MMC_PAB_ID AND A_E.REVISION_DT >= %DATEIN(:3) AND A_E.LINE_
NBR = :4 ) AND A.line_nbr = :4", &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rown
umber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.BUSINESS_UNIT.Value,
&rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB
_ITM_VW)(&I).MMC_PAB_ITM_VW.MMC_PAB_ID.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_L
N_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.EFFDT.V
alue, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MM
C_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value, &E_mmc_pab_id, &E_EMBALAGEM, &E
_qty, &E_UNIT_MEASURE, &E_EMB_FINALIDADE, &E_TIPO_EMBALAGEM, &E_INV_ITEM_WEIGHT,
&E_UNIT_MEASURE_WT);
&qtde_linha = 0;
While &sql.Fetch(&E_mmc_pab_id, &E_EMBALAGEM, &E_qty, &E_UNIT_MEASUR
E, &E_EMB_FINALIDADE, &E_TIPO_EMBALAGEM, &E_INV_ITEM_WEIGHT, &E_UNIT_MEASURE_WT)
&qtde_linha = &qtde_linha + 1;
/* se existir dever incluir o item e os dados retornados */
If All(&E_mmc_pab_id) Then
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_EMB(BUSINESS_UNIT, MMC_
PAB_ID, REVISION_DT, line_nbr, MMC_EMBALAGEM_ID,QTY, UNIT_MEASURE_PACK, MMC_EMB_
FINALIDADE, MMC_TIPO_EMBALAGEM,INV_ITEM_WEIGHT, UNIT_MEASURE_WT, PROCESS_FLAG, P
ROCESS_INSTANCE, STATUS, MMC_ST_REV) VALUES (:1,:2,%DATEIN(:3), :4, :5,:6,:7,:8,
:9,:10,:11,'N',0,'A','AP')", &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumbe
r1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.BUSINESS_UNIT.Value, &rs
0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM
_VW)(&I).MMC_PAB_ITM_VW.MMC_PAB_ID.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_
VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.EFFDT.Value
, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PA
B_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value, &E_EMBALAGEM, &E_qty, &E_UNIT_MEASU
RE, &E_EMB_FINALIDADE, &E_TIPO_EMBALAGEM, &E_INV_ITEM_WEIGHT, &E_UNIT_MEASURE_WT
);
/* caso no exista inserir o item com os valores padro */
Else

SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_EMB(BUSINESS_UNIT, MMC_


PAB_ID, REVISION_DT, line_nbr, MMC_EMBALAGEM_ID,QTY, UNIT_MEASURE_PACK, MMC_EMB_
FINALIDADE, MMC_TIPO_EMBALAGEM,INV_ITEM_WEIGHT, UNIT_MEASURE_WT, PROCESS_FLAG, P
ROCESS_INSTANCE, STATUS, MMC_ST_REV) VALUES (:1,:2,%DATEIN(:3), :4, :5,:6,:7,:8,
:9,:10,:11,'N',0,'A','AP')", &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumbe
r1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.BUSINESS_UNIT.Value, &rs
0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM
_VW)(&I).MMC_PAB_ITM_VW.MMC_PAB_ID.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_
VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.EFFDT.Value
, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PA
B_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value, " ", 0, " ", "A", "P", 0, " ");
End-If;
End-While;
If &qtde_linha = 0 Then
&sql = CreateSQL("SELECT MMC_PAB_ID, MMC_EMBALAGEM_ID,QTY, UNIT_M
EASURE_PACK, MMC_EMB_FINALIDADE, MMC_TIPO_EMBALAGEM, INV_ITEM_WEIGHT, UNIT_MEASU
RE_WT FROM SYSADM.PS_MMC_PAB_EMB A WHERE A.BUSINESS_UNIT = :1 AND A.MMC_PAB_ID
= :2 AND A.REVISION_DT =(SELECT MAX(REVISION_DT) FROM SYSADM.PS_MMC_PAB_EMB A_E
WHERE A.BUSINESS_UNIT = A_E.BUSINESS_UNIT AND A.MMC_PAB_ID = A_E.MMC_PAB_ID A
ND A_E.REVISION_DT = %DATEIN(:3) AND A_E.line_nbr = :4) AND A.line_nbr = :4",
&rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_
ITM_VW)(&I).MMC_PAB_ITM_VW.BUSINESS_UNIT.Value, &rs0(1).GetRowset(Scroll.MMC_PAB
_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.MMC_P
AB_ID.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Sc
roll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.EFFDT.Value, &rs0(1).GetRowset(Scroll.MM
C_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.
LINE_NBR.Value, &E_mmc_pab_id, &E_EMBALAGEM, &E_qty, &E_UNIT_MEASURE, &E_EMB_FIN
ALIDADE, &E_TIPO_EMBALAGEM, &E_INV_ITEM_WEIGHT, &E_UNIT_MEASURE_WT);
&qtde_linha = 0;
While &sql.Fetch(&E_mmc_pab_id, &E_EMBALAGEM, &E_qty, &E_UNIT_MEA
SURE, &E_EMB_FINALIDADE, &E_TIPO_EMBALAGEM, &E_INV_ITEM_WEIGHT, &E_UNIT_MEASURE_
WT)
&qtde_linha = &qtde_linha + 1;
/* se existir dever incluir o item e os dados retornados */
End-While;
If &qtde_linha = 0 Then
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_EMB(BUSINESS_UNIT, MMC_
PAB_ID, REVISION_DT, line_nbr, MMC_EMBALAGEM_ID,QTY, UNIT_MEASURE_PACK, MMC_EMB_
FINALIDADE, MMC_TIPO_EMBALAGEM,INV_ITEM_WEIGHT, UNIT_MEASURE_WT, PROCESS_FLAG, P
ROCESS_INSTANCE, STATUS, MMC_ST_REV) VALUES (:1,:2,%DATEIN(:3), :4, :5,:6,:7,:8,
:9,:10,:11,'N',0,'A','AP')", &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumbe
r1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.BUSINESS_UNIT.Value, &rs
0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM
_VW)(&I).MMC_PAB_ITM_VW.MMC_PAB_ID.Value, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_
VW)(&rownumber1).GetRowset(Scroll.MMC_PAB_ITM_VW)(&I).MMC_PAB_ITM_VW.EFFDT.Value
, &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW)(&rownumber1).GetRowset(Scroll.MMC_PA
B_ITM_VW)(&I).MMC_PAB_ITM_VW.LINE_NBR.Value, " ", 0, " ", "A", "P", 0, " ");
End-If;
End-If;
End-For;
End-If;
End-For;
&retorno = True;
Return &retorno;

End-Function;

[MMC_PAB_WRK.FUNCLIB_01.SavePreChange]
/*******************************************************************************
*************************************************
Fabiano Cunha - 22/10/2008 - MMC - SDS.2772 - Busca o preo do PAB
********************************************************************************
************************************************/
/*******************************************************************************
*************************************************
* Vincius Alves Mello - MMC - 20/04/2010 - mmcb.hd89255
*
* O sistema no deve considerar itens importados.
*
********************************************************************************
************************************************/
/*******************************************************************************
*************************************************
* Wagner Sorio - MMC - 31/10/2014 - mmcb.hd185892
*
* Melhorar a Performace na rotina que busca Preo do PAB
*
********************************************************************************
************************************************/
/*******************************************************************************
*************************************************
* Vincius Alves Mello - MMC - mmcb.hd225580 - 30/12/2014
*
* Alterar o processo para no validar se tima data efetiva do pab menor ou igual a
data atual.
*
********************************************************************************
************************************************/
/* Declare Function BuscaPrecoPab PeopleCode MMC_PAB_WRK.FUNCLIB_01 SavePreChang
e;*/
Declare Function BUSCA_SETID PeopleCode MMC_BU_SETID.SETID SavePreChange; /*mmcb
.hd89255.ln*/
/********************************** mmcb.hd185892.sn ***************************
*********/
Function BUSCA_PRECO_PAB_POR_DIAS(&P_BUSINESS_UNIT, &P_VENDOR_ID, &P_ADDRESS_SEQ
_NUM, &P_SHIPTO_ID, &P_INV_ITEM_ID, &P_DATE As date, &P_NUMBER_OF_DAYS, &OUT_BUS
INESS_UNIT, &OUT_MMC_PAB_ID, &OUT_EFFDT, &OUT_LINE_NBR, &OUT_INV_ITEM_ID, &OUT_U
NIT_OF_MEASURE, &OUT_PRICE)
&sql = "SELECT A.BUSINESS_UNIT, A.MMC_PAB_ID, B.EFFDT,C.LINE_NBR, C.INV_ITEM_
ID, C.UNIT_OF_MEASURE, C.PRICE FROM ";
&sql = &sql | " SYSADM.PS_MMC_PAB_HDR A, SYSADM.PS_MMC_PAB_LN B, SYSADM.PS_MM
C_PAB_ITEM C ";
&sql = &sql | " WHERE A.BUSINESS_UNIT = :1";
&sql = &sql | " AND A.VENDOR_ID
= :2";
&sql = &sql | " AND A.ADDRESS_sEQ_NUM = :3";
&sql = &sql | " AND A.SHIPTO_ID
= :4";
&sql = &sql | " AND A.MMC_ST_PAB
= 'V'";
&sql = &sql | " AND B.BUSINESs_UNIT
= :1";
&sql = &sql | " AND B.EFFDT
>= SYSDATE - :7 ";
&sql = &sql | " AND B.MMC_PAB_ID
= A.MMC_PAB_ID";
&sql = &sql | " AND B.EFFDT
= (SELECT MAX(B_E.EFFDT) FROM SYSADM.P

S_MMC_PAB_LN B_E, SYSADM.PS_MMC_PAB_ITEM C_E";


&sql = &sql | "
WHERE B_E.BUSINESS_UNIT
= :1
";
&sql = &sql | "
AND B_E.MMC_PAB_ID
= B.MMC_
PAB_ID
";
&sql = &sql | "
AND B_E.EFFDT
>= SYSDAT
E - :7
";
/*&sql = &sql | "
AND B_E.EFFDT
<= TO_D
ATE(SYSDATE) ";*/ /*mmcb.hd225580.lo*/
&sql = &sql | "
AND B_E.MMC_ST_REV
= 'AP'
";
&sql = &sql | "
AND C_E.BUSINESS_UNIT
= :1
";
&sql = &sql | "
AND C_E.MMC_PAB_ID
= B_E.MM
C_PAB_ID
";
&sql = &sql | "
AND C_E.EFFDT
= B_E.EF
FDT
";
&sql = &sql | "
AND C_E.INV_ITEM_ID
= :5
";
&sql = &sql | "
AND %datein(:6) BETWEEN C_E.DATE_IN_
EFFECT AND C_E.DATE_OBSOLETE";
&sql = &sql | "
)";
&sql = &sql | " AND B.MMC_ST_REV
= 'AP' ";
&sql = &sql | " AND C.BUSINESS_UNIT
= :1";
&sql = &sql | " AND C.MMC_PAB_ID
= B.MMC_PAB_ID";
&sql = &sql | " AND C.EFFDT
= B.EFFDT ";
&sql = &sql | " AND C.INV_ITEM_ID
= :5";
&sql = &sql | " AND %datein(:6) BETWEEN C.DATE_IN_EFFECT AND C.DATE_OBSOLETE"
;
&sql = &sql | " AND C.STATUS
= 'A'";
&sql = &sql | " ORDER BY A.BUSINESS_UNIT, A.MMC_PAB_ID, B.EFFDT, C.INV_ITEM_I
D,C.DATE_OBSOLETE";
SQLExec(&sql, &P_BUSINESS_UNIT, &P_VENDOR_ID, &P_ADDRESS_SEQ_NUM, &P_SHIPTO_I
D, &P_INV_ITEM_ID, &P_DATE, &P_NUMBER_OF_DAYS, &OUT_BUSINESS_UNIT, &OUT_MMC_PAB_
ID, &OUT_EFFDT, &OUT_LINE_NBR, &OUT_INV_ITEM_ID, &OUT_UNIT_OF_MEASURE, &OUT_PRIC
E);
If None(&OUT_MMC_PAB_ID) And
None(&OUT_INV_ITEM_ID) Then
&OUT_PRICE = - 1;
End-If;
End-Function;
Function BUSCA_PRECO_PAB(&P_BUSINESS_UNIT, &P_VENDOR_ID, &P_ADDRESS_SEQ_NUM, &P_
SHIPTO_ID, &P_INV_ITEM_ID, &P_DATE As date, &OUT_BUSINESS_UNIT, &OUT_MMC_PAB_ID,
&OUT_EFFDT, &OUT_LINE_NBR, &OUT_INV_ITEM_ID, &OUT_UNIT_OF_MEASURE, &OUT_PRICE)
&sql = "SELECT A.BUSINESS_UNIT, A.MMC_PAB_ID, B.EFFDT,C.LINE_NBR, C.INV_ITEM_
ID, C.UNIT_OF_MEASURE, C.PRICE FROM ";
&sql = &sql | " SYSADM.PS_MMC_PAB_HDR A, SYSADM.PS_MMC_PAB_LN B, SYSADM.PS_MM
C_PAB_ITEM C ";
&sql = &sql | " WHERE A.BUSINESS_UNIT = :1";
&sql = &sql | " AND A.VENDOR_ID
= :2";
&sql = &sql | " AND A.ADDRESS_sEQ_NUM = :3";
&sql = &sql | " AND A.SHIPTO_ID
= :4";
&sql = &sql | " AND A.MMC_ST_PAB
= 'V'";

&sql = &sql | " AND B.BUSINESs_UNIT


= :1";
&sql = &sql | " AND B.MMC_PAB_ID
= A.MMC_PAB_ID";
&sql = &sql | " AND B.EFFDT
= (SELECT MAX(B_E.EFFDT) FROM SYSADM.P
S_MMC_PAB_LN B_E, SYSADM.PS_MMC_PAB_ITEM C_E";
&sql = &sql | "
WHERE B_E.BUSINESS_UNIT
= :1
";
&sql = &sql | "
AND B_E.MMC_PAB_ID
= B.MMC_
PAB_ID
";
/*&sql = &sql | "
AND B_E.EFFDT
<= TO_D
ATE(SYSDATE) ";*/ /*mmcb.hd225580.lo*/
&sql = &sql | "
AND B_E.MMC_ST_REV
= 'AP'
";
&sql = &sql | "
AND C_E.BUSINESS_UNIT
= :1
";
&sql = &sql | "
AND C_E.MMC_PAB_ID
= B_E.MM
C_PAB_ID
";
&sql = &sql | "
AND C_E.EFFDT
= B_E.EF
FDT
";
&sql = &sql | "
AND C_E.INV_ITEM_ID
= :5
";
&sql = &sql | "
AND %datein(:6) BETWEEN C_E.DATE_IN_
EFFECT AND C_E.DATE_OBSOLETE";
&sql = &sql | "
)";
&sql = &sql | " AND B.MMC_ST_REV
= 'AP' ";
&sql = &sql | " AND C.BUSINESS_UNIT
= :1";
&sql = &sql | " AND C.MMC_PAB_ID
= B.MMC_PAB_ID";
&sql = &sql | " AND C.EFFDT
= B.EFFDT ";
&sql = &sql | " AND C.INV_ITEM_ID
= :5";
&sql = &sql | " AND %datein(:6) BETWEEN C.DATE_IN_EFFECT AND C.DATE_OBSOLETE"
;
&sql = &sql | " AND C.STATUS
= 'A'";
&sql = &sql | " ORDER BY A.BUSINESS_UNIT, A.MMC_PAB_ID, B.EFFDT, C.INV_ITEM_I
D,C.DATE_OBSOLETE";
SQLExec(&sql, &P_BUSINESS_UNIT, &P_VENDOR_ID, &P_ADDRESS_SEQ_NUM, &P_SHIPTO_I
D, &P_INV_ITEM_ID, &P_DATE, &OUT_BUSINESS_UNIT, &OUT_MMC_PAB_ID, &OUT_EFFDT, &OU
T_LINE_NBR, &OUT_INV_ITEM_ID, &OUT_UNIT_OF_MEASURE, &OUT_PRICE);
End-Function;
/********************************** mmcb.hd185892.en ***************************
*********/
Function BuscaPrecoPab(&bus_unit As string, &vendor_id As string, &end As number
, &localEntrega As string, &item As string, &data As date) Returns number
/********************************** mmcb.hd185892.so ************************
************/
/* &sql = "SELECT A.BUSINESS_UNIT, A.MMC_PAB_ID, B.EFFDT,C.LINE_NBR, C.INV_IT
EM_ID, C.UNIT_OF_MEASURE, C.PRICE FROM ";
&sql = &sql | " SYSADM.PS_MMC_PAB_HDR A, SYSADM.PS_MMC_PAB_LN B, SYSADM.PS_MM
C_PAB_ITEM C ";
&sql = &sql | " WHERE A.BUSINESS_UNIT = :1";
&sql = &sql | " AND A.VENDOR_ID
= :2";
&sql = &sql | " AND A.ADDRESS_sEQ_NUM = :3";
&sql = &sql | " AND A.SHIPTO_ID
= :4";
&sql = &sql | " AND A.MMC_ST_PAB = 'V'";
&sql = &sql | " AND B.BUSINESs_UNIT = :1";
&sql = &sql | " AND B.MMC_PAB_ID
= A.MMC_PAB_ID";
&sql = &sql | " AND B.EFFDT
= (SELECT MAX(B_E.EFFDT) FROM SYSADM.PS_M

MC_PAB_LN B_E, SYSADM.PS_MMC_PAB_ITEM C_E";


&sql = &sql | "
WHERE B_E.BUSINESS_UNIT = :1";
&sql = &sql | "
AND B_E.MMC_PAB_ID
= B.MMC_PAB_ID
";
&sql = &sql | "
AND B_E.EFFDT <= TO_DATE(SYSDATE)";
&sql = &sql | "
AND B_E.MMC_ST_REV ='AP'";
&sql = &sql | "
AND C_E.BUSINESS_UNIT = :1";
&sql = &sql | "
AND C_E.MMC_PAB_ID = B_E.MMC_PAB_ID"
;
&sql = &sql | "
AND C_E.EFFDT = B_E.EFFDT";
&sql = &sql | "
AND C_E.INV_ITEM_ID = :5";
&sql = &sql | "
AND %datein(:6) BETWEEN C_E.DATE_IN_
EFFECT AND C_E.DATE_OBSOLETE";
&sql = &sql | "
)";
&sql = &sql | " AND B.MMC_ST_REV = 'AP' ";
&sql = &sql | " AND C.BUSINESS_UNIT = :1";
&sql = &sql | " AND C.MMC_PAB_ID
= B.MMC_PAB_ID";
&sql = &sql | " AND C.EFFDT
= B.EFFDT ";
&sql = &sql | " AND C.INV_ITEM_ID = :5";
&sql = &sql | " AND %datein(:6) BETWEEN C.DATE_IN_EFFECT AND C.DATE_OBSOLETE"
;
&sql = &sql | " AND C.STATUS = 'A'";
&sql = &sql | " ORDER BY A.BUSINESS_UNIT, A.MMC_PAB_ID, B.EFFDT, C.INV_ITEM_I
D,C.DATE_OBSOLETE";
*/
/********************************** mmcb.hd185892.eo ************************
************/
/********************************** mmcb.hd89255.sn *************************
***********/
&SETID = BUSCA_SETID();
SQLExec("SELECT 'X' FROM SYSADM.PS_INV_ITEMS A WHERE A.SETID =:1 AND A.INV_IT
EM_ID =:2 AND A.ITEM_ORIGIN_BBL = '0' AND A.EFFDT = ( SELECT MAX(B.EFFDT) FROM S
YSADM.PS_INV_ITEMS B WHERE B.SETID = A.SETID AND B.INV_ITEM_ID = A.INV_ITEM_ID A
ND B.EFFDT <= SYSDATE )", &SETID, &item, &item_nacional);
/********************************** mmcb.hd89255.en *************************
***********/
/********************************** mmcb.hd185892.so ************************
************/
/* SQLExec(&sql, &bus_unit, &vendor_id, &end, &localEntrega, &item, &data, &p
_bus_unit, &p_pab_id, &p_effdt, &p_line_nbr, &p_item, &p_unit_of_measure, &p_pre
co); */
/********************************** mmcb.hd185892.eo ************************
************/
/********************************** mmcb.hd185892.sn ************************
************/
BUSCA_PRECO_PAB_POR_DIAS(&bus_unit, &vendor_id, &end, &localEntrega, &item, &
data, 120 /*NUMERO DE DIAS DA BUSCA*/, &p_bus_unit, &p_pab_id, &p_effdt, &p_line
_nbr, &p_item, &p_unit_of_measure, &p_preco);
If &p_preco = - 1 Then
BUSCA_PRECO_PAB_POR_DIAS(&bus_unit, &vendor_id, &end, &localEntrega, &item
, &data, 240 /*NUMERO DE DIAS DA BUSCA*/, &p_bus_unit, &p_pab_id, &p_effdt, &p_l
ine_nbr, &p_item, &p_unit_of_measure, &p_preco);
If &p_preco = - 1 Then
BUSCA_PRECO_PAB_POR_DIAS(&bus_unit, &vendor_id, &end, &localEntrega, &i

tem, &data, 480 /*NUMERO DE DIAS DA BUSCA*/, &p_bus_unit, &p_pab_id, &p_effdt, &
p_line_nbr, &p_item, &p_unit_of_measure, &p_preco);
If &p_preco = - 1 Then
BUSCA_PRECO_PAB(&bus_unit, &vendor_id, &end, &localEntrega, &item, &
data, &p_bus_unit, &p_pab_id, &p_effdt, &p_line_nbr, &p_item, &p_unit_of_measure
, &p_preco);
End-If;
End-If;
End-If;
/********************************** mmcb.hd185892.en ************************
************/
If All(&item_nacional) Then
If All(&p_pab_id, &p_item) Then
Return &p_preco;
Else
Return - 1;
End-If;
Else
REM Return 0.01; /*RAFAEL.LO*/
/*RAFAEL.SN*/
If All(&p_pab_id, &p_item) Then
Return &p_preco;
Else
Return 0.01;
End-If;
/*RAFAEL.EN*/
End-If;
End-Function;
/*******************************************************************************
************************************************
Fabiano Cunha - MMC - 23/10/2008 - sds.2772 - Veriricar se existe preco para o i
tem
********************************************************************************
***********************************************/
/* Declare Function ExistePrecoPab PeopleCode MMC_PAB_WRK.FUNCLIB_01 SavePreChan
ge;*/
Function ExistePrecoPab(&bus_unit As string, &vendor_id As string, &end As numbe
r, &localEntrega As string, &item As string, &data As date) Returns string
SQLExec("Select mmc_process_flag from ps_mmc_bu_prec_cab where business_unit
= :1", &bus_unit, &W_PROCESS_FLAG);
If &W_PROCESS_FLAG = "Y" Then
&retorno = BuscaPrecoPab(&bus_unit, &vendor_id, &end, &localEntrega, &item
, &data);
If &retorno = - 1 Then
Return "N";
Else
Return "Y";
End-If;
Else
Return "Y";

End-If;
End-Function;
/*******************************************************************************
************************************************
Fabiano Cunha - MMC - 23/10/2008 - sds.2772 - Veriricar se pode alterar o preo no
item na OC
********************************************************************************
***********************************************/
/* Declare Function BloquearPrecoPabOC PeopleCode MMC_PAB_WRK.FUNCLIB_01 SavePre
Change;*/
Function BloquearPrecoPabOC(&bus_unit As string, &vendor_id As string, &end As n
umber, &localEntrega As string, &item As string, &data As date) Returns string
&sql = "SELECT A.BUSINESS_UNIT, A.MMC_PAB_ID, B.EFFDT,C.LINE_NBR, C.INV_ITEM_
ID, C.UNIT_OF_MEASURE, C.PRICE, c.MTCH_RULE_APPL_FLG FROM ";
&sql = &sql | " SYSADM.PS_MMC_PAB_HDR A, SYSADM.PS_MMC_PAB_LN_M_VW B, SYSADM.
PS_MMC_PAB_ITM_VW C ";
&sql = &sql | " WHERE A.BUSINESS_UNIT = :1";
&sql = &sql | " AND A.VENDOR_ID
= :2";
&sql = &sql | " AND A.ADDRESS_sEQ_NUM = :3";
&sql = &sql | " AND A.SHIPTO_ID
= :4";
&sql = &sql | " AND A.MMC_ST_PAB = 'V'";
&sql = &sql | " AND B.BUSINESs_UNIT = :1";
&sql = &sql | " AND B.MMC_PAB_ID
= A.MMC_PAB_ID";
&sql = &sql | " AND B.EFFDT
= (SELECT MAX(B_E.EFFDT) FROM SYSADM.PS_M
MC_PAB_LN_M_VW B_E";
&sql = &sql | "
WHERE B_E.BUSINESS_UNIT = :1";
&sql = &sql | "
AND B_E.MMC_PAB_ID
= B.MMC_PAB_ID
";
/*&sql = &sql | "
AND B_E.EFFDT <= TO_DATE(SYSDATE)"
;*/ /*mmcb.hd225580.lo*/
&sql = &sql | "
AND B_E.MMC_ST_REV ='AP'";
&sql = &sql | "
)";
&sql = &sql | " AND B.MMC_ST_REV = 'AP' ";
&sql = &sql | " AND C.BUSINESS_UNIT = :1";
&sql = &sql | " AND C.MMC_PAB_ID
= B.MMC_PAB_ID";
&sql = &sql | " AND C.EFFDT
= B.EFFDT ";
&sql = &sql | " AND C.INV_ITEM_ID = :5";
&sql = &sql | " AND %datein(:6) BETWEEN C.DATE_IN_EFFECT AND C.DATE_OBSOLETE"
;
&sql = &sql | " AND C.STATUS = 'A'";
&sql = &sql | " ORDER BY A.BUSINESS_UNIT, A.MMC_PAB_ID, B.EFFDT, C.INV_ITEM_I
D,C.DATE_OBSOLETE";
SQLExec(&sql, &bus_unit, &vendor_id, &end, &localEntrega, &item, &data, &p_bu
s_unit, &p_pab_id, &p_effdt, &p_line_nbr, &p_item, &p_unit_of_measure, &p_preco,
&p_alterPreco);
If All(&p_pab_id, &p_item) Then
Return &p_alterPreco;
Else
Return "Y";
End-If;
End-Function;

[MMC_PAB_WRK.MMC_BOTAO.FieldChange]
/*******************************************************************************
**
* Fabiano Cunha - MMC - 15/08/2008 - mmcb.sds2772 - Abrir tela para informar as
* observaes da reviso.
********************************************************************************
**/
/*******************************************************************************
**
* Itamar Junior - MMC - 19/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Acrescentando o flag do item da BU_ITEMS_INV no email de notificao do sistema
********************************************************************************
**/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
Local Rowset &rs0, &rs1, &rs2; /*** mmcb.sds3089.ln ***/
If %Component = Component.MMC_PAB Then
If %Page = Page.MMC_PAB_HDR Then
TransferPanel(Page.MMC_PAB_OBS);
End-If;
/************************************* mmcb.sds3439.so **********************
**************/
/************************************* mmcb.sds3089.sn **********************
**************/
/*If %Page = Page.MMC_PAB_AJUSTE_LIN Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITM_VW);
If &rs1(1).MMC_PAB_LN.MMC_ST_REV.Value = "A" Then
For &i = 1 To &rs2.ActiveRowCount
If &rs2(&i).MMC_PAB_WRK.PRICE.Value > 0 Then
&rs2(&i).MMC_PAB_ITM_VW.PRICE.Value = &rs2(&i).MMC_PAB_WRK.PRICE.
Value;
End-If;
If All(&rs2(&i).MMC_PAB_WRK.DATE_IN_EFFECT.Value) Then
&rs2(&i).MMC_PAB_ITM_VW.DATE_IN_EFFECT.Value = &rs2(&i).MMC_PAB_W
RK.DATE_IN_EFFECT.Value;
&rs2(&i).MMC_PAB_ITM_VW.DATE_OBSOLETE.Value = "9999-12-31";
End-If
End-For;
Else
Error ("O AJUSTE LINEAR pode ser usado apenas em revies com o status de
ABERTO.");
End-If;
End-If;*/
/************************************* mmcb.sds3089.en **********************
**************/

/************************************* mmcb.sds3439.eo **********************


**************/
/************************************* mmcb.sds3439.sn **********************
**************/
If %Page = Page.MMC_PAB_AJUSTE_LIN Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITM_VW);
If &rs1(1).MMC_PAB_LN_M_VW.MMC_ST_REV.Value = "A" Then
For &i = 1 To &rs2.ActiveRowCount
If &rs2(&i).MMC_PAB_WRK.PRICE.Value > 0 Then
&rs2(&i).MMC_PAB_ITM_VW.PRICE.Value = &rs2(&i).MMC_PAB_WRK.PRICE.
Value;
End-If;
If All(&rs2(&i).MMC_PAB_WRK.DATE_IN_EFFECT.Value) Then
&rs2(&i).MMC_PAB_ITM_VW.DATE_IN_EFFECT.Value = &rs2(&i).MMC_PAB_W
RK.DATE_IN_EFFECT.Value;
&rs2(&i).MMC_PAB_ITM_VW.DATE_OBSOLETE.Value = "9999-12-31";
End-If
End-For;
Else
Error ("O AJUSTE LINEAR pode ser usado apenas em revies com o status de
ABERTO.");
End-If;
End-If;
/************************************* mmcb.sds3439.en **********************
**************/
End-If;
[MMC_PAB_WRK.MMC_BOTAO.RowInit]
/*******************************************************************************
**************
* Eduardo Garcia - MMC - 18/07/2011 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
*
* Novo painel que viabiliza a possibilidade de criar um novo PAB utilizando as i
nformaoes *
* de um outro PAB j existente
*
********************************************************************************
*************/
If %Component = "MMC_PAB_CLONE" Then
If MMC_PAB_CLONE.MMC_ID_CLONE = "NEXT" Then
Hide(MMC_PAB_ID);
Hide(MMC_BOTAO2);
Else
UnHide(MMC_PAB_ID);
UnHide(MMC_BOTAO2);
MMC_PAB_ID = MMC_PAB_CLONE.MMC_ID_CLONE;
Gray(MMC_PAB_CLONE.BUSINESS_UNIT);
End-If;
End-If;
[MMC_PAB_WRK.MMC_BOTAO.SavePostChange]
/*******************************************************************************

**************
* Eduardo Garcia - MMC - 18/07/2011 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
*
* Novo painel que viabiliza a possibilidade de criar um novo PAB utilizando as i
nformaoes *
* de um outro PAB j existente
*
********************************************************************************
*************/
/*******************************************************************************
**************
* Filipe/Rosangela Enc. Vinicius Favero - MMC - 08/08/2013 - MMCB.HD180475
*
* Ajustar o insert na PS_MMC_PAB_ITEM para que contemple o campo QTY_PRECISION
*
********************************************************************************
*************/
/*******************************************************************************
**************
* Filipe/Rosangela Enc. Vinicius Favero - MMC - 20/09/2013 - MMCB.HD183998
*
* Ajustar o programa inteiro para amarra a unidade de negocio do pab de origem
*
********************************************************************************
*************/
/*******************************************************************************
**************
* Daniel/Wagner Enc. Vinicius Favero - MMC - 01/10/2013 - MMCB.hd184536
*
* Ajustar inserts para inserir a data efetiva no tipo dd/mm/yyyy (sem horario)
*
********************************************************************************
*************/
/*******************************************************************************
**************
* Mauri Rodrigo Back - MMC - 08/04/2014 - MMCB.SDS4607
*
* Campo Origem
*
********************************************************************************
*************/
/*******************************************************************************
**************
* Augusto V Neto - MMC - 14/08/2014 - MMCB.SDS4607
*
* Acrescentar campo de alterao de OC ao PAB
*
********************************************************************************
*************/

If %Component = "MMC_PAB_CLONE" Then


/****************************************************************************
****************/
/** CLONANDO
*********************************************************
****************/
/****************************************************************************
****************/

/** :1 = VALOR GERADO **/


/** :2 = PAB ATUAL A SER CLONADO **/
/** :3 = id do fornecedor **/
&idFornecedor = MMC_PAB_CLONE.VENDOR_ID;
/** :4 = endereco **/
&adress = MMC_PAB_CLONE.ADDRESS_SEQ_NUM;
/** :5 = locao de entrega **/
&localEntrega = MMC_PAB_CLONE.SHIPTO_ID;
/** HDR **/
/*************************************************mmcb.sds4784 s.o***********
**************************************************
/*SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_HDR (BUSINESS_UNIT, MMC_PAB_ID, VEND
OR_ID, ADDRESS_SEQ_NUM, SHIPTO_ID, MMC_DT_ABERTURA,UTILIZ_CD, CONTACT_NAME, PHON
E, EMAIL_ADDR, MMC_CONT_COMERCIAL, MMC_EMAILCOMERCIAL, MMC_PHONE_COMER, MMC_CONT
_FISCAL, MMC_EMAIL_FISC, MMC_PHONE_FISC, CURRENCY_CD, PYMNT_TERMS_CD, LEAD_TIME,
FREIGHT_TERMS, REVISION_NUMBER, MMC_ST_PAB ) SELECT :6, :1, :3, :4, :5, SYSDAT
E, UTILIZ_CD, CONTACT_NAME, PHONE, EMAIL_ADDR, MMC_CONT_COMERCIAL, MMC_EMAILCOME
RCIAL, MMC_PHONE_COMER, MMC_CONT_FISCAL, MMC_EMAIL_FISC, MMC_PHONE_FISC, CURRENC
Y_CD, PYMNT_TERMS_CD, LEAD_TIME, FREIGHT_TERMS, 1, 'A' FROM SYSADM.PS_MMC_PAB_HD
R where mmc_pab_id = :2 AND BUSINESS_UNIT = :7 ", MMC_PAB_CLONE.MMC_ID_CLONE, MM
C_PAB_CLONE.MMC_PAB_ID, &idFornecedor, &adress, &localEntrega, MMC_PAB_CLONE.BUS
INESS_UNIT, MMC_PAB_CLONE.BUSINESS_UNIT_FROM);*/
/*************************************************mmcb.sds4784 e.o***********
**************************************************
/*************************************************mmcb.sds4784 s.n***********
**************************************************/
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_HDR (BUSINESS_UNIT, MMC_PAB_ID, VENDOR
_ID, ADDRESS_SEQ_NUM, SHIPTO_ID, MMC_DT_ABERTURA,UTILIZ_CD, CONTACT_NAME, PHONE,
EMAIL_ADDR, MMC_CONT_COMERCIAL, MMC_EMAILCOMERCIAL, MMC_PHONE_COMER, MMC_CONT_F
ISCAL, MMC_EMAIL_FISC, MMC_PHONE_FISC, CURRENCY_CD, PYMNT_TERMS_CD, LEAD_TIME, F
REIGHT_TERMS, REVISION_NUMBER, MMC_ST_PAB, MMC_ALTERA_OC ) SELECT :6, :1, :3, :
4, :5, SYSDATE, UTILIZ_CD, CONTACT_NAME, PHONE, EMAIL_ADDR, MMC_CONT_COMERCIAL,
MMC_EMAILCOMERCIAL, MMC_PHONE_COMER, MMC_CONT_FISCAL, MMC_EMAIL_FISC, MMC_PHONE_
FISC, CURRENCY_CD, PYMNT_TERMS_CD, LEAD_TIME, FREIGHT_TERMS, 1, 'A', MMC_ALTERA_
OC FROM SYSADM.PS_MMC_PAB_HDR where mmc_pab_id = :2 AND BUSINESS_UNIT = :7 ", MM
C_PAB_CLONE.MMC_ID_CLONE, MMC_PAB_CLONE.MMC_PAB_ID, &idFornecedor, &adress, &loc
alEntrega, MMC_PAB_CLONE.BUSINESS_UNIT, MMC_PAB_CLONE.BUSINESS_UNIT_FROM);
/*************************************************mmcb.sds4784 e.n***********
**************************************************/
/** NUMERO DA REVISAO VIGENTE**/
SQLExec("SELECT REVISION_NUMBER FROM SYSADM.PS_MMC_PAB_HDR WHERE MMC_PAB_ID =
:1 and BUSINESS_UNIT = :2", MMC_PAB_CLONE.MMC_PAB_ID, MMC_PAB_CLONE.BUSINESS_UN
IT_FROM, &revisionNumber);
/** DATA EFETIVA DA REVISAO VIGENTE**/
SQLExec("SELECT EFFDT FROM SYSADM.PS_MMC_PAB_LN WHERE MMC_PAB_ID = :1 AND REV
ISION_NUMBER = :2 AND BUSINESS_UNIT = :3", MMC_PAB_CLONE.MMC_PAB_ID, &revisionNu
mber, MMC_PAB_CLONE.BUSINESS_UNIT_FROM, &effDT);
/** LN **/
/*************************************************mmcb.hd184536 s.o**********
***************************************************
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_LN( BUSINESS_UNIT, MMC_PAB_ID, EFFDT,
REVISION_NUMBER, MMC_USER_COMPRADOR, DT_TIMESTAMP, MMC_SUPERV_ID, MMC_GERENTE_ID
, MMC_DIRETOR_ID, PROCESS_FLAG, FLAG_SUNDAY, FLAG_MONDAY, FLAG_TUESDAY, FLAG_WED

NESDAY, FLAG_THURSDAY, FLAG_FRIDAY, FLAG_SATURDAY, MMC_FREQUENCIA, PROCESS_INSTA


NCE, MMC_ST_REV, CURRENCY_CD, PYMNT_TERMS_CD, LEAD_TIME, FREIGHT_TERMS )SELECT :
4, :1, SYSDATE, 1, MMC_USER_COMPRADOR, DT_TIMESTAMP, MMC_SUPERV_ID, MMC_GERENTE_
ID, MMC_DIRETOR_ID, PROCESS_FLAG, FLAG_SUNDAY, FLAG_MONDAY, FLAG_TUESDAY, FLAG_W
EDNESDAY, FLAG_THURSDAY, FLAG_FRIDAY, FLAG_SATURDAY, MMC_FREQUENCIA, PROCESS_INS
TANCE,'A' , CURRENCY_CD, PYMNT_TERMS_CD, LEAD_TIME, FREIGHT_TERMS FROM SYSADM.PS
_MMC_PAB_LN where mmc_pab_id = :2 AND REVISION_NUMBER = :3 AND BUSINESS_UNIT = :
5", MMC_PAB_CLONE.MMC_ID_CLONE, MMC_PAB_CLONE.MMC_PAB_ID, &revisionNumber, MMC_P
AB_CLONE.BUSINESS_UNIT, MMC_PAB_CLONE.BUSINESS_UNIT_FROM);
***************************************************mmcb.hd184536 e.o************
***************************************************/
/**************************************************mmcb.hd184536 s.n*********
***************************************************/
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_LN( BUSINESS_UNIT, MMC_PAB_ID, EFFDT,
REVISION_NUMBER, MMC_USER_COMPRADOR, DT_TIMESTAMP, MMC_SUPERV_ID, MMC_GERENTE_ID
, MMC_DIRETOR_ID, PROCESS_FLAG, FLAG_SUNDAY, FLAG_MONDAY, FLAG_TUESDAY, FLAG_WED
NESDAY, FLAG_THURSDAY, FLAG_FRIDAY, FLAG_SATURDAY, MMC_FREQUENCIA, PROCESS_INSTA
NCE, MMC_ST_REV, CURRENCY_CD, PYMNT_TERMS_CD, LEAD_TIME, FREIGHT_TERMS )SELECT :
4, :1, trunc(SYSDATE), 1, MMC_USER_COMPRADOR, DT_TIMESTAMP, MMC_SUPERV_ID, MMC_G
ERENTE_ID, MMC_DIRETOR_ID, PROCESS_FLAG, FLAG_SUNDAY, FLAG_MONDAY, FLAG_TUESDAY,
FLAG_WEDNESDAY, FLAG_THURSDAY, FLAG_FRIDAY, FLAG_SATURDAY, MMC_FREQUENCIA, PROC
ESS_INSTANCE,'A' , CURRENCY_CD, PYMNT_TERMS_CD, LEAD_TIME, FREIGHT_TERMS FROM SY
SADM.PS_MMC_PAB_LN where mmc_pab_id = :2 AND REVISION_NUMBER = :3 AND BUSINESS_U
NIT = :5", MMC_PAB_CLONE.MMC_ID_CLONE, MMC_PAB_CLONE.MMC_PAB_ID, &revisionNumber
, MMC_PAB_CLONE.BUSINESS_UNIT, MMC_PAB_CLONE.BUSINESS_UNIT_FROM);
/**************************************************mmcb.hd184536 e.n*********
*******************************************************/
/** ITEM **/
/*********************************************MMCB.hd184536-SO***************
*****************************************************
*********************************************MMCB.HD180475-SO****************
****************************************************
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_ITEM( BUSINESS_UNIT, MMC_PAB_ID, EFFDT
, LINE_NBR, INV_ITEM_ID, UNIT_OF_MEASURE, FLAG, CONVERSION_RATE, TAX_CLASS_BRL,
MMC_FLAG_APROV, COMMENT_TEXT, TAX_CLASS_CAT_BRL, PRICE, MMC_PRICE_OLD, MMC_PRECO
_PRATICAD, MMC_FLG_PRICE, MTCH_RULE_APPL_FLG, DATE_IN_EFFECT, DATE_OBSOLETE, LEA
D_TIME, MMC_FLG_LEADTIME, MMC_LOT_MINIMO, MMC_PERCENT_COMPRA, COMMENTS_254, PROC
ESS_FLAG, PROCESS_INSTANCE, STATUS) SELECT :4, :1, SYSDATE, LINE_NBR, INV_ITEM_I
D, UNIT_OF_MEASURE, FLAG, CONVERSION_RATE, TAX_CLASS_BRL, MMC_FLAG_APROV, COMME
NT_TEXT, TAX_CLASS_CAT_BRL, PRICE, MMC_PRICE_OLD, MMC_PRECO_PRATICAD, MMC_FLG_PR
ICE, MTCH_RULE_APPL_FLG, DATE_IN_EFFECT, DATE_OBSOLETE, LEAD_TIME, MMC_FLG_LEADT
IME, MMC_LOT_MINIMO, MMC_PERCENT_COMPRA, COMMENTS_254, PROCESS_FLAG, PROCESS_INS
TANCE, STATUS FROM SYSADM.PS_MMC_PAB_ITEM where mmc_pab_id = :2 AND EFFDT = :3
", MMC_PAB_CLONE.MMC_ID_CLONE, MMC_PAB_CLONE.MMC_PAB_ID, &effDT, MMC_PAB_CLONE.B
USINESS_UNIT);
*********************************************MMCB.HD180475-EO*******************
*************************************************
*********************************************MMCB.HD180475-SN****************
****************************************************
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_ITEM( BUSINESS_UNIT, MMC_PAB_ID, EFFDT
, LINE_NBR, INV_ITEM_ID, UNIT_OF_MEASURE, FLAG, CONVERSION_RATE, TAX_CLASS_BRL,
MMC_FLAG_APROV, COMMENT_TEXT, TAX_CLASS_CAT_BRL, PRICE, MMC_PRICE_OLD, MMC_PRECO
_PRATICAD, MMC_FLG_PRICE, MTCH_RULE_APPL_FLG, DATE_IN_EFFECT, DATE_OBSOLETE, LEA
D_TIME, MMC_FLG_LEADTIME, MMC_LOT_MINIMO, MMC_PERCENT_COMPRA, COMMENTS_254, PROC
ESS_FLAG, PROCESS_INSTANCE, STATUS, QTY_PRECISION ) SELECT :4, :1, SYSDATE, LINE
_NBR, INV_ITEM_ID, UNIT_OF_MEASURE, FLAG, CONVERSION_RATE, TAX_CLASS_BRL, MMC_F
LAG_APROV, COMMENT_TEXT, TAX_CLASS_CAT_BRL, PRICE, MMC_PRICE_OLD, MMC_PRECO_PRAT
ICAD, MMC_FLG_PRICE, MTCH_RULE_APPL_FLG, DATE_IN_EFFECT, DATE_OBSOLETE, LEAD_TIM
E, MMC_FLG_LEADTIME, MMC_LOT_MINIMO, MMC_PERCENT_COMPRA, COMMENTS_254, PROCESS_F

LAG, PROCESS_INSTANCE, STATUS, QTY_PRECISION FROM SYSADM.PS_MMC_PAB_ITEM where m


mc_pab_id = :2 AND EFFDT = :3 AND BUSINESS_UNIT = :5", MMC_PAB_CLONE.MMC_ID_CLO
NE, MMC_PAB_CLONE.MMC_PAB_ID, &effDT, MMC_PAB_CLONE.BUSINESS_UNIT, MMC_PAB_CLONE
.BUSINESS_UNIT_FROM);
*********************************************MMCB.HD180475-EN****************
****************************************************
*********************************************MMCB.hd184536-EO****************
****************************************************/
/*********************************************MMCB.hd184536-SN***************
*****************************************************/
/*********************************************MMCB.SDS4607-SO****************
****************************************************/
/* SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_ITEM( BUSINESS_UNIT, MMC_PAB_ID,
EFFDT, LINE_NBR, INV_ITEM_ID, UNIT_OF_MEASURE, FLAG, CONVERSION_RATE, TAX_CLASS_
BRL, MMC_FLAG_APROV, COMMENT_TEXT, TAX_CLASS_CAT_BRL, PRICE, MMC_PRICE_OLD, MMC_
PRECO_PRATICAD, MMC_FLG_PRICE, MTCH_RULE_APPL_FLG, DATE_IN_EFFECT, DATE_OBSOLETE
, LEAD_TIME, MMC_FLG_LEADTIME, MMC_LOT_MINIMO, MMC_PERCENT_COMPRA, COMMENTS_254,
PROCESS_FLAG, PROCESS_INSTANCE, STATUS, QTY_PRECISION ) SELECT :4, :1, TRUNC(SY
SDATE), LINE_NBR, INV_ITEM_ID, UNIT_OF_MEASURE, FLAG, CONVERSION_RATE, TAX_CLAS
S_BRL, MMC_FLAG_APROV, COMMENT_TEXT, TAX_CLASS_CAT_BRL, PRICE, MMC_PRICE_OLD, MM
C_PRECO_PRATICAD, MMC_FLG_PRICE, MTCH_RULE_APPL_FLG, DATE_IN_EFFECT, DATE_OBSOLE
TE, LEAD_TIME, MMC_FLG_LEADTIME, MMC_LOT_MINIMO, MMC_PERCENT_COMPRA, COMMENTS_25
4, PROCESS_FLAG, PROCESS_INSTANCE, STATUS, QTY_PRECISION FROM SYSADM.PS_MMC_PAB_
ITEM where mmc_pab_id = :2 AND EFFDT = :3 AND BUSINESS_UNIT = :5", MMC_PAB_CLON
E.MMC_ID_CLONE, MMC_PAB_CLONE.MMC_PAB_ID, &effDT, MMC_PAB_CLONE.BUSINESS_UNIT, M
MC_PAB_CLONE.BUSINESS_UNIT_FROM);*/
/*********************************************MMCB.hd184536-EN***************
*****************************************************/
/*********************************************MMCB.SDS4607-EO****************
****************************************************/
/*************************************************mmcb.sds4784 s.o***********
**************************************************/
/*********************************************MMCB.SDS4607-SN****************
****************************************************/
/*SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_ITEM( BUSINESS_UNIT, MMC_PAB_ID, EFF
DT, LINE_NBR, INV_ITEM_ID, UNIT_OF_MEASURE, FLAG, CONVERSION_RATE, TAX_CLASS_BRL
, MMC_FLAG_APROV, COMMENT_TEXT, TAX_CLASS_CAT_BRL, PRICE, MMC_PRICE_OLD, MMC_PRE
CO_PRATICAD, MMC_FLG_PRICE, MTCH_RULE_APPL_FLG, DATE_IN_EFFECT, DATE_OBSOLETE, L
EAD_TIME, MMC_FLG_LEADTIME, MMC_LOT_MINIMO, MMC_PERCENT_COMPRA, COMMENTS_254, PR
OCESS_FLAG, PROCESS_INSTANCE, STATUS, QTY_PRECISION, ITEM_ORIGIN_BBL) SELECT :4,
:1, TRUNC(SYSDATE), LINE_NBR, INV_ITEM_ID, UNIT_OF_MEASURE, FLAG, CONVERSION_R
ATE, TAX_CLASS_BRL, MMC_FLAG_APROV, COMMENT_TEXT, TAX_CLASS_CAT_BRL, PRICE, MMC_
PRICE_OLD, MMC_PRECO_PRATICAD, MMC_FLG_PRICE, MTCH_RULE_APPL_FLG, DATE_IN_EFFECT
, DATE_OBSOLETE, LEAD_TIME, MMC_FLG_LEADTIME, MMC_LOT_MINIMO, MMC_PERCENT_COMPRA
, COMMENTS_254, PROCESS_FLAG, PROCESS_INSTANCE, STATUS, QTY_PRECISION, ITEM_ORIG
IN_BBL FROM SYSADM.PS_MMC_PAB_ITEM where mmc_pab_id = :2 AND EFFDT = :3 AND BUS
INESS_UNIT = :5", MMC_PAB_CLONE.MMC_ID_CLONE, MMC_PAB_CLONE.MMC_PAB_ID, &effDT,
MMC_PAB_CLONE.BUSINESS_UNIT, MMC_PAB_CLONE.BUSINESS_UNIT_FROM);*/
/*********************************************MMCB.SDS4607-EN****************
****************************************************/
/*************************************************mmcb.sds4784 e.o***********
**************************************************/
/*************************************************mmcb.sds4784 s.n***********
**************************************************/
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_ITEM( BUSINESS_UNIT, MMC_PAB_ID, EFFDT
, LINE_NBR, INV_ITEM_ID, UNIT_OF_MEASURE, FLAG, CONVERSION_RATE, TAX_CLASS_BRL,
MMC_FLAG_APROV, COMMENT_TEXT, TAX_CLASS_CAT_BRL, PRICE, MMC_PRICE_OLD, MMC_PRECO
_PRATICAD, MMC_FLG_PRICE, MTCH_RULE_APPL_FLG, DATE_IN_EFFECT, DATE_OBSOLETE, LEA
D_TIME, MMC_FLG_LEADTIME, MMC_LOT_MINIMO, MMC_PERCENT_COMPRA, COMMENTS_254, PROC

ESS_FLAG, PROCESS_INSTANCE, STATUS, QTY_PRECISION, ITEM_ORIGIN_BBL, MMC_ALTERA_O


C) SELECT :4, :1, TRUNC(SYSDATE), LINE_NBR, INV_ITEM_ID, UNIT_OF_MEASURE, FLAG,
CONVERSION_RATE, TAX_CLASS_BRL, MMC_FLAG_APROV, COMMENT_TEXT, TAX_CLASS_CAT_BRL
, PRICE, MMC_PRICE_OLD, MMC_PRECO_PRATICAD, MMC_FLG_PRICE, MTCH_RULE_APPL_FLG, D
ATE_IN_EFFECT, DATE_OBSOLETE, LEAD_TIME, MMC_FLG_LEADTIME, MMC_LOT_MINIMO, MMC_P
ERCENT_COMPRA, COMMENTS_254, PROCESS_FLAG, PROCESS_INSTANCE, STATUS, QTY_PRECISI
ON, ITEM_ORIGIN_BBL, MMC_ALTERA_OC FROM SYSADM.PS_MMC_PAB_ITEM where mmc_pab_id
= :2 AND EFFDT = :3 AND BUSINESS_UNIT = :5", MMC_PAB_CLONE.MMC_ID_CLONE, MMC_P
AB_CLONE.MMC_PAB_ID, &effDT, MMC_PAB_CLONE.BUSINESS_UNIT, MMC_PAB_CLONE.BUSINESS
_UNIT_FROM);
/*************************************************mmcb.sds4784 e.n***********
**************************************************/
/** INFO **/
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_INFO ( BUSINESS_UNIT, MMC_PAB_ID, PV_
INFOBOX ) SELECT :3, :1 , PV_INFOBOX FROM SYSADM.PS_MMC_PAB_INFO where mmc_pab_
id = :2 AND BUSINESS_UNIT = :4", MMC_PAB_CLONE.MMC_ID_CLONE, MMC_PAB_CLONE.MMC_P
AB_ID, MMC_PAB_CLONE.BUSINESS_UNIT, MMC_PAB_CLONE.BUSINESS_UNIT_FROM);
/** COMMENT **/
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_COMENT ( BUSINESS_UNIT, MMC_PAB_ID, PV
_INFOBOX ) SELECT :3, :1 , PV_INFOBOX FROM SYSADM.PS_MMC_PAB_COMENT where mmc_p
ab_id = :2 AND BUSINESS_UNIT = :4", MMC_PAB_CLONE.MMC_ID_CLONE, MMC_PAB_CLONE.MM
C_PAB_ID, MMC_PAB_CLONE.BUSINESS_UNIT, MMC_PAB_CLONE.BUSINESS_UNIT_FROM);
/** OBS **/
/*************************************************mmcb.hd184536 s.o**********
***************************************************
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_OBS ( BUSINESS_UNIT, MMC_PAB_ID, EFFDT
, PV_INFOBOX ) SELECT :4, :1 , SYSDATE, PV_INFOBOX FROM SYSADM.PS_MMC_PAB_OBS wh
ere mmc_pab_id = :2 AND EFFDT = :3 AND BUSINESS_UNIT = :5", MMC_PAB_CLONE.MMC_ID
_CLONE, MMC_PAB_CLONE.MMC_PAB_ID, &effDT, MMC_PAB_CLONE.BUSINESS_UNIT, MMC_PAB_C
LONE.BUSINESS_UNIT_FROM);
*************************************************mmcb.hd184536 e.o**************
***********************************************/
/*************************************************mmcb.hd184536 s.n**********
***************************************************/
SQLExec("INSERT INTO SYSADM.PS_MMC_PAB_OBS ( BUSINESS_UNIT, MMC_PAB_ID, EFFDT
, PV_INFOBOX ) SELECT :4, :1 , trunc(SYSDATE), PV_INFOBOX FROM SYSADM.PS_MMC_PAB
_OBS where mmc_pab_id = :2 AND EFFDT = :3 AND BUSINESS_UNIT = :5", MMC_PAB_CLONE
.MMC_ID_CLONE, MMC_PAB_CLONE.MMC_PAB_ID, &effDT, MMC_PAB_CLONE.BUSINESS_UNIT, MM
C_PAB_CLONE.BUSINESS_UNIT_FROM);
/*************************************************mmcb.hd184536 e.n**********
***************************************************/
UnHide(MMC_PAB_ID);
UnHide(MMC_BOTAO2);
Hide(MMC_BOTAO);
Gray(MMC_PAB_CLONE.VENDOR_ID);
Gray(MMC_PAB_CLONE.ADDRESS_SEQ_NUM);
Gray(MMC_PAB_CLONE.SHIPTO_ID);
Gray(MMC_PAB_CLONE.BUSINESS_UNIT);
MMC_PAB_ID = MMC_PAB_CLONE.MMC_ID_CLONE;
End-If;
[MMC_PAB_WRK.MMC_BOTAO.SavePreChange]
Declare Function mmc_numeracao_id PeopleCode MMC_NUMERACAO.MMC_NUMERACAO_ID Save
PostChange;

If %Component = "MMC_PAB_CLONE" Then


MMC_PAB_CLONE.MMC_ID_CLONE = mmc_numeracao_id(9);
End-If;
[MMC_PAB_WRK.MMC_BOTAO2.FieldChange]
/*******************************************************************************
**
Fabiano Cunha - MMC - 15/08/2008 - mmcb.sds2772 - Abrir tela para informar as
observaes da reviso.
********************************************************************************
**/
/*******************************************************************************
**************
* Eduardo Garcia - MMC - 18/07/2011 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
*
* Novo painel que viabiliza a possibilidade de criar um novo PAB utilizando as i
nformaoes *
* de um outro PAB j existente
*
********************************************************************************
*************/
If %Component = Component.MMC_PAB Then
TransferPanel(Page.MMC_PAB_INF_REV);
End-If;
If %Component = Component.MMC_PAB_CLONE Then
BUSINESS_UNIT = MMC_PAB_CLONE.BUSINESS_UNIT;
Transfer( False, MenuName."ADMINISTER_CONTRACTS", BarName."USE", ItemName."MM
C_PAB", Page."MMC_PAB_HDR", "U", BUSINESS_UNIT, MMC_PAB_ID, BUSINESS_UNIT);
End-If;
[MMC_PAB_WRK.MMC_BOTAO3.FieldChange]
/*******************************************************************************
**
Fabiano Cunha - MMC - 15/08/2008 - mmcb.sds2772 - Abrir tela para informar as
observaes da reviso.
********************************************************************************
**/
If %Component = Component.MMC_PAB Then
TransferPanel(Page.MMC_PAB_HDR);
End-If;
[MMC_PAB_WRK.MMC_BOTAO_SEL.FieldChange]
/*******************************************************************************
**
Fabiano Cunha - MMC - 15/08/2008 - mmcb.sds2772 - Abrir tela para informar as
observaes da reviso.
********************************************************************************
**/
If %Component = Component.MMC_PAB Then
TransferPanel(Page.MMC_PAB_HDR);
End-If;
[MMC_PAB_WRK.MMC_PERCENT_GLOBAL.FieldChange]
/*******************************************************************************

**
* Itamar Junior - MMC - 19/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Acrescentando o flag do item da BU_ITEMS_INV no email de notificao do sistema
********************************************************************************
**/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3439 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
Local Rowset &rs0, &rs1, &rs2; /*** mmcb.sds3089.ln ***/
/************************************* mmcb.sds3439.so *************************
***********/
/************************************* mmcb.sds3089.sn *************************
***********/
/*If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITM_VW);
For &i = 1 To &rs2.ActiveRowCount
&rs2(&i).MMC_PAB_WRK.PRICE.Value = (&rs2(&i).MMC_PAB_ITM_VW.PRICE.Value +
((&rs2(&i).MMC_PAB_ITM_VW.PRICE.Value * MMC_PERCENT_GLOBAL) / 100));
&rs2(&i).MMC_PAB_WRK.MMC_PERCENT_LOCAL.Value = MMC_PERCENT_GLOBAL;
End-For;
End-If;*/
/************************************* mmcb.sds3089.en *************************
***********/
/************************************* mmcb.sds3439.eo *************************
***********/
/************************************* mmcb.sds3439.sn *************************
***********/
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITM_VW);
For &i = 1 To &rs2.ActiveRowCount
&rs2(&i).MMC_PAB_WRK.PRICE.Value = (&rs2(&i).MMC_PAB_ITM_VW.PRICE.Value +
((&rs2(&i).MMC_PAB_ITM_VW.PRICE.Value * MMC_PERCENT_GLOBAL) / 100));
&rs2(&i).MMC_PAB_WRK.MMC_PERCENT_LOCAL.Value = MMC_PERCENT_GLOBAL;
End-For;
End-If;
/************************************* mmcb.sds3439.en *************************
***********/
[MMC_PAB_WRK.MMC_PERCENT_LOCAL.FieldChange]
/*******************************************************************************
**
* Itamar Junior - MMC - 19/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico -

MRPs
* Acrescentando o flag do item da BU_ITEMS_INV no email de notificao do sistema
********************************************************************************
**/
/************************************* mmcb.sds3089.sn *************************
***********/
If %Component = Component.MMC_PAB Then
PRICE = (MMC_PAB_ITM_VW.PRICE + ((MMC_PAB_ITM_VW.PRICE * MMC_PERCENT_LOCAL) /
100));
End-If;
/************************************* mmcb.sds3089.en *************************
***********/
[MMC_PAB_WRK.ORIG_DATE_IN_EFF.FieldChange]
/*******************************************************************************
**
* Itamar Junior - MMC - 19/10/2009 - mmcb.sds3089 - Melhorias no PAB Eletrnico MRPs
* Acrescentando o flag do item da BU_ITEMS_INV no email de notificao do sistema
********************************************************************************
**/
/*******************************************************************************
**********
* Lucas Porto - MMC - 15/10/2010 - mmcb.sds3089 - Otimizar a tela do PAB para pe
rmitir salvar PABs com vrias revises e linhas - MRPs
* Foi criada uma view para trazer apenas a ultima reviso de um PAB, pois o pab PB
00000493 tem mais de 60 revisoes com mais de 600 por reviso
* assim quando se ia editar ou criar uma reviso ocorria time-out no navegador.
********************************************************************************
**********/
Local Rowset &rs0, &rs1, &rs2; /*** mmcb.sds3089.ln ***/
/************************************* mmcb.sds3439.so *************************
***********/
/************************************* mmcb.sds3089.sn *************************
***********/
/*If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN);
&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITM_VW);
For &i = 1 To &rs2.ActiveRowCount
&rs2(&i).MMC_PAB_WRK.DATE_IN_EFFECT.Value = ORIG_DATE_IN_EFF;
End-For;
End-If;*/
/************************************* mmcb.sds3089.en *************************
***********/
/************************************* mmcb.sds3439.eo *************************
***********/
/************************************* mmcb.sds3439.sn *************************
***********/
If %Component = Component.MMC_PAB Then
&rs0 = GetLevel0();
&rs1 = &rs0(1).GetRowset(Scroll.MMC_PAB_LN_M_VW);

&rs2 = &rs1(CurrentRowNumber(1)).GetRowset(Scroll.MMC_PAB_ITM_VW);
For &i = 1 To &rs2.ActiveRowCount
&rs2(&i).MMC_PAB_WRK.DATE_IN_EFFECT.Value = ORIG_DATE_IN_EFF;
End-For;
End-If;
/************************************* mmcb.sds3439.en *************************
***********/
[MMC_PU_WRK.BUTTON.SavePreChange]
/*******************************************************************************
***********************************************************
Fabiano Cunha - MMC - 19/09/2008 - Buscar Emails Processo unificado.
********************************************************************************
**********************************************************/
/*******************************************************************************
********
* Vincius Alves Mello - MMC - mmcb.hd84296 - 22/02/2010
* Incluir o campo SEQ_NBR no insert da tabela MMC_EMAIL_HDR
********************************************************************************
*******/
Function PU_BuscarEmail(&p_setid, &p_sistema, &p_grupo) Returns string
&sql = CreateSQL("SELECT A.SETID, A.SYS_ADMIN_TITLE, A.GROUP_ID, a.EMAIL_CC,
B.USER_ID, U.OPRDEFNDESC, U.EMAILID FROM SYSADM.PS_MMC_PU_MAILGHDR A, SYSADM.PS_
MMC_PU_MAILG_LN B, SYSADM.PSOPRDEFN U WHERE A.SETID = :1 AND A.SYS_ADMIN_TITLE
= :2 AND A.GROUP_ID = :3 AND A.SETID = B.SETID(+) AND A.SYS_ADMIN_TITLE = B.SY
S_ADMIN_TITLE(+) AND A.GROUP_ID = B.GROUP_ID(+) AND A.STATUS(+) = 'A' AND B.S
TATUS(+) = 'A' AND B.USER_ID = U.OPRID(+)", &p_setid, &p_sistema, &p_grupo, &se
tid, &sistema, &grupo, &email_CC, &user_id, &nome_user, &email);
&env_mail = "";
&env_mail_cc = "";
While &sql.Fetch(&setid, &sistema, &grupo, &email_CC, &user_id, &nome_user, &
email)
If All(&env_mail) Then
&env_mail = &env_mail | "," | &email;
Else
&env_mail = &email;
End-If;
If All(&email_CC) Then
&env_mail_cc = &email_CC;
End-If;
End-While;
If All(&env_mail) And
All(&env_mail_cc) Then
&env_mail = &env_mail | "," | &env_mail_cc;
Else
If None(&env_mail) And
All(&env_mail_cc) Then
&env_mail = &env_mail_cc;
End-If;
End-If;
Return &env_mail;
End-Function;

/*******************************************************************************
***********************************************************
Fabiano Cunha - MMC - 01/10/2008 - Gravar e-mail na tabela de envio.
********************************************************************************
**********************************************************/
Function PU_GravarEmail(&p_idMail, &p_DATAHORA, &p_tipo_Email, &p_assunto, &p_em
itente, &p_destinatario, &p_path_anexo, &p_msg) Returns boolean
&MAX = 253;
&linha = 1;
&msg = &p_msg;
&MSG_TMP = &msg;
If All(&p_destinatario) Then
SQLExec("select to_char(max(dt_timestamp),'MM/DD/YYYY hh24:mm:ss') from SY
SADM.PS_MMC_EMAIL_HDR where MMC_EMAILID =:1 and DT_TIMESTAMP = %datetimein(:2)",
&p_idMail, &p_DATAHORA, &ult_dt_hora);
If All(&ult_dt_hora) Then
&p_DATAHORA = AddToDateTime(DateTimeValue(&ult_dt_hora), 0, 0, 0, 0, 0,
1);
End-If;
/********************************* mmcb.hd84296.so ***********************
**********/
/* SQLExec("INSERT INTO SYSADM.PS_MMC_EMAIL_HDR (MMC_EMAILID, DT_TIMESTAMP
, MMC_TIPO_EMAIL, MMC_TITULO, MMC_EMAIL_ORIGEM, MMC_EMAIL_DESTINO, MMC_ANEXO, PR
OCESS_FLAG, DT_TIMESTAMP_TO) VALUES (:1,%dateTimein(:2),:3,:4,:5,:6,:7,'N', NULL
)", &p_idMail, &p_DATAHORA, &p_tipo_Email, &p_assunto, &p_emitente, &p_destinata
rio, &p_path_anexo); */
/********************************* mmcb.hd84296.eo ***********************
**********/
/********************************* mmcb.hd84296.sn ***********************
**********/
SQLExec("INSERT INTO SYSADM.PS_MMC_EMAIL_HDR (MMC_EMAILID, SEQ_NBR, DT_TIM
ESTAMP, MMC_TIPO_EMAIL, MMC_TITULO, MMC_EMAIL_ORIGEM, MMC_EMAIL_DESTINO, MMC_ANE
XO, PROCESS_FLAG, DT_TIMESTAMP_TO) VALUES (:1, 0, %dateTimein(:2),:3,:4,:5,:6,:7
,'N', NULL)", &p_idMail, &p_DATAHORA, &p_tipo_Email, &p_assunto, &p_emitente, &p
_destinatario, &p_path_anexo);
/********************************* mmcb.hd84296.en ***********************
**********/
If Len(&msg) > &MAX Then
&MSG_TMP = Left(&msg, &MAX);
&msg = Right(&msg, Len(&msg) - &MAX);
SQLExec("INSERT INTO SYSADM.PS_MMC_EMAIL_LN (MMC_EMAILID, DT_TIMESTAMP
, SEQ_NBR, text254) VALUES (:1, %dateTimeIN(:2),:3,%textin(:4))", &p_idMail, &p_
DATAHORA, &linha, &MSG_TMP);
&linha = &linha + 1;
While (Len(&msg) > 1)
&MSG_TMP = Left(&msg, &MAX);
&msg = Right(&msg, Len(&msg) - &MAX);
SQLExec("INSERT INTO SYSADM.PS_MMC_EMAIL_LN (MMC_EMAILID, DT_TIMEST
AMP, SEQ_NBR, text254) VALUES (:1, %dateTimein(:2),:3,%textin(:4))", &p_idMail,
&p_DATAHORA, &linha, &MSG_TMP);
&linha = &linha + 1;
End-While;
Else

SQLExec("INSERT INTO SYSADM.PS_MMC_EMAIL_LN (MMC_EMAILID, DT_TIMESTAMP


, SEQ_NBR, text254) VALUES (:1, %dateTimein(:2),:3,%textin(:4))", &p_idMail, &p_
DATAHORA, &linha, &MSG_TMP);
&linha = &linha + 1;
End-If;
Return True;
Else
Return False;
End-If;
End-Function;

You might also like