Sunteți pe pagina 1din 111

[MMC_IN_LIB.FUNCLIB.

FieldFormula]
Declare Function BUSCA_SETID PeopleCode MMC_BU_SETID.SETID SavePreChange;
Function busca_origem_item(&setid As string, &inv_item_id As string) Returns str
ing
&SQL = CreateSQL("SELECT ITEM_ORIGIN_BBL FROM SYSADM.PS_INV_ITEMS WHERE SETID
= :1 AND INV_ITEM_ID = :2", &setid, &inv_item_id);
If &SQL.FETCH(&ITEM_ORIGIN_BBL) Then
Return &ITEM_ORIGIN_BBL;
End-If;
Return "";
End-Function;
Function match(&business_unit As string, &inv_item_id As string, &item_origin_bb
l As string, &distrib_type As string, &deptid As string, &project_id As string)
Returns boolean
&SQL = CreateSQL("SELECT STORAGE_AREA, STOR_LEVEL_1, STOR_LEVEL_2, STOR_LEVEL
_3, STOR_LEVEL_4 FROM SYSADM.PS_MMC_ARM_RULES WHERE BUSINESS_UNIT = :1 AND INV_I
TEM_ID = :2 AND ITEM_ORIGIN_BBL = :3 AND DISTRIB_TYPE = :4 AND DEPTID = :5 AND P
ROJECT_ID = :6", &business_unit, &inv_item_id, &item_origin_bbl, &distrib_type,
&deptid, &project_id);
If &SQL.FETCH(&STORAGE_AREA, &STOR_LEVEL_1, &STOR_LEVEL_2, &STOR_LEVEL_3, &ST
OR_LEVEL_4) Then
If All(&STORAGE_AREA) Then
PHYS_INV_VW1.STORAGE_AREA = &STORAGE_AREA;
End-If;
If All(&STOR_LEVEL_1) Then
PHYS_INV_VW1.STOR_LEVEL_1 = &STOR_LEVEL_1;
End-If;
If All(&STOR_LEVEL_2) Then
PHYS_INV_VW1.STOR_LEVEL_2 = &STOR_LEVEL_2;
End-If;
If All(&STOR_LEVEL_3) Then
PHYS_INV_VW1.STOR_LEVEL_3 = &STOR_LEVEL_3;
End-If;
If All(&STOR_LEVEL_4) Then
PHYS_INV_VW1.STOR_LEVEL_4 = &STOR_LEVEL_4;
End-If;
Return True;
End-If;
Return False;
End-Function;
Function match_rule(&business_unit As string, &inv_item_id As string, &distrib_t
ype As string, &deptid As string, &project_id As string) Returns boolean

&setid = BUSCA_SETID();
If None(&setid) Then
Error "No foi possvel obter o SETID da empresa.";
End-If;
&ITEM_ORIGIN_BBL = busca_origem_item(&setid, &inv_item_id);
If None(&ITEM_ORIGIN_BBL) Then
Error "No foi possvel encontrar a origem do item : " | &inv_item_id;
End-If;
&result = match(&business_unit, &inv_item_id, &ITEM_ORIGIN_BBL, &distrib_type
, &deptid, &project_id);
If &result = False Then
&result = match(&business_unit, " ", &ITEM_ORIGIN_BBL, &distrib_type, &dep
tid, &project_id);
End-If;
Return &result;
End-Function;

[MMC_IN_LIB.FUNCLIB.SavePostChange]
/*******************************************************************************
*****************
* Wagner Sorio / Claudio Costa - MMC - 24/10/2007 - mmcb.at2323 - Sistema Contr
ole Terceiros *
* Biblioteca de Funes de Entrada e Reduo de Estoque.
*
*******************************************************************************
*****************/
/*******************************************************************************
*****************
* Fabiano Cunha - MMC - 06/03/2008 - mmcb.at0603 - armazenagem on-line dos iten
s fabricados. *
*******************************************************************************
*****************/
/*******************************************************************************
*****************
* Gustavo MMC - 28-01-2009 mmcb.2946 - Cotrole de materiais de terceiros em pod
er da MMC
*
* Funo que grava na tabela de controle
*
*******************************************************************************
*****************/
/*******************************************************************************
*****************
* Fausto Mastrella MMC - 26-04-2010 mmcb.hd89739 - Update SQL faltando um parnte
se
*
* (Enc. Bleno Sampaio)
*
*******************************************************************************
*****************/
/*******************************************************************************
*****************
* Adercley Maral MMC - 21/02/2013 - mmcb.sds4289 - Criada a funcao ATUALIZA_PHYS
ICAL_INV_720
*
* como copia da ATUALIZA_PHYSICAL_INV_020. Inclusao da TRANSACTION_GROUP 720 no

evaluate
*
* da funo ATUALIZA_BU_ITEMS_INV
*
*******************************************************************************
*****************/
/*******************************************************************************
*****************
* Vincius Alves Mello - MMC - 30/04/2013 - mmcb.hd170820
*
* Para os itens no controlados por lote, o config code deve ser igual a espao em
branco. *
*******************************************************************************
*****************/
/*******************************************************************************
*****************
* Vincius Alves Mello - MMC - 28/05/2013 - mmcb.hd173981
*
* Converter a quantidade da MMC_TE_CONTR_MT para a quantidade da unidade de med
ida padro.
*
*******************************************************************************
*****************/
/*******************************************************************************
****************
* Leandro Rodrigues da silva Souza - MMC - mmcb.hd193198 - 22/01/2014
*
* Gerar Rastreabilidade na Liberao de Veiculos.
*
*******************************************************************************
****************/
/*******************************************************************************
****************
* Leandro Rodrigues da silva Souza - MMC - mmcb.hd216206 - 07/10/2014
*
* Gerando saldo negativo para o campo de reserva na BU_ITEMS_INV
*
*******************************************************************************
****************/
/*******************************************************************************
****************
Gera apontamentos de rastreabilidade caso no exista no momento da liberao.
********************************************************************************
***************/
/* Leandro Rodrigues da Silva Souza - MMCB - SDS5026 - 17/11/2015
*
* O nem sempre todos os processos que movimentam item para areas WIP
*
* considera que o item deve possuir a quantidade reservada
*
********************************************************************************
****************/
/*******************************************************************************
****************
* Vincius Alves Mello - MMC - 26/01/2015 - mmcb.hd226465
*
* Bloquear a gravao de item na UN de estoque, caso o mesmo no possua cadastro.
*
*******************************************************************************
****************/
/*******************************************************************************
****************

* Vincius Alves Mello - MMC - mmcb.sds5105 - 26/01/2015


*
* Ajustes controle de terceiros em nosso poder.
*
*******************************************************************************
****************/
/*hd193198.sn*/
Function ATUALIZAR_RASTREABILIDADE(&PAR_BUSINESS_UNIT, &PAR_PRODUCTION_ID)
SQLExec("SELECT MMC_CP_GRUPO, MMC_ID_APONTAM, INV_ITEM_TEMPLATE, INV_LOT_ID F
ROM (SELECT MMC_CP_GRUPO,MMC_ID_APONTAM, INV_ITEM_TEMPLATE, INV_LOT_ID FROM SYSA
DM.PS_MMC_PRS_APONTAM WHERE BUSINESS_UNIT =:1 AND PRODUCTION_ID =:2 ORDER BY MMC
_SEQ_PROCES DESC) WHERE ROWNUM = 1", &PAR_BUSINESS_UNIT, &PAR_PRODUCTION_ID, &V_
MMC_CP_GRUPO, &V_MMC_ID_APONTAM, &V_INV_ITEM_TEMPLATE, &V_INV_LOT_ID);
&SQL = "SELECT BUSINESS_UNIT, MMC_CP_GRUPO, :1 MMC_ID_APONTAM, ' ' MMC_CABINE
, MMC_SEQ_PROCES,MMC_LOC_APONTAM, :2 INV_ITEM_TEMPLATE, :3 INV_LOT_ID, :4 PRODUC
TION_ID, :5 MMC_SUFIXO_CHASSI FROM SYSADM.PS_MMC_LOC_APONTAM A WHERE A.BUSINESS_
UNIT=:6 AND A.MMC_CP_GRUPO = :7 AND A.MMC_SEQ_PROCES < '70' and A.MMC_SEQ_PROCES
NOT IN ('62','65') AND NOT EXISTS(SELECT 'Y' FROM SYSADM.PS_MMC_PRS_APONTAM B W
HERE B.BUSINESS_UNIT = A.BUSINESS_UNIT AND B.MMC_CP_GRUPO = A.MMC_CP_GRUPO AND B
.MMC_SEQ_PROCES = A.MMC_SEQ_PROCES AND B.PRODUCTION_ID =:8 AND B.MMC_LOC_APONTAM
= A.MMC_LOC_APONTAM)";
&cmdSQL = CreateSQL(&SQL, &V_MMC_ID_APONTAM, &V_INV_ITEM_TEMPLATE, &V_INV_LOT
_ID, &PAR_PRODUCTION_ID, &V_MMC_ID_APONTAM, &PAR_BUSINESS_UNIT, &V_MMC_CP_GRUPO,
&PAR_PRODUCTION_ID);
While &cmdSQL.fetch(&V_BUSINESS_UNIT, &V_MMC_CP_GRUPO, &V_MMC_ID_APONTAM, &V_
MMC_CABINE, &V_MMC_SEQ_PROCES, &V_MMC_LOC_APONTAM, &V_INV_ITEM_TEMPLATE, &V_INV_
LOT_ID, &V_PRODUCTION_ID, &V_MMC_SUFIXO_CHASSI);

/*&INSERT = "Insert into SYSADM.PS_MMC_PRS_APONTAM(BUSINESS_UNIT, MMC_CP_G


RUPO, MMC_ID_APONTAM, MMC_CABINE, MMC_SEQ_PROCES, MMC_LOC_APONTAM, INV_ITEM_TEMP
LATE, INV_LOT_ID, PRODUCTION_ID, MMC_SUFIXO_CHASSI, DT_TIMESTAMP)Values('" | &PA
R_BUSINESS_UNIT | "','" | &V_MMC_CP_GRUPO | "','" | &V_MMC_ID_APONTAM | "', ' ',
'" | &V_MMC_SEQ_PROCES | "', '" | &V_MMC_LOC_APONTAM | "', '" | &V_INV_ITEM_TEM
PLATE | "', '" | &V_INV_LOT_ID | "',TRIM('" | &PAR_PRODUCTION_ID | "'),'" | &V_M
MC_SUFIXO_CHASSI | "',SYSDATE)";
SQLExec(&INSERT);
*/
&INSERT = "Insert into SYSADM.PS_MMC_PRS_APONTAM(BUSINESS_UNIT, MMC_CP_GRU
PO, MMC_ID_APONTAM, MMC_CABINE, MMC_SEQ_PROCES, MMC_LOC_APONTAM, INV_ITEM_TEMPLA
TE, INV_LOT_ID, PRODUCTION_ID, MMC_SUFIXO_CHASSI, DT_TIMESTAMP) Values (:1, :2,
:3, :4,:5, :6, :7, :8,:9,:10,SYSDATE)";
SQLExec(&INSERT, &PAR_BUSINESS_UNIT, &V_MMC_CP_GRUPO, &V_MMC_ID_APONTAM, "
", &V_MMC_SEQ_PROCES, &V_MMC_LOC_APONTAM, &V_INV_ITEM_TEMPLATE, &V_INV_LOT_ID,
&PAR_PRODUCTION_ID, &V_MMC_SUFIXO_CHASSI);
End-While;
End-Function;
/*******************************************************************************

****************/
/*hd193198.en*/

/* mmcb.SDS5026.sn */
Function quantidadeReservadaBU(&bu, &item) Returns number
&qty_allocated_dmnd_inv = 0;
SQLExec("select SUM(MDI.QTY_ALLOCATED) FROM SYSADM.PS_MMC_DMND_INV MDI WHERE
MDI.BUSINESS_UNIT =:1 AND MDI.INV_ITEM_ID =:2", &bu, &item, &qty_allocated_dmnd_
inv);
&qty_allocated = 0;
SQLExec("select sum(qty_allocated) from SYSADM.PS_demand_inv where business_u
nit=:1 and inv_item_id =:2 and cancel_flag <> 'Y'", &bu, &item, &qty_allocated);
&qty_allocated_ship = 0;
&qty_shipped = 0;
SQLExec("select sum(qty_allocated), sum(qty_shipped) from SYSADM.PS_ship_inf_
inv a where a.business_unit =:1 and a.inv_item_id =:2 and a.confirmed_flag = 'Y'
and a.pssh_complete
= 'N' and a.pssh_run_status <> 3 and a.cancel_flag <
> 'Y' ", &bu, &item, &qty_allocated_ship, &qty_shipped);
&qty_allocated_ship2 = 0;
&qty_shipped_2 = 0;
SQLExec("select sum(qty_allocated),sum(qty_shipped) from SYSADM.PS_ship_inf_i
nv a where a.business_unit=:1 and a.inv_item_id=:2 and a.confirmed_flag
= '
Y' and a.pssh_complete
= 'Y' and a.pssh_run_status = 1 and a.cancel_flag <
> 'Y' ", &bu, &item, &qty_allocated_ship2, &qty_shipped_2);
If &qty_shipped <= 0 Then
&qty_res_bu = &qty_allocated_ship + &qty_allocated;
Else
&qty_res_bu = &qty_shipped + &qty_allocated;
End-If;
If &qty_shipped_2 <= 0 Then
&qty_res_bu = &qty_res_bu + &qty_allocated_ship2;
Else
&qty_res_bu = &qty_res_bu + &qty_shipped_2;
End-If;
&qty_pi_ar = 0;
SQLExec("SELECT SUM(PI_AR.QTY) FROM SYSADM.PS_PHYSICAL_INV PI_AR, SYSADM.PS_S
TOR_LOC_INV SL_AR WHERE PI_AR.BUSINESS_UNIT =:1 AND PI_AR.INV_ITEM_ID=:2 AND PI_
AR.SERIAL_ID = 'NONE' AND PI_AR.BUSINESS_UNIT = SL_AR.BUSINESS_UNIT AND PI_AR.ST
ORAGE_AREA = SL_AR.STORAGE_AREA AND PI_AR.STOR_LEVEL_1 = SL_AR.STOR_LEVEL_1 AND
PI_AR.STOR_LEVEL_2 = SL_AR.STOR_LEVEL_2 AND PI_AR.STOR_LEVEL_3 = SL_AR.STOR_LEVE
L_3 AND PI_AR.STOR_LEVEL_4 = SL_AR.STOR_LEVEL_4 AND SL_AR.WIP_LOC_FLG = 'Y' AND
SL_AR.NETTABLE_FLG = 'Y'", &bu, &item, &qty_pi_ar);
&QTY_RESERVED2 = 0;
SQLExec("SELECT SUM(A.QTY_RESERVED) FROM SYSADM.PS_PHYSICAL_INV A, SYSADM.PS_
BU_ITEMS_INV B WHERE A.BUSINESS_UNIT =:1 AND A.INV_ITEM_ID=:2 AND A.BUSINESS_UNI
T = B.BUSINESS_UNIT AND A.INV_ITEM_ID = B.INV_ITEM_ID", &bu, &item, &QTY_RESERV
ED2);

&atualizarReserva = 0;
&atualizarReserva = &QTY_RESERVED2 + &qty_pi_ar + &qty_res_bu + &qty_allocate
d_dmnd_inv;
Return &atualizarReserva;
End-Function;
/* mmcb.SDS5026.en */
Declare Function BUSCA_SETID PeopleCode MMC_BU_SETID.SETID SavePreChange; /*mmcb
.hd170820.ln*/
Function GRAVA_CONTROLE_MAT_TERC(&MAT_BUSINESS_UNIT, &MAT_NF_BRL_ID, &MAT_NF_BRL
_LINE_NUM, &MAT_NF_BRL, &MAT_NF_BRL_SERIES, &MAT_INV_ITEM_ID, &MAT_DESCR, &MAT_V
ENDOR_ID, &MAT_NF_BRL_DATE, &MAT_TRANSACTION_GROUP, &MAT_TRANSACTION_DATE, &MAT_
TAX_CLASS_BRL, &MAT_TOF_PBL, &MAT_SOURCE_BUS_UNIT, &MAT_ORDER_NO, &MAT_ORDER_INT
_LINE_NO, &MAT_BUSINESS_UNIT_BI, &MAT_MMC_NF_BRL_ID_OUT, &MAT_MMC_LINE_NUM_OUT,
&MAT_CUST_ID, &MAT_ACCOUNT, &MAT_MMC_TIPO_AJUST, &MAT_OPRID, &MAT_UNIT_OF_MEASUR
E, &MAT_MMC_OBS_AJUST, &MAT_MMC_ISSUE_QTY, &MAT_QTY_NF_BRL, &MAT_UNIT_PRICE, &MA
T_MERCHANDISE_AMT, &MAT_SHIPTO_ID)
/********************************* mmcb.hd173981.sn *************************
********/
/*Atualiza a unidade de medida para a padro, caso necessrio, atualizando tambm a
s quantidade e valores.*/
&SETID = BUSCA_SETID();
SQLExec("SELECT CONVERSION_RATE, DFLT_UOM_STOCK FROM SYSADM.PS_INV_ITEM_UOM W
HERE SETID = :1 AND INV_ITEM_ID = :2 AND UNIT_OF_MEASURE = :3", &SETID, &MAT_INV
_ITEM_ID, &MAT_UNIT_OF_MEASURE, &CAD_CONVERSION_RATE, &CAD_DFLT_UOM_STOCK);
If All(&CAD_CONVERSION_RATE, &CAD_DFLT_UOM_STOCK) And
&CAD_DFLT_UOM_STOCK = "N" Then
/*Recupera a unidade de medida padro*/
SQLExec("SELECT UNIT_OF_MEASURE FROM SYSADM.PS_INV_ITEM_UOM WHERE SETID =
:1 AND INV_ITEM_ID = :2 AND DFLT_UOM_STOCK = 'Y'", &SETID, &MAT_INV_ITEM_ID, &PD
_UNIT_OF_MEASURE);
If All(&PD_UNIT_OF_MEASURE) Then
/*Altera a unidade de medida, quanidade e valor*/
&MAT_UNIT_OF_MEASURE = &PD_UNIT_OF_MEASURE;
&MAT_MMC_ISSUE_QTY = (&MAT_MMC_ISSUE_QTY * &CAD_CONVERSION_RATE); /*mmc
b.sds5105.ln*/
&MAT_QTY_NF_BRL = (&MAT_QTY_NF_BRL * &CAD_CONVERSION_RATE);
&MAT_UNIT_PRICE = (&MAT_UNIT_PRICE / &CAD_CONVERSION_RATE);
End-If;
/********************************* mmcb.sds5105.sn ***********************
**********/
Else
/*Verifica se o item/unidade de medida no possuem cadastro*/
If None(&CAD_CONVERSION_RATE, &CAD_DFLT_UOM_STOCK) Then
Error ("O item " | &MAT_INV_ITEM_ID | " no pode ser movimentado na unida
de de medida " | &MAT_UNIT_OF_MEASURE | "! Favor verificar a parametrizao das unid
ades de medidas do item na tela Home > Manter Itens > Definir Itens > Usar > Def

inio de Item.");
End-If;
/********************************* mmcb.sds5105.en ***********************
**********/
End-If;
/********************************* mmcb.hd173981.en *************************
********/
&REC_MMC_TE_CONTR_MT = CreateRecord(Record.MMC_TE_CONTR_MT);
&REC_MMC_TE_CONTR_MT.BUSINESS_UNIT.VALUE = &MAT_BUSINESS_UNIT;
&REC_MMC_TE_CONTR_MT.NF_BRL_ID.VALUE = &MAT_NF_BRL_ID;
&REC_MMC_TE_CONTR_MT.NF_BRL_LINE_NUM.VALUE = &MAT_NF_BRL_LINE_NUM;
&REC_MMC_TE_CONTR_MT.DT_TIMESTAMP.VALUE = %Datetime;
&REC_MMC_TE_CONTR_MT.SEQ_NBR.VALUE = 1;
&REC_MMC_TE_CONTR_MT.NF_BRL.VALUE = &MAT_NF_BRL;
&REC_MMC_TE_CONTR_MT.NF_BRL_SERIES.VALUE = &MAT_NF_BRL_SERIES;
&REC_MMC_TE_CONTR_MT.INV_ITEM_ID.VALUE = &MAT_INV_ITEM_ID;
&REC_MMC_TE_CONTR_MT.DESCR.VALUE = &MAT_DESCR;
&REC_MMC_TE_CONTR_MT.VENDOR_ID.VALUE = &MAT_VENDOR_ID;
&REC_MMC_TE_CONTR_MT.NF_BRL_DATE.VALUE = &MAT_NF_BRL_DATE;
&REC_MMC_TE_CONTR_MT.TRANSACTION_GROUP.VALUE = &MAT_TRANSACTION_GROUP;
&REC_MMC_TE_CONTR_MT.TRANSACTION_DATE.VALUE = &MAT_TRANSACTION_DATE;
&REC_MMC_TE_CONTR_MT.TAX_CLASS_BRL.VALUE = &MAT_TAX_CLASS_BRL;
&REC_MMC_TE_CONTR_MT.TOF_PBL.VALUE = &MAT_TOF_PBL;
&REC_MMC_TE_CONTR_MT.SOURCE_BUS_UNIT.VALUE = &MAT_SOURCE_BUS_UNIT;
&REC_MMC_TE_CONTR_MT.ORDER_NO.VALUE = &MAT_ORDER_NO;
&REC_MMC_TE_CONTR_MT.ORDER_INT_LINE_NO.VALUE = &MAT_ORDER_INT_LINE_NO;
&REC_MMC_TE_CONTR_MT.CUST_ID.VALUE = &MAT_CUST_ID;
&REC_MMC_TE_CONTR_MT.BUSINESS_UNIT_BI.VALUE = &MAT_BUSINESS_UNIT_BI;
&REC_MMC_TE_CONTR_MT.MMC_NF_BRL_ID_OUT.VALUE = &MAT_MMC_NF_BRL_ID_OUT;
&REC_MMC_TE_CONTR_MT.MMC_LINE_NUM_OUT.VALUE = &MAT_MMC_LINE_NUM_OUT;
&REC_MMC_TE_CONTR_MT.ACCOUNT.VALUE = &MAT_ACCOUNT;
&REC_MMC_TE_CONTR_MT.MMC_TIPO_AJUST.VALUE = &MAT_MMC_TIPO_AJUST;
&REC_MMC_TE_CONTR_MT.OPRID.VALUE = %UserId;
&REC_MMC_TE_CONTR_MT.UNIT_OF_MEASURE.VALUE = &MAT_UNIT_OF_MEASURE;
&REC_MMC_TE_CONTR_MT.MMC_OBS_AJUST.VALUE = &MAT_MMC_OBS_AJUST;
&REC_MMC_TE_CONTR_MT.MMC_ISSUE_QTY.VALUE = &MAT_MMC_ISSUE_QTY;
&REC_MMC_TE_CONTR_MT.QTY_NF_BRL.VALUE = &MAT_QTY_NF_BRL;
&REC_MMC_TE_CONTR_MT.UNIT_PRICE.VALUE = &MAT_UNIT_PRICE;
&REC_MMC_TE_CONTR_MT.MERCHANDISE_AMT.VALUE = &MAT_MERCHANDISE_AMT;
&REC_MMC_TE_CONTR_MT.SHIPTO_ID.VALUE = &MAT_SHIPTO_ID;
&REC_MMC_TE_CONTR_MT.Insert();

/****************************mmcb.hd89739.so*********************************
***/
/*SQLExec("UPDATE SYSADM.PS_MMC_TE_CONTR_MT SET DESCR = UPPER(translate
DESCR,',','ACEIOUAEIOUAEIOUAOEUaceiouaeiouaeiouaoe
T, &MAT_NF_BRL_ID);*/
/****************************mmcb.hd89739.eo*********************************
***/

/****************************mmcb.hd89739.so*********************************
***/
SQLExec("UPDATE SYSADM.PS_MMC_TE_CONTR_MT SET DESCR = UPPER(translate(
DESCR,',','ACEIOUAEIOUAEIOUAOEUaceiouaeiouaeiouaoeu

, &MAT_NF_BRL_ID);
/****************************mmcb.hd89739.eo*********************************
***/
End-Function;
Function ATUALIZA_CONTROLE_MAT_TERC(&MAT_BUSINESS_UNIT, &MAT_NF_BRL_ID, &MAT_NF_
BRL_LINE_NUM, &MAT_NF_BRL, &MAT_NF_BRL_SERIES, &MAT_INV_ITEM_ID, &MAT_DESCR, &MA
T_VENDOR_ID, &MAT_NF_BRL_DATE, &MAT_TRANSACTION_GROUP, &MAT_TRANSACTION_DATE, &M
AT_TAX_CLASS_BRL, &MAT_TOF_PBL, &MAT_SOURCE_BUS_UNIT, &MAT_ORDER_NO, &MAT_ORDER_
INT_LINE_NO, &MAT_BUSINESS_UNIT_BI, &MAT_MMC_NF_BRL_ID_OUT, &MAT_MMC_LINE_NUM_OU
T, &MAT_CUST_ID, &MAT_ACCOUNT, &MAT_MMC_TIPO_AJUST, &MAT_OPRID, &MAT_UNIT_OF_MEA
SURE, &MAT_MMC_OBS_AJUST, &MAT_MMC_ISSUE_QTY, &MAT_QTY_NF_BRL, &MAT_UNIT_PRICE,
&MAT_MERCHANDISE_AMT, &MAT_SHIPTO_ID)
SQLExec("delete SYSADM.PS_MMC_TE_CONTR_MT where BUSINESS_UNIT = :1 and NF_BRL
_ID = :2 and TRANSACTION_GROUP = '020'", &MAT_BUSINESS_UNIT, &MAT_NF_BRL_ID);
GRAVA_CONTROLE_MAT_TERC(&MAT_BUSINESS_UNIT, &MAT_NF_BRL_ID, &MAT_NF_BRL_LINE_
NUM, &MAT_NF_BRL, &MAT_NF_BRL_SERIES, &MAT_INV_ITEM_ID, &MAT_DESCR, &MAT_VENDOR_
ID, &MAT_NF_BRL_DATE, &MAT_TRANSACTION_GROUP, &MAT_TRANSACTION_DATE, &MAT_TAX_CL
ASS_BRL, &MAT_TOF_PBL, &MAT_SOURCE_BUS_UNIT, &MAT_ORDER_NO, &MAT_ORDER_INT_LINE_
NO, &MAT_BUSINESS_UNIT_BI, &MAT_MMC_NF_BRL_ID_OUT, &MAT_MMC_LINE_NUM_OUT, &MAT_C
UST_ID, &MAT_ACCOUNT, &MAT_MMC_TIPO_AJUST, &MAT_OPRID, &MAT_UNIT_OF_MEASURE, &MA
T_MMC_OBS_AJUST, &MAT_MMC_ISSUE_QTY, &MAT_QTY_NF_BRL, &MAT_UNIT_PRICE, &MAT_MERC
HANDISE_AMT, &MAT_SHIPTO_ID);
End-Function;
/************************* mmcb.sds2946.en ************************************
********/

Function GRAVA_STAGED_COST_INV(&SC_BUSINESS_UNIT, &SC_STAGING_ID, &SC_INV_LOT_ID


, &SC_CONTAINER_ID, &SC_INV_ITEM_ID, &SC_SERIAL_ID, &SC_RECEIVER_ID, &SC_RECV_LN
_NBR, &SC_STAGED_NUM, &SC_SOURCE_BUS_UNIT, &SC_RECV_SHIP_SEQ_NBR, &SC_DISTRIB_LI
NE_NUM, &SC_DISTRIB_SEQ_NUM, &SC_COST_ELEMENT, &SC_ACTUAL_COST, &SC_LC_COMP_FLAG
, &SC_PROCESS_INSTANCE, &SC_JOB_INSTANCE)
&REC_STAGED_COST_INV = CreateRecord(Record.STAGED_COST_INV);
&REC_STAGED_COST_INV.BUSINESS_UNIT.VALUE = &SC_BUSINESS_UNIT;
&REC_STAGED_COST_INV.STAGING_ID.VALUE = &SC_STAGING_ID;
&REC_STAGED_COST_INV.INV_LOT_ID.VALUE = &SC_INV_LOT_ID;
&REC_STAGED_COST_INV.CONTAINER_ID.VALUE = &SC_CONTAINER_ID;
&REC_STAGED_COST_INV.INV_ITEM_ID.VALUE = &SC_INV_ITEM_ID;
&REC_STAGED_COST_INV.SERIAL_ID.VALUE = &SC_SERIAL_ID;
&REC_STAGED_COST_INV.RECEIVER_ID.VALUE = &SC_RECEIVER_ID;
&REC_STAGED_COST_INV.RECV_LN_NBR.VALUE = &SC_RECV_LN_NBR;
&REC_STAGED_COST_INV.STAGED_NUM.VALUE = &SC_STAGED_NUM;
&REC_STAGED_COST_INV.SOURCE_BUS_UNIT.VALUE = &SC_SOURCE_BUS_UNIT;
&REC_STAGED_COST_INV.RECV_SHIP_SEQ_NBR.VALUE = &SC_RECV_SHIP_SEQ_NBR;
&REC_STAGED_COST_INV.DISTRIB_LINE_NUM.VALUE = &SC_DISTRIB_LINE_NUM;
&REC_STAGED_COST_INV.DISTRIB_SEQ_NUM.VALUE = &SC_DISTRIB_SEQ_NUM;

&REC_STAGED_COST_INV.COST_ELEMENT.VALUE = &SC_COST_ELEMENT;
&REC_STAGED_COST_INV.ACTUAL_COST.VALUE = &SC_ACTUAL_COST;
&REC_STAGED_COST_INV.LC_COMP_FLAG.VALUE = &SC_LC_COMP_FLAG;
&REC_STAGED_COST_INV.PROCESS_INSTANCE.VALUE = &SC_PROCESS_INSTANCE;
&REC_STAGED_COST_INV.JOB_INSTANCE.VALUE = &SC_JOB_INSTANCE;
&REC_STAGED_COST_INV.Insert();
End-Function;
/*******************************************************************************
******
* Faz Insert Tabela: SYSADM.PS_STAGED_ITEM_INV
*
********************************************************************************
*****/
Function GRAVA_STAGED_ITEM_INV(&S_BUSINESS_UNIT, &S_STAGING_ID, &S_INV_LOT_ID, &
S_CONTAINER_ID, &S_INV_ITEM_ID, &S_SERIAL_ID, &S_RECEIVER_ID, &S_RECV_LN_NBR, &S
_STAGED_NUM, &S_SOURCE_BUS_UNIT, &S_RECV_SHIP_SEQ_NBR, &S_DISTRIB_LINE_NUM, &S_D
ISTRIB_SEQ_NUM, &S_RMA_ID, &S_RMA_LINE_NBR, &S_PTWY_PLAN_ID, &S_PTWYPLAN_LN_NBR,
&S_STAGED_DATE, &S_LOT_BIRTHDATE, &S_EXPIRATION_DATE, &S_MA_PRDN_ID_FLG, &S_PRO
DUCTION_ID, &S_PRDN_AREA_CODE, &S_PRODUCTION_TYPE, &S_TO_PRODUCTION_ID, &S_OP_SE
QUENCE, &S_QTY_CODE, &S_INV_STOCK_TYPE, &S_QTY, &S_UNIT_OF_MEASURE, &S_QTY_BASE,
&S_QTY_CONV_FLAG, &S_PUTAWAY_STATUS, &S_CONVERSION_RATE, &S_TRANSFER_COST, &S_P
ROCESS_FLAG, &S_PROCESS_INSTANCE, &S_JOB_INSTANCE, &S_PUTAWAY_COMMENT, &S_FROM_S
TOR_AREA, &S_FROM_STOR_LEV1, &S_FROM_STOR_LEV2, &S_FROM_STOR_LEV3, &S_FROM_STOR_
LEV4, &S_FROM_UOM, &S_STORAGE_AREA, &S_STOR_LEVEL_1, &S_STOR_LEVEL_2, &S_STOR_LE
VEL_3, &S_STOR_LEVEL_4, &S_PUTAWAY_FLAG, &S_RECEIPT_TYPE, &S_PO_ID, &S_INTERUNIT
_ID, &S_INTERUNIT_LINE, &S_SF_KANBAN_ID, &S_INSPECT_STATUS, &S_INSPECTION_ID, &S
_LAST_PURCH_DATE, &S_NON_OWN_FLAG, &S_PURCH_LOT_ID, &S_VENDOR_ID, &S_STORAGE_COD
E, &S_OPRID, &S_STAGED_TYPE, &S_DISTRIB_TYPE, &S_PO_DT, &S_BUSINESS_UNIT_PO, &S_
TRANS_SOURCE, &S_CONFIG_CODE, &S_CANCEL_NETTABLE, &S_DT_TIMESTAMP, &S_CONTAINER_
TYPE, &S_SPEEDTYPE_KEY, &S_ACCOUNT, &S_ALTACCT, &S_OPERATING_UNIT, &S_DEPTID, &S
_PRODUCT, &S_PROJECT_ID, &S_ACTIVITY_ID, &S_RESOURCE_TYPE, &S_RESOURCE_CATEGORY,
&S_RESOURCE_SUB_CAT, &S_ANALYSIS_TYPE, &S_BUSINESS_UNIT_PC, &S_COMBO_VALID_FLG,
&S_CONSIGNED_FLAG)
&REC_STAGED_ITEM_INV = CreateRecord(Record.STAGED_ITEM_INV);
&REC_STAGED_ITEM_INV.BUSINESS_UNIT.VALUE = &S_BUSINESS_UNIT;
&REC_STAGED_ITEM_INV.STAGING_ID.VALUE = &S_STAGING_ID;
&REC_STAGED_ITEM_INV.INV_LOT_ID.VALUE = &S_INV_LOT_ID;
&REC_STAGED_ITEM_INV.CONTAINER_ID.VALUE = &S_CONTAINER_ID;
&REC_STAGED_ITEM_INV.INV_ITEM_ID.VALUE = &S_INV_ITEM_ID;
&REC_STAGED_ITEM_INV.SERIAL_ID.VALUE = &S_SERIAL_ID;
&REC_STAGED_ITEM_INV.RECEIVER_ID.VALUE = &S_RECEIVER_ID;
&REC_STAGED_ITEM_INV.RECV_LN_NBR.VALUE = &S_RECV_LN_NBR;
&REC_STAGED_ITEM_INV.STAGED_NUM.VALUE = &S_STAGED_NUM;
&REC_STAGED_ITEM_INV.SOURCE_BUS_UNIT.VALUE = &S_SOURCE_BUS_UNIT;
&REC_STAGED_ITEM_INV.RECV_SHIP_SEQ_NBR.VALUE = &S_RECV_SHIP_SEQ_NBR;
&REC_STAGED_ITEM_INV.DISTRIB_LINE_NUM.VALUE = &S_DISTRIB_LINE_NUM;
&REC_STAGED_ITEM_INV.DISTRIB_SEQ_NUM.VALUE = &S_DISTRIB_SEQ_NUM;
&REC_STAGED_ITEM_INV.RMA_ID.VALUE = &S_RMA_ID;
&REC_STAGED_ITEM_INV.RMA_LINE_NBR.VALUE = &S_RMA_LINE_NBR;
&REC_STAGED_ITEM_INV.PTWY_PLAN_ID.VALUE = &S_PTWY_PLAN_ID;
&REC_STAGED_ITEM_INV.PTWYPLAN_LN_NBR.VALUE = &S_PTWYPLAN_LN_NBR;
&REC_STAGED_ITEM_INV.STAGED_DATE.VALUE = &S_STAGED_DATE;
&REC_STAGED_ITEM_INV.LOT_BIRTHDATE.VALUE = &S_LOT_BIRTHDATE;
&REC_STAGED_ITEM_INV.EXPIRATION_DATE.VALUE = &S_EXPIRATION_DATE;

&REC_STAGED_ITEM_INV.MA_PRDN_ID_FLG.VALUE = &S_MA_PRDN_ID_FLG;
&REC_STAGED_ITEM_INV.PRODUCTION_ID.VALUE = &S_PRODUCTION_ID;
&REC_STAGED_ITEM_INV.PRDN_AREA_CODE.VALUE = &S_PRDN_AREA_CODE;
&REC_STAGED_ITEM_INV.PRODUCTION_TYPE.VALUE = &S_PRODUCTION_TYPE;
&REC_STAGED_ITEM_INV.TO_PRODUCTION_ID.VALUE = &S_TO_PRODUCTION_ID;
&REC_STAGED_ITEM_INV.OP_SEQUENCE.VALUE = &S_OP_SEQUENCE;
&REC_STAGED_ITEM_INV.QTY_CODE.VALUE = &S_QTY_CODE;
&REC_STAGED_ITEM_INV.INV_STOCK_TYPE.VALUE = &S_INV_STOCK_TYPE;
&REC_STAGED_ITEM_INV.QTY.VALUE = &S_QTY;
&REC_STAGED_ITEM_INV.UNIT_OF_MEASURE.VALUE = &S_UNIT_OF_MEASURE;
&REC_STAGED_ITEM_INV.QTY_BASE.VALUE = &S_QTY_BASE;
&REC_STAGED_ITEM_INV.QTY_CONV_FLAG.VALUE = &S_QTY_CONV_FLAG;
&REC_STAGED_ITEM_INV.PUTAWAY_STATUS.VALUE = &S_PUTAWAY_STATUS;
&REC_STAGED_ITEM_INV.CONVERSION_RATE.VALUE = &S_CONVERSION_RATE;
&REC_STAGED_ITEM_INV.TRANSFER_COST.VALUE = &S_TRANSFER_COST;
&REC_STAGED_ITEM_INV.PROCESS_FLAG.VALUE = &S_PROCESS_FLAG;
&REC_STAGED_ITEM_INV.PROCESS_INSTANCE.VALUE = &S_PROCESS_INSTANCE;
&REC_STAGED_ITEM_INV.JOB_INSTANCE.VALUE = &S_JOB_INSTANCE;
&REC_STAGED_ITEM_INV.PUTAWAY_COMMENT.VALUE = &S_PUTAWAY_COMMENT;
&REC_STAGED_ITEM_INV.FROM_STOR_AREA.VALUE = &S_FROM_STOR_AREA;
&REC_STAGED_ITEM_INV.FROM_STOR_LEV1.VALUE = &S_FROM_STOR_LEV1;
&REC_STAGED_ITEM_INV.FROM_STOR_LEV2.VALUE = &S_FROM_STOR_LEV2;
&REC_STAGED_ITEM_INV.FROM_STOR_LEV3.VALUE = &S_FROM_STOR_LEV3;
&REC_STAGED_ITEM_INV.FROM_STOR_LEV4.VALUE = &S_FROM_STOR_LEV4;
&REC_STAGED_ITEM_INV.FROM_UOM.VALUE = &S_FROM_UOM;
&REC_STAGED_ITEM_INV.STORAGE_AREA.VALUE = &S_STORAGE_AREA;
&REC_STAGED_ITEM_INV.STOR_LEVEL_1.VALUE = &S_STOR_LEVEL_1;
&REC_STAGED_ITEM_INV.STOR_LEVEL_2.VALUE = &S_STOR_LEVEL_2;
&REC_STAGED_ITEM_INV.STOR_LEVEL_3.VALUE = &S_STOR_LEVEL_3;
&REC_STAGED_ITEM_INV.STOR_LEVEL_4.VALUE = &S_STOR_LEVEL_4;
&REC_STAGED_ITEM_INV.PUTAWAY_FLAG.VALUE = &S_PUTAWAY_FLAG;
&REC_STAGED_ITEM_INV.RECEIPT_TYPE.VALUE = &S_RECEIPT_TYPE;
&REC_STAGED_ITEM_INV.PO_ID.VALUE = &S_PO_ID;
&REC_STAGED_ITEM_INV.INTERUNIT_ID.VALUE = &S_INTERUNIT_ID;
&REC_STAGED_ITEM_INV.INTERUNIT_LINE.VALUE = &S_INTERUNIT_LINE;
&REC_STAGED_ITEM_INV.SF_KANBAN_ID.VALUE = &S_SF_KANBAN_ID;
&REC_STAGED_ITEM_INV.INSPECT_STATUS.VALUE = &S_INSPECT_STATUS;
&REC_STAGED_ITEM_INV.INSPECTION_ID.VALUE = &S_INSPECTION_ID;
&REC_STAGED_ITEM_INV.LAST_PURCH_DATE.VALUE = &S_LAST_PURCH_DATE;
&REC_STAGED_ITEM_INV.NON_OWN_FLAG.VALUE = &S_NON_OWN_FLAG;
&REC_STAGED_ITEM_INV.PURCH_LOT_ID.VALUE = &S_PURCH_LOT_ID;
&REC_STAGED_ITEM_INV.VENDOR_ID.VALUE = &S_VENDOR_ID;
&REC_STAGED_ITEM_INV.STORAGE_CODE.VALUE = &S_STORAGE_CODE;
&REC_STAGED_ITEM_INV.OPRID.VALUE = &S_OPRID;
&REC_STAGED_ITEM_INV.STAGED_TYPE.VALUE = &S_STAGED_TYPE;
&REC_STAGED_ITEM_INV.DISTRIB_TYPE.VALUE = &S_DISTRIB_TYPE;
&REC_STAGED_ITEM_INV.PO_DT.VALUE = &S_PO_DT;
&REC_STAGED_ITEM_INV.BUSINESS_UNIT_PO.VALUE = &S_BUSINESS_UNIT_PO;
&REC_STAGED_ITEM_INV.TRANS_SOURCE.VALUE = &S_TRANS_SOURCE;
&REC_STAGED_ITEM_INV.CONFIG_CODE.VALUE = &S_CONFIG_CODE;
&REC_STAGED_ITEM_INV.CANCEL_NETTABLE.VALUE = &S_CANCEL_NETTABLE;
&REC_STAGED_ITEM_INV.DT_TIMESTAMP.VALUE = &S_DT_TIMESTAMP;
&REC_STAGED_ITEM_INV.CONTAINER_TYPE.VALUE = &S_CONTAINER_TYPE;
&REC_STAGED_ITEM_INV.SPEEDTYPE_KEY.VALUE = &S_SPEEDTYPE_KEY;
&REC_STAGED_ITEM_INV.ACCOUNT.VALUE = &S_ACCOUNT;
&REC_STAGED_ITEM_INV.ALTACCT.VALUE = &S_ALTACCT;
&REC_STAGED_ITEM_INV.OPERATING_UNIT.VALUE = &S_OPERATING_UNIT;
&REC_STAGED_ITEM_INV.DEPTID.VALUE = &S_DEPTID;
&REC_STAGED_ITEM_INV.PRODUCT.VALUE = &S_PRODUCT;
&REC_STAGED_ITEM_INV.PROJECT_ID.VALUE = &S_PROJECT_ID;

&REC_STAGED_ITEM_INV.ACTIVITY_ID.VALUE = &S_ACTIVITY_ID;
&REC_STAGED_ITEM_INV.RESOURCE_TYPE.VALUE = &S_RESOURCE_TYPE;
&REC_STAGED_ITEM_INV.RESOURCE_CATEGORY.VALUE = &S_RESOURCE_CATEGORY;
&REC_STAGED_ITEM_INV.RESOURCE_SUB_CAT.VALUE = &S_RESOURCE_SUB_CAT;
&REC_STAGED_ITEM_INV.ANALYSIS_TYPE.VALUE = &S_ANALYSIS_TYPE;
&REC_STAGED_ITEM_INV.BUSINESS_UNIT_PC.VALUE = &S_BUSINESS_UNIT_PC;
&REC_STAGED_ITEM_INV.COMBO_VALID_FLG.VALUE = &S_COMBO_VALID_FLG;
&REC_STAGED_ITEM_INV.CONSIGNED_FLAG.VALUE = &S_CONSIGNED_FLAG;
&REC_STAGED_ITEM_INV.Insert();
End-Function;
/*******************************************************************************
******
* Faz Insert Tabela: SYSADM.PS_STAGED_INF_INV
*
********************************************************************************
*****/
Function GRAVA_STAGED_INF_INV(&IN_BUSINESS_UNIT, &IN_INV_LOT_ID, &IN_CONTAINER_I
D, &IN_INV_ITEM_ID, &IN_SERIAL_ID, &IN_RECEIVER_ID, &IN_RECV_LN_NBR, &IN_SEQ_NUM
, &IN_SOURCE_BUS_UNIT, &IN_RECV_SHIP_SEQ_NBR, &IN_DISTRIB_LINE_NUM, &IN_DISTRIB_
SEQ_NUM, &IN_COST_ELEMENT, &IN_RMA_ID, &IN_RMA_LINE_NBR, &IN_LOT_BIRTHDATE, &IN_
EXPIRATION_DATE, &IN_PO_ID, &IN_INTERUNIT_ID, &IN_INTERUNIT_LINE, &IN_INSPECT_ST
ATUS, &IN_INSPECTION_ID, &IN_LAST_PURCH_DATE, &IN_ACTUAL_COST, &IN_CONVERSION_RA
TE, &IN_TRANSFER_COST, &IN_QTY, &IN_UNIT_OF_MEASURE, &IN_RECEIPT_TYPE, &IN_NON_O
WN_FLAG, &IN_INV_STOCK_TYPE, &IN_PURCH_LOT_ID, &IN_VENDOR_ID, &IN_MA_PRDN_ID_FLG
, &IN_PRODUCTION_ID, &IN_PRDN_AREA_CODE, &IN_PRODUCTION_TYPE, &IN_TO_PRODUCTION_
ID, &IN_OP_SEQUENCE, &IN_QTY_CODE, &IN_STORAGE_CODE, &IN_STORAGE_AREA, &IN_STOR_
LEVEL_1, &IN_STOR_LEVEL_2, &IN_STOR_LEVEL_3, &IN_STOR_LEVEL_4, &IN_DISTRIB_TYPE,
&IN_PO_DT, &IN_BUSINESS_UNIT_PO, &IN_TRANS_SOURCE, &IN_STAGED_STATUS, &IN_CONFI
G_CODE, &IN_OPRID, &IN_PROCESS_FLAG, &IN_PROCESS_INSTANCE, &IN_JOB_INSTANCE, &IN
_CONTAINER_TYPE, &IN_SPEEDTYPE_KEY, &IN_ACCOUNT, &IN_ALTACCT, &IN_OPERATING_UNIT
, &IN_DEPTID, &IN_PRODUCT, &IN_PROJECT_ID, &IN_ACTIVITY_ID, &IN_RESOURCE_TYPE, &
IN_RESOURCE_CATEGORY, &IN_RESOURCE_SUB_CAT, &IN_ANALYSIS_TYPE, &IN_BUSINESS_UNIT
_PC, &IN_COMBO_VALID_FLG, &IN_CONSIGNED_FLAG, &IN_SF_KANBAN_ID)
&REC_STAGED_INF_INV = CreateRecord(Record.STAGED_INF_INV);
&REC_STAGED_INF_INV.BUSINESS_UNIT.VALUE = &IN_BUSINESS_UNIT;
&REC_STAGED_INF_INV.INV_LOT_ID.VALUE = &IN_INV_LOT_ID;
&REC_STAGED_INF_INV.CONTAINER_ID.VALUE = &IN_CONTAINER_ID;
&REC_STAGED_INF_INV.INV_ITEM_ID.VALUE = &IN_INV_ITEM_ID;
&REC_STAGED_INF_INV.SERIAL_ID.VALUE = &IN_SERIAL_ID;
&REC_STAGED_INF_INV.RECEIVER_ID.VALUE = &IN_RECEIVER_ID;
&REC_STAGED_INF_INV.RECV_LN_NBR.VALUE = &IN_RECV_LN_NBR;
&REC_STAGED_INF_INV.SEQ_NUM.VALUE = &IN_SEQ_NUM;
&REC_STAGED_INF_INV.SOURCE_BUS_UNIT.VALUE = &IN_SOURCE_BUS_UNIT;
&REC_STAGED_INF_INV.RECV_SHIP_SEQ_NBR.VALUE = &IN_RECV_SHIP_SEQ_NBR;
&REC_STAGED_INF_INV.DISTRIB_LINE_NUM.VALUE = &IN_DISTRIB_LINE_NUM;
&REC_STAGED_INF_INV.DISTRIB_SEQ_NUM.VALUE = &IN_DISTRIB_SEQ_NUM;
&REC_STAGED_INF_INV.COST_ELEMENT.VALUE = &IN_COST_ELEMENT;
&REC_STAGED_INF_INV.RMA_ID.VALUE = &IN_RMA_ID;
&REC_STAGED_INF_INV.RMA_LINE_NBR.VALUE = &IN_RMA_LINE_NBR;
&REC_STAGED_INF_INV.LOT_BIRTHDATE.VALUE = &IN_LOT_BIRTHDATE;
&REC_STAGED_INF_INV.EXPIRATION_DATE.VALUE = &IN_EXPIRATION_DATE;
&REC_STAGED_INF_INV.PO_ID.VALUE = &IN_PO_ID;
&REC_STAGED_INF_INV.INTERUNIT_ID.VALUE = &IN_INTERUNIT_ID;
&REC_STAGED_INF_INV.INTERUNIT_LINE.VALUE = &IN_INTERUNIT_LINE;

&REC_STAGED_INF_INV.INSPECT_STATUS.VALUE = &IN_INSPECT_STATUS;
&REC_STAGED_INF_INV.INSPECTION_ID.VALUE = &IN_INSPECTION_ID;
&REC_STAGED_INF_INV.LAST_PURCH_DATE.VALUE = &IN_LAST_PURCH_DATE;
&REC_STAGED_INF_INV.ACTUAL_COST.VALUE = &IN_ACTUAL_COST;
&REC_STAGED_INF_INV.CONVERSION_RATE.VALUE = &IN_CONVERSION_RATE;
&REC_STAGED_INF_INV.TRANSFER_COST.VALUE = &IN_TRANSFER_COST;
&REC_STAGED_INF_INV.QTY.VALUE = &IN_QTY;
&REC_STAGED_INF_INV.UNIT_OF_MEASURE.VALUE = &IN_UNIT_OF_MEASURE;
&REC_STAGED_INF_INV.RECEIPT_TYPE.VALUE = &IN_RECEIPT_TYPE;
&REC_STAGED_INF_INV.NON_OWN_FLAG.VALUE = &IN_NON_OWN_FLAG;
&REC_STAGED_INF_INV.INV_STOCK_TYPE.VALUE = &IN_INV_STOCK_TYPE;
&REC_STAGED_INF_INV.PURCH_LOT_ID.VALUE = &IN_PURCH_LOT_ID;
&REC_STAGED_INF_INV.VENDOR_ID.VALUE = &IN_VENDOR_ID;
&REC_STAGED_INF_INV.MA_PRDN_ID_FLG.VALUE = &IN_MA_PRDN_ID_FLG;
&REC_STAGED_INF_INV.PRODUCTION_ID.VALUE = &IN_PRODUCTION_ID;
&REC_STAGED_INF_INV.PRDN_AREA_CODE.VALUE = &IN_PRDN_AREA_CODE;
&REC_STAGED_INF_INV.PRODUCTION_TYPE.VALUE = &IN_PRODUCTION_TYPE;
&REC_STAGED_INF_INV.TO_PRODUCTION_ID.VALUE = &IN_TO_PRODUCTION_ID;
&REC_STAGED_INF_INV.OP_SEQUENCE.VALUE = &IN_OP_SEQUENCE;
&REC_STAGED_INF_INV.QTY_CODE.VALUE = &IN_QTY_CODE;
&REC_STAGED_INF_INV.STORAGE_CODE.VALUE = &IN_STORAGE_CODE;
&REC_STAGED_INF_INV.STORAGE_AREA.VALUE = &IN_STORAGE_AREA;
&REC_STAGED_INF_INV.STOR_LEVEL_1.VALUE = &IN_STOR_LEVEL_1;
&REC_STAGED_INF_INV.STOR_LEVEL_2.VALUE = &IN_STOR_LEVEL_2;
&REC_STAGED_INF_INV.STOR_LEVEL_3.VALUE = &IN_STOR_LEVEL_3;
&REC_STAGED_INF_INV.STOR_LEVEL_4.VALUE = &IN_STOR_LEVEL_4;
&REC_STAGED_INF_INV.DISTRIB_TYPE.VALUE = &IN_DISTRIB_TYPE;
&REC_STAGED_INF_INV.PO_DT.VALUE = &IN_PO_DT;
&REC_STAGED_INF_INV.BUSINESS_UNIT_PO.VALUE = &IN_BUSINESS_UNIT_PO;
&REC_STAGED_INF_INV.TRANS_SOURCE.VALUE = &IN_TRANS_SOURCE;
&REC_STAGED_INF_INV.STAGED_STATUS.VALUE = &IN_STAGED_STATUS;
&REC_STAGED_INF_INV.CONFIG_CODE.VALUE = &IN_CONFIG_CODE;
&REC_STAGED_INF_INV.OPRID.VALUE = &IN_OPRID;
&REC_STAGED_INF_INV.PROCESS_FLAG.VALUE = &IN_PROCESS_FLAG;
&REC_STAGED_INF_INV.PROCESS_INSTANCE.VALUE = &IN_PROCESS_INSTANCE;
&REC_STAGED_INF_INV.JOB_INSTANCE.VALUE = &IN_JOB_INSTANCE;
&REC_STAGED_INF_INV.CONTAINER_TYPE.VALUE = &IN_CONTAINER_TYPE;
&REC_STAGED_INF_INV.SPEEDTYPE_KEY.VALUE = &IN_SPEEDTYPE_KEY;
&REC_STAGED_INF_INV.ACCOUNT.VALUE = &IN_ACCOUNT;
&REC_STAGED_INF_INV.ALTACCT.VALUE = &IN_ALTACCT;
&REC_STAGED_INF_INV.OPERATING_UNIT.VALUE = &IN_OPERATING_UNIT;
&REC_STAGED_INF_INV.DEPTID.VALUE = &IN_DEPTID;
&REC_STAGED_INF_INV.PRODUCT.VALUE = &IN_PRODUCT;
&REC_STAGED_INF_INV.PROJECT_ID.VALUE = &IN_PROJECT_ID;
&REC_STAGED_INF_INV.ACTIVITY_ID.VALUE = &IN_ACTIVITY_ID;
&REC_STAGED_INF_INV.RESOURCE_TYPE.VALUE = &IN_RESOURCE_TYPE;
&REC_STAGED_INF_INV.RESOURCE_CATEGORY.VALUE = &IN_RESOURCE_CATEGORY;
&REC_STAGED_INF_INV.RESOURCE_SUB_CAT.VALUE = &IN_RESOURCE_SUB_CAT;
&REC_STAGED_INF_INV.ANALYSIS_TYPE.VALUE = &IN_ANALYSIS_TYPE;
&REC_STAGED_INF_INV.BUSINESS_UNIT_PC.VALUE = &IN_BUSINESS_UNIT_PC;
&REC_STAGED_INF_INV.COMBO_VALID_FLG.VALUE = &IN_COMBO_VALID_FLG;
&REC_STAGED_INF_INV.CONSIGNED_FLAG.VALUE = &IN_CONSIGNED_FLAG;
&REC_STAGED_INF_INV.SF_KANBAN_ID.VALUE = &IN_SF_KANBAN_ID;
&REC_STAGED_INF_INV.Insert();
End-Function;
/*******************************************************************************
**********************************
* Retorna maior CM_SEQ_COST tabela CM_ACTUAL_COST

********************************************************************************
*********************************/
Function max_cmseqcost_cmactualcost(&PAR_BUSINESS_UNIT, &PAR_INV_ITEM_ID, &PAR_D
T_TIMESTAMP, &PAR_SEQ_NBR, &PAR_COST_ELEMENT) Returns number
SQLExec("select case when max(cm_seq_cost) > 0 then max(cm_seq_cost)+1 else 1
end from sysadm.ps_cm_actual_cost where business_unit=:1 and inv_item_id=:2 an
d dt_timestamp= %datetimein(:3) and seq_nbr=:4 and cost_element=:5 ", &PAR_BUSIN
ESS_UNIT, &PAR_INV_ITEM_ID, &PAR_DT_TIMESTAMP, &PAR_SEQ_NBR, &PAR_COST_ELEMENT,
&CM_SEQ_COST);
Return &CM_SEQ_COST;
End-Function;
/*******************************************************************************
**********************************
* INSERE DADOS TAVELA CM_ACTUAL_COST
********************************************************************************
*********************************/
Function GRAVA_CM_ACTUAL_COST(&P_C_BUSINESS_UNIT, &P_C_INV_ITEM_ID, &P_C_DT_TIME
STAMP, &P_C_SEQ_NBR, &P_C_COST_ELEMENT, &P_C_CM_SEQ_COST, &P_C_BUSINESS_UNIT_REC
V, &P_C_RECEIVER_ID, &P_C_RECV_LN_NBR, &P_C_RECV_SHIP_SEQ_NBR, &P_C_DISTRIB_LINE
_NUM, &P_C_EFF_STATUS, &P_C_CM_DTTM_IN_EFFECT, &P_C_CM_DTTM_STAMP, &P_C_CM_ADJ_T
YPE, &P_C_CM_COST_SOURCE, &P_C_CM_UNIT_COST, &P_C_CURRENCY_CD, &P_C_PROCESS_INST
ANCE)
If None(&P_C_COST_ELEMENT) Or
&P_C_COST_ELEMENT = " " Or
Len(&P_C_COST_ELEMENT) = 0 Then
SQLExec("SELECT COST_ELEMENT FROM SYSADM.PS_BU_ITEMS_INV WHERE BUSINESS_UN
IT =:1 AND INV_ITEM_ID =:2 ", &P_C_BUSINESS_UNIT, &P_C_INV_ITEM_ID, &P_C_COST_EL
EMENT);
End-If;
&REC_CM_ACTUAL_COST = CreateRecord(Record.CM_ACTUAL_COST);
&REC_CM_ACTUAL_COST.BUSINESS_UNIT.VALUE = &P_C_BUSINESS_UNIT;
&REC_CM_ACTUAL_COST.INV_ITEM_ID.VALUE = &P_C_INV_ITEM_ID;
&REC_CM_ACTUAL_COST.DT_TIMESTAMP.VALUE = &P_C_DT_TIMESTAMP;
&REC_CM_ACTUAL_COST.SEQ_NBR.VALUE = &P_C_SEQ_NBR;
&REC_CM_ACTUAL_COST.COST_ELEMENT.VALUE = &P_C_COST_ELEMENT;
&REC_CM_ACTUAL_COST.CM_SEQ_COST.VALUE = &P_C_CM_SEQ_COST;
&REC_CM_ACTUAL_COST.BUSINESS_UNIT_RECV.VALUE = &P_C_BUSINESS_UNIT_RECV;
&REC_CM_ACTUAL_COST.RECEIVER_ID.VALUE = &P_C_RECEIVER_ID;
&REC_CM_ACTUAL_COST.RECV_LN_NBR.VALUE = &P_C_RECV_LN_NBR;
&REC_CM_ACTUAL_COST.RECV_SHIP_SEQ_NBR.VALUE = &P_C_RECV_SHIP_SEQ_NBR;
&REC_CM_ACTUAL_COST.DISTRIB_LINE_NUM.VALUE = &P_C_DISTRIB_LINE_NUM;
&REC_CM_ACTUAL_COST.EFF_STATUS.VALUE = &P_C_EFF_STATUS;
&REC_CM_ACTUAL_COST.CM_DTTM_IN_EFFECT.VALUE = &P_C_CM_DTTM_IN_EFFECT;
&REC_CM_ACTUAL_COST.CM_DTTM_STAMP.VALUE = &P_C_CM_DTTM_STAMP;
&REC_CM_ACTUAL_COST.CM_ADJ_TYPE.VALUE = &P_C_CM_ADJ_TYPE;
&REC_CM_ACTUAL_COST.CM_COST_SOURCE.VALUE = &P_C_CM_COST_SOURCE;
&REC_CM_ACTUAL_COST.CM_UNIT_COST.VALUE = &P_C_CM_UNIT_COST;
&REC_CM_ACTUAL_COST.CURRENCY_CD.VALUE = &P_C_CURRENCY_CD;
&REC_CM_ACTUAL_COST.PROCESS_INSTANCE.VALUE = &P_C_PROCESS_INSTANCE;

&REC_CM_ACTUAL_COST.Insert();
End-Function;
/*******************************************************************************
**********************************
* INSERE DADOS TAVELA CM_PERPAVG_COST
********************************************************************************
*********************************/
Function GRAVA_CM_PERPAVG_COST(&P1_BUSINESS_UNIT, &P1_INV_ITEM_ID, &P1_DT_TIMEST
AMP, &P1_SEQ_NBR, &P1_TRANSACTION_DT, &P1_CM_COST_SOURCE, &P1_CM_UNIT_COST, &P1_
CURRENCY_CD)
&REC_CM_PERPAVG_COST = CreateRecord(Record.CM_PERPAVG_COST);
&REC_CM_PERPAVG_COST.BUSINESS_UNIT.VALUE = &P1_BUSINESS_UNIT;
&REC_CM_PERPAVG_COST.INV_ITEM_ID.VALUE = &P1_INV_ITEM_ID;
&REC_CM_PERPAVG_COST.DT_TIMESTAMP.VALUE = &P1_DT_TIMESTAMP;
&REC_CM_PERPAVG_COST.SEQ_NBR.VALUE = &P1_SEQ_NBR;
&REC_CM_PERPAVG_COST.TRANSACTION_DT.VALUE = &P1_TRANSACTION_DT;
&REC_CM_PERPAVG_COST.CM_COST_SOURCE.VALUE = &P1_CM_COST_SOURCE;
&REC_CM_PERPAVG_COST.CM_UNIT_COST.VALUE = &P1_CM_UNIT_COST;
&REC_CM_PERPAVG_COST.CURRENCY_CD.VALUE = &P1_CURRENCY_CD;
&REC_CM_PERPAVG_COST.Insert();
End-Function;
/*******************************************************************************
**********************************
* CUSTO ITEM
********************************************************************************
*********************************/
Function BUSCA_CUSTO_ITEM(&C_BUSINESS_UNIT, &C_INV_ITEM_ID, &C_DT_TIMESTAMP, &C_
CONFIG_CODE) Returns number
/*
SOURCE_CODE = '1' = Fabricado
SOURCE_CODE = '2' = Comprado
*/
/************************************* mmcb.hd170820.sn *********************
****************/
/*Recupera o SETID*/
&SETID = BUSCA_SETID();
/*Recupera se o item e controlado por lote*/
SQLExec("SELECT LOT_CONTROL FROM SYSADM.PS_MASTER_ITEM_TBL WHERE SETID = :1 A
ND INV_ITEM_ID = :2", &SETID, &C_INV_ITEM_ID, &LOT_CONTROL);
/*Atualiza a varivel C_CONFIG_CODE, caso o item no seja controlado por lote*/
If &LOT_CONTROL = "N" Then
&C_CONFIG_CODE = " ";
End-If;
/************************************* mmcb.hd170820.en *********************
****************/
SQLExec("select source_code from sysadm.ps_bu_items_inv where business_unit =
:1 and inv_item_id=:2", &C_BUSINESS_UNIT, &C_INV_ITEM_ID, &SOURCE_CODE);
If None(&SOURCE_CODE) Then

Error ("Item :" | &C_INV_ITEM_ID | "no est parametrizado.");


End-If;
&QTDE_DIAS = %Date - Date3(1998, 1, 1);
&DIA_INICIAL = 0;
&DIA_FINAL = 30;
&CUSTO_COMPRADO = 0;
&CUSTO_FABRICADO = 0;
While (&DIA_INICIAL <= &QTDE_DIAS)
If &SOURCE_CODE = "2" Then
SQLExec("select cc.cm_unit_cost from sysadm.ps_cm_perpavg_cost cc where
cc.business_unit =:1 and cc.inv_item_id =:2 and cc.dt_timestamp = ( select max(
bc.dt_timestamp ) from sysadm.ps_cm_perpavg_cost bc where bc.business_unit = cc
.business_unit and bc.inv_item_id = cc.inv_item_id and bc.dt_timestamp >= %datet
imein(:3) - :4 and bc.dt_timestamp <= %datetimein(:5) - :6 ) and cc.seq_nbr = (
select max( bc1.seq_nbr ) from sysadm.ps_cm_perpavg_cost bc1 where bc1.business_
unit = cc.business_unit and bc1.inv_item_id = cc.inv_item_id and bc1.dt_timestam
p
= cc.dt_timestamp )", &C_BUSINESS_UNIT, &C_INV_ITEM_ID, &C_DT_TIMESTAMP, &D
IA_FINAL, &C_DT_TIMESTAMP, &DIA_INICIAL, &CUSTO_COMPRADO);
If &CUSTO_COMPRADO > 0 Then
Return &CUSTO_COMPRADO;
End-If;
End-If;
If &SOURCE_CODE = "1" Then
SQLExec("select sum(tl_cost + ll_cost) from sysadm.ps_cm_prodcost cc wh
ere cc.business_unit =:1 and cc.inv_item_id =:2 and cc.config_code =:3 and cc.ef
fdt = ( select max(bc.effdt) from sysadm.ps_cm_prodcost bc where bc.business_un
it = cc.business_unit and bc.inv_item_id = cc.inv_item_id and bc.config_code = c
c.config_code and bc.effdt >= %datetimein(:4) - :5 and bc.effdt <= %datetimein(:
6) - :7 )", &C_BUSINESS_UNIT, &C_INV_ITEM_ID, &C_CONFIG_CODE, &C_DT_TIMESTAMP, &
DIA_FINAL, &C_DT_TIMESTAMP, &DIA_INICIAL, &CUSTO_FABRICADO);
If &CUSTO_FABRICADO > 0 Then
Return &CUSTO_FABRICADO;
End-If;
End-If;
&DIA_INICIAL = &DIA_INICIAL + 30;
&DIA_FINAL = &DIA_FINAL + 30;
End-While;
Return 0;
End-Function;
Function GERA_CUSTO_MEDIO_ITEM(&P_BUSINESS_UNIT, &P_INV_ITEM_ID, &P_QTY_ENTRADA,
&P_DT_TIMESTAMP, &P_SEQ_NBR, &P_BUSINESS_UNIT_RECV, &P_RECEIVER_ID, &P_RECV_LN_
NBR, &PAR_RECV_SHIP_SEQ_NBR, &P_CUSTO_ENTRADA, &P_CONFIG_CODE, &P_TRANSACTION_DT
, &P_PARAMETRO_OPCIONAL)
If &P_PARAMETRO_OPCIONAL <> "USA_CUSTO_UNIDADE_ORIGEM" And
&P_PARAMETRO_OPCIONAL <> "USA_CUSTO_ENTRADA_NF" Then
&CUSTO_ATUAL = BUSCA_CUSTO_ITEM(&P_BUSINESS_UNIT, &P_INV_ITEM_ID, &P_DT_TI

MESTAMP, &P_CONFIG_CODE);
SQLExec("select qty_available, cost_element from sysadm.ps_bu_items_inv w
here business_unit=:1 and inv_item_id =:2 ", &P_BUSINESS_UNIT, &P_INV_ITEM_ID, &
QTD_ATUAL_ITEM, &COST_ELEMENT);
Else
&CUSTO_ATUAL = &P_CUSTO_ENTRADA;
End-If;
&VAR_CUSTO1 = ((&QTD_ATUAL_ITEM * &CUSTO_ATUAL) + (&P_QTY_ENTRADA * &P_CUSTO_
ENTRADA));
&VAR_CUSTO2 = (&QTD_ATUAL_ITEM + &P_QTY_ENTRADA);
If &VAR_CUSTO1 <= 0 Then
&VAR_CUSTO1 = 1;
End-If;
If &VAR_CUSTO2 <= 0 Then
&VAR_CUSTO2 = 1;
End-If;
&NOVO_CUSTO = &VAR_CUSTO1 / &VAR_CUSTO2;
&P_C_BUSINESS_UNIT = &P_BUSINESS_UNIT;
&P_C_INV_ITEM_ID = &P_INV_ITEM_ID;
&P_C_DT_TIMESTAMP = &P_DT_TIMESTAMP;
&P_C_SEQ_NBR = &P_SEQ_NBR;
&P_C_COST_ELEMENT = &COST_ELEMENT;
&P_C_CM_SEQ_COST = max_cmseqcost_cmactualcost(&P_BUSINESS_UNIT, &P_INV_ITEM_I
D, &P_DT_TIMESTAMP, &P_SEQ_NBR, &COST_ELEMENT);
&P_C_BUSINESS_UNIT_RECV = &P_BUSINESS_UNIT_RECV;
&P_C_RECEIVER_ID = &P_RECEIVER_ID;
&P_C_RECV_LN_NBR = &P_RECV_LN_NBR;
&P_C_RECV_SHIP_SEQ_NBR = &PAR_RECV_SHIP_SEQ_NBR;
&P_C_DISTRIB_LINE_NUM = 0;
&P_C_EFF_STATUS = "A";
&P_C_CM_DTTM_IN_EFFECT = &P_DT_TIMESTAMP;
&P_C_CM_DTTM_STAMP = &P_DT_TIMESTAMP;
&P_C_CM_ADJ_TYPE = 0;
&P_C_CM_COST_SOURCE = "2";
&P_C_CM_UNIT_COST = &CUSTO_ATUAL;
&P_C_CURRENCY_CD = "BRL";
&P_C_PROCESS_INSTANCE = 0;
GRAVA_CM_ACTUAL_COST(&P_C_BUSINESS_UNIT, &P_C_INV_ITEM_ID, &P_C_DT_TIMESTAMP,
&P_C_SEQ_NBR, &P_C_COST_ELEMENT, &P_C_CM_SEQ_COST, &P_C_BUSINESS_UNIT_RECV, &P_
C_RECEIVER_ID, &P_C_RECV_LN_NBR, &P_C_RECV_SHIP_SEQ_NBR, &P_C_DISTRIB_LINE_NUM,
&P_C_EFF_STATUS, &P_C_CM_DTTM_IN_EFFECT, &P_C_CM_DTTM_STAMP, &P_C_CM_ADJ_TYPE, &
P_C_CM_COST_SOURCE, &P_C_CM_UNIT_COST, &P_C_CURRENCY_CD, &P_C_PROCESS_INSTANCE);
&P1_BUSINESS_UNIT = &P_BUSINESS_UNIT;
&P1_INV_ITEM_ID = &P_INV_ITEM_ID;
&P1_DT_TIMESTAMP = &P_DT_TIMESTAMP;
&P1_SEQ_NBR = &P_SEQ_NBR;
&P1_TRANSACTION_DT = &P_TRANSACTION_DT;
&P1_CM_COST_SOURCE = "2";
&P1_CM_UNIT_COST = &NOVO_CUSTO;
&P1_CURRENCY_CD = "BRL";

GRAVA_CM_PERPAVG_COST(&P1_BUSINESS_UNIT, &P1_INV_ITEM_ID, &P1_DT_TIMESTAMP, &


P1_SEQ_NBR, &P1_TRANSACTION_DT, &P1_CM_COST_SOURCE, &P1_CM_UNIT_COST, &P1_CURREN
CY_CD)
End-Function;
/*******************************************************************************
**********************************
* Retorna maior SEQ_NBR PS_TRANSACTION_INV
********************************************************************************
*********************************/
Function max_seqnbr_transaction(&PAR_BUSINESS_UNIT, &PAR_INV_ITEM_ID, &PAR_DT_TI
MESTAMP) Returns number
SQLExec("select case when max(seq_nbr)>0 then max(seq_nbr)+1 else 1 end from
sysadm.ps_transaction_inv where business_unit=:1 and inv_item_id=:2 and dt_times
tamp =%datetimein(:3)", &PAR_BUSINESS_UNIT, &PAR_INV_ITEM_ID, &PAR_DT_TIMESTAMP,
&V_SEQ_NBR);
Return &V_SEQ_NBR;
End-Function;
/*******************************************************************************
**********************************
* Insere uma nova linha na tabela PHYSICAL_INV
********************************************************************************
*********************************/
Function GRAVA_PHYSICAL_INV(&PAR_BUSINESS_UNIT, &PAR_STAGED_DATE, &PAR_INV_LOT_I
D, &PAR_INV_ITEM_ID, &PAR_SERIAL_ID, &PAR_STORAGE_AREA, &PAR_STOR_LEVEL_1, &PAR_
STOR_LEVEL_2, &PAR_STOR_LEVEL_3, &PAR_STOR_LEVEL_4, &PAR_CONTAINER_ID, &PAR_UNIT
_OF_MEASURE, &PAR_LAST_TRANSACT_TYPE, &PAR_LAST_ISSUE_DATE, &PAR_QTY, &PAR_QTY_R
ESERVED, &PAR_QTY_BASE, &PAR_QTY_RESERVED_BASE, &PAR_AVAIL_STATUS, &PAR_DT_TIMES
TAMP)
&REC_PHYSICAL_INV = CreateRecord(Record.PHYSICAL_INV);
&REC_PHYSICAL_INV.BUSINESS_UNIT.VALUE = &PAR_BUSINESS_UNIT;
&REC_PHYSICAL_INV.STAGED_DATE.VALUE = &PAR_STAGED_DATE;
&REC_PHYSICAL_INV.INV_LOT_ID.VALUE = &PAR_INV_LOT_ID;
&REC_PHYSICAL_INV.INV_ITEM_ID.VALUE = &PAR_INV_ITEM_ID;
&REC_PHYSICAL_INV.SERIAL_ID.VALUE = &PAR_SERIAL_ID;
&REC_PHYSICAL_INV.STORAGE_AREA.VALUE = &PAR_STORAGE_AREA;
&REC_PHYSICAL_INV.STOR_LEVEL_1.VALUE = &PAR_STOR_LEVEL_1;
&REC_PHYSICAL_INV.STOR_LEVEL_2.VALUE = &PAR_STOR_LEVEL_2;
&REC_PHYSICAL_INV.STOR_LEVEL_3.VALUE = &PAR_STOR_LEVEL_3;
&REC_PHYSICAL_INV.STOR_LEVEL_4.VALUE = &PAR_STOR_LEVEL_4;
&REC_PHYSICAL_INV.CONTAINER_ID.VALUE = &PAR_CONTAINER_ID;
&REC_PHYSICAL_INV.UNIT_OF_MEASURE.VALUE = &PAR_UNIT_OF_MEASURE;
&REC_PHYSICAL_INV.LAST_TRANSACT_TYPE.VALUE = &PAR_LAST_TRANSACT_TYPE;
&REC_PHYSICAL_INV.LAST_ISSUE_DATE.VALUE = &PAR_LAST_ISSUE_DATE;
&REC_PHYSICAL_INV.QTY.VALUE = &PAR_QTY;
&REC_PHYSICAL_INV.QTY_RESERVED.VALUE = &PAR_QTY_RESERVED;
&REC_PHYSICAL_INV.QTY_BASE.VALUE = &PAR_QTY_BASE;
&REC_PHYSICAL_INV.QTY_RESERVED_BASE.VALUE = &PAR_QTY_RESERVED_BASE;
&REC_PHYSICAL_INV.AVAIL_STATUS.VALUE = &PAR_AVAIL_STATUS;
&REC_PHYSICAL_INV.AVAIL_STATUS_TYPE.VALUE = " ";
&REC_PHYSICAL_INV.REASON_CD.VALUE = " ";
&REC_PHYSICAL_INV.DT_TIMESTAMP.VALUE = &PAR_DT_TIMESTAMP;
&REC_PHYSICAL_INV.DESCR254.VALUE = " ";
&REC_PHYSICAL_INV.Insert();
End-Function;
/*******************************************************************************
**********************************

* Faz atualizao de QTDs na tabela PHYSICAL_INV ou Cria uma nova linha caso no exist
a.
********************************************************************************
*********************************/
Function ATUALIZA_PHYSICAL_INV_020(&PAR_BUSINESS_UNIT, &PAR_STAGED_DATE, &PAR_IN
V_LOT_ID, &PAR_INV_ITEM_ID, &PAR_SERIAL_ID, &PAR_STORAGE_AREA, &PAR_STOR_LEVEL_1
, &PAR_STOR_LEVEL_2, &PAR_STOR_LEVEL_3, &PAR_STOR_LEVEL_4, &PAR_CONTAINER_ID, &P
AR_UNIT_OF_MEASURE, &PAR_QTY, &PAR_QTY_BASE)
SQLExec("select 'Y' from sysadm.ps_physical_inv where business_unit=:1 and s
taged_date= %datein(:2) and inv_lot_id=:3 and inv_item_id=:4 and serial_id=:5 an
d storage_area=:6 and stor_level_1=:7 and stor_level_2=:8 and stor_level_3=:9 an
d stor_level_4=:10 and container_id=:11 and unit_of_measure=:12", &PAR_BUSINESS_
UNIT, &PAR_STAGED_DATE, &PAR_INV_LOT_ID, &PAR_INV_ITEM_ID, &PAR_SERIAL_ID, &PAR_
STORAGE_AREA, &PAR_STOR_LEVEL_1, &PAR_STOR_LEVEL_2, &PAR_STOR_LEVEL_3, &PAR_STOR
_LEVEL_4, &PAR_CONTAINER_ID, &PAR_UNIT_OF_MEASURE, &EXISTE);
If &EXISTE = "Y" Then
&REC_PHYSICAL_INV = CreateRecord(Record.PHYSICAL_INV);
&REC_PHYSICAL_INV.BUSINESS_UNIT.VALUE = &PAR_BUSINESS_UNIT;
&REC_PHYSICAL_INV.STAGED_DATE.VALUE = &PAR_STAGED_DATE;
&REC_PHYSICAL_INV.INV_LOT_ID.VALUE = &PAR_INV_LOT_ID;
&REC_PHYSICAL_INV.INV_ITEM_ID.VALUE = &PAR_INV_ITEM_ID;
&REC_PHYSICAL_INV.SERIAL_ID.VALUE = &PAR_SERIAL_ID;
&REC_PHYSICAL_INV.STORAGE_AREA.VALUE = &PAR_STORAGE_AREA;
&REC_PHYSICAL_INV.STOR_LEVEL_1.VALUE = &PAR_STOR_LEVEL_1;
&REC_PHYSICAL_INV.STOR_LEVEL_2.VALUE = &PAR_STOR_LEVEL_2;
&REC_PHYSICAL_INV.STOR_LEVEL_3.VALUE = &PAR_STOR_LEVEL_3;
&REC_PHYSICAL_INV.STOR_LEVEL_4.VALUE = &PAR_STOR_LEVEL_4;
&REC_PHYSICAL_INV.CONTAINER_ID.VALUE = &PAR_CONTAINER_ID;
&REC_PHYSICAL_INV.UNIT_OF_MEASURE.VALUE = &PAR_UNIT_OF_MEASURE;
&REC_PHYSICAL_INV.SelectByKey();
&REC_PHYSICAL_INV.QTY.VALUE = &REC_PHYSICAL_INV.QTY.VALUE + &PAR_QTY;
&REC_PHYSICAL_INV.QTY_BASE.VALUE = &REC_PHYSICAL_INV.QTY_BASE.VALUE + &PAR
_QTY_BASE;
&REC_PHYSICAL_INV.DT_TIMESTAMP.VALUE = %Datetime;
&REC_PHYSICAL_INV.UPDATE();
Else
&PAR_LAST_TRANSACT_TYPE = "020";
&PAR_LAST_ISSUE_DATE = %Date;
&PAR_QTY_RESERVED = 0;
&PAR_QTY_RESERVED_BASE = 0;
&PAR_AVAIL_STATUS = "1";
&PAR_DT_TIMESTAMP = %Datetime;
GRAVA_PHYSICAL_INV(&PAR_BUSINESS_UNIT, &PAR_STAGED_DATE, &PAR_INV_LOT_ID,
&PAR_INV_ITEM_ID, &PAR_SERIAL_ID, &PAR_STORAGE_AREA, &PAR_STOR_LEVEL_1, &PAR_STO
R_LEVEL_2, &PAR_STOR_LEVEL_3, &PAR_STOR_LEVEL_4, &PAR_CONTAINER_ID, &PAR_UNIT_OF
_MEASURE, &PAR_LAST_TRANSACT_TYPE, &PAR_LAST_ISSUE_DATE, &PAR_QTY, &PAR_QTY_RESE
RVED, &PAR_QTY_BASE, &PAR_QTY_RESERVED_BASE, &PAR_AVAIL_STATUS, &PAR_DT_TIMESTAM
P)
End-If;
End-Function;

/********************************************** mmcb.sds4289.sn ****************


**********************************/
/*******************************************************************************

**********************************
* Faz atualizao de QTDs na tabela PHYSICAL_INV ou Cria uma nova linha caso no exist
a.
********************************************************************************
*********************************/
Function ATUALIZA_PHYSICAL_INV_720(&PAR_BUSINESS_UNIT, &PAR_STAGED_DATE, &PAR_IN
V_LOT_ID, &PAR_INV_ITEM_ID, &PAR_SERIAL_ID, &PAR_STORAGE_AREA, &PAR_STOR_LEVEL_1
, &PAR_STOR_LEVEL_2, &PAR_STOR_LEVEL_3, &PAR_STOR_LEVEL_4, &PAR_CONTAINER_ID, &P
AR_UNIT_OF_MEASURE, &PAR_QTY, &PAR_QTY_BASE)
SQLExec("select 'Y' from sysadm.ps_physical_inv where business_unit=:1 and s
taged_date= %datein(:2) and inv_lot_id=:3 and inv_item_id=:4 and serial_id=:5 an
d storage_area=:6 and stor_level_1=:7 and stor_level_2=:8 and stor_level_3=:9 an
d stor_level_4=:10 and container_id=:11 and unit_of_measure=:12", &PAR_BUSINESS_
UNIT, &PAR_STAGED_DATE, &PAR_INV_LOT_ID, &PAR_INV_ITEM_ID, &PAR_SERIAL_ID, &PAR_
STORAGE_AREA, &PAR_STOR_LEVEL_1, &PAR_STOR_LEVEL_2, &PAR_STOR_LEVEL_3, &PAR_STOR
_LEVEL_4, &PAR_CONTAINER_ID, &PAR_UNIT_OF_MEASURE, &EXISTE);
If &EXISTE = "Y" Then
&REC_PHYSICAL_INV = CreateRecord(Record.PHYSICAL_INV);
&REC_PHYSICAL_INV.BUSINESS_UNIT.VALUE = &PAR_BUSINESS_UNIT;
&REC_PHYSICAL_INV.STAGED_DATE.VALUE = &PAR_STAGED_DATE;
&REC_PHYSICAL_INV.INV_LOT_ID.VALUE = &PAR_INV_LOT_ID;
&REC_PHYSICAL_INV.INV_ITEM_ID.VALUE = &PAR_INV_ITEM_ID;
&REC_PHYSICAL_INV.SERIAL_ID.VALUE = &PAR_SERIAL_ID;
&REC_PHYSICAL_INV.STORAGE_AREA.VALUE = &PAR_STORAGE_AREA;
&REC_PHYSICAL_INV.STOR_LEVEL_1.VALUE = &PAR_STOR_LEVEL_1;
&REC_PHYSICAL_INV.STOR_LEVEL_2.VALUE = &PAR_STOR_LEVEL_2;
&REC_PHYSICAL_INV.STOR_LEVEL_3.VALUE = &PAR_STOR_LEVEL_3;
&REC_PHYSICAL_INV.STOR_LEVEL_4.VALUE = &PAR_STOR_LEVEL_4;
&REC_PHYSICAL_INV.CONTAINER_ID.VALUE = &PAR_CONTAINER_ID;
&REC_PHYSICAL_INV.UNIT_OF_MEASURE.VALUE = &PAR_UNIT_OF_MEASURE;
&REC_PHYSICAL_INV.SelectByKey();
&REC_PHYSICAL_INV.QTY.VALUE = &REC_PHYSICAL_INV.QTY.VALUE + &PAR_QTY;
&REC_PHYSICAL_INV.QTY_BASE.VALUE = &REC_PHYSICAL_INV.QTY_BASE.VALUE + &PAR
_QTY_BASE;
&REC_PHYSICAL_INV.DT_TIMESTAMP.VALUE = %Datetime;
&REC_PHYSICAL_INV.UPDATE();
Else
&PAR_LAST_TRANSACT_TYPE = "720";
&PAR_LAST_ISSUE_DATE = %Date;
&PAR_QTY_RESERVED = 0;
&PAR_QTY_RESERVED_BASE = 0;
&PAR_AVAIL_STATUS = "1";
&PAR_DT_TIMESTAMP = %Datetime;
GRAVA_PHYSICAL_INV(&PAR_BUSINESS_UNIT, &PAR_STAGED_DATE, &PAR_INV_LOT_ID,
&PAR_INV_ITEM_ID, &PAR_SERIAL_ID, &PAR_STORAGE_AREA, &PAR_STOR_LEVEL_1, &PAR_STO
R_LEVEL_2, &PAR_STOR_LEVEL_3, &PAR_STOR_LEVEL_4, &PAR_CONTAINER_ID, &PAR_UNIT_OF
_MEASURE, &PAR_LAST_TRANSACT_TYPE, &PAR_LAST_ISSUE_DATE, &PAR_QTY, &PAR_QTY_RESE
RVED, &PAR_QTY_BASE, &PAR_QTY_RESERVED_BASE, &PAR_AVAIL_STATUS, &PAR_DT_TIMESTAM
P)
End-If;
End-Function;
/********************************************** mmcb.sds4289.en ****************
**********************************/

/*******************************************************************************
***
Faz atualizaes QTDs na tabela BU_ITEMS_INV nas Transaes '020' e '030'
********************************************************************************
***/
Function ATUALIZA_BU_ITEMS_INV(&PAR_BUSINESS_UNIT, &PAR_INV_ITEM_ID, &PAR_QTY, &
PAR_TRANSACTION_GROUP, &PAR_LAST_ORDER, &FLAG_AREA_ACEITA_RESERVA)
&REC_BU_ITEMS_INV = CreateRecord(Record.BU_ITEMS_INV);
&REC_BU_ITEMS_INV.BUSINESS_UNIT.VALUE = &PAR_BUSINESS_UNIT;
&REC_BU_ITEMS_INV.INV_ITEM_ID.VALUE = &PAR_INV_ITEM_ID;
&REC_BU_ITEMS_INV.SelectByKey();
/************************************ mmcb.at2603 - s.n */
Evaluate &PAR_TRANSACTION_GROUP
When = "020"
If &FLAG_AREA_ACEITA_RESERVA = "Y" Then
&REC_BU_ITEMS_INV.QTY_AVAILABLE.VALUE = &REC_BU_ITEMS_INV.QTY_AVAILABLE
.VALUE + &PAR_QTY;
End-If;
/* mmcb.SDS5026.so/
/*If (&FLAG_AREA_WIP = "Y") Then
&REC_BU_ITEMS_INV.QTY_RESERVED.VALUE = &REC_BU_ITEMS_INV.QTY_RESERVED.V
ALUE + &PAR_QTY;
End-If;*/
&reservado = quantidadeReservadaBU(&PAR_BUSINESS_UNIT, &PAR_INV_ITEM_ID);
/* mmcb.SDS5026.ln */
&REC_BU_ITEMS_INV.QTY_RESERVED.VALUE = &reservado; /* mmcb.SDS5026.ln */
&REC_BU_ITEMS_INV.QTY_OWNED.VALUE = &REC_BU_ITEMS_INV.QTY_OWNED.VALUE + &P
AR_QTY;
&REC_BU_ITEMS_INV.QTY_ONHAND.VALUE = &REC_BU_ITEMS_INV.QTY_ONHAND.VALUE +
&PAR_QTY;
Break;
When = "021"
&REC_BU_ITEMS_INV.QTY_AVAILABLE.VALUE = &REC_BU_ITEMS_INV.QTY_AVAILABLE.VA
LUE + &PAR_QTY;
&REC_BU_ITEMS_INV.QTY_OWNED.VALUE = &REC_BU_ITEMS_INV.QTY_OWNED.VALUE + &P
AR_QTY;
&REC_BU_ITEMS_INV.QTY_ONHAND.VALUE = &REC_BU_ITEMS_INV.QTY_ONHAND.VALUE +
&PAR_QTY;
&reservado = quantidadeReservadaBU(&PAR_BUSINESS_UNIT, &PAR_INV_ITEM_ID);
/* mmcb.SDS5026.ln */
&REC_BU_ITEMS_INV.QTY_RESERVED.VALUE = &reservado; /* mmcb.SDS5026.ln */
Break;
When = "030"
/* mmcb.SDS5026.sn */
If ((&REC_BU_ITEMS_INV.QTY_RESERVED.VALUE - &PAR_QTY) < 0) Then
&PAR_QTY_RESERVA = &REC_BU_ITEMS_INV.QTY_RESERVED.VALUE;
Else
&PAR_QTY_RESERVA = &PAR_QTY;

End-If;
/* mmcb.SDS5026.en */
&REC_BU_ITEMS_INV.QTY_OWNED.VALUE = &REC_BU_ITEMS_INV.QTY_OWNED.VALUE - &P
AR_QTY;
&REC_BU_ITEMS_INV.QTY_ONHAND.VALUE = &REC_BU_ITEMS_INV.QTY_ONHAND.VALUE &PAR_QTY;
/*&REC_BU_ITEMS_INV.QTY_RESERVED.VALUE = &REC_BU_ITEMS_INV.QTY_RESERVED.VA
LUE - &PAR_QTY;
mmcb.SDS5026.lo */
&REC_BU_ITEMS_INV.QTY_RESERVED.VALUE = &REC_BU_ITEMS_INV.QTY_RESERVED.VALU
E - &PAR_QTY_RESERVA; /* mmcb.SDS5026.ln */
&REC_BU_ITEMS_INV.DT_TIMESTAMP.VALUE = %Datetime;
&REC_BU_ITEMS_INV.LAST_ORDER.VALUE = &PAR_LAST_ORDER;
&REC_BU_ITEMS_INV.LAST_ORDER_DATE.VALUE = %Date;
Break;
/********************** mmcb.sds4289.sn ***********************/
When = "720"
If &FLAG_AREA_ACEITA_RESERVA = "Y" Then
&REC_BU_ITEMS_INV.QTY_AVAILABLE.VALUE = &REC_BU_ITEMS_INV.QTY_AVAILABLE
.VALUE + &PAR_QTY;
End-If;
&REC_BU_ITEMS_INV.QTY_OWNED.VALUE = &REC_BU_ITEMS_INV.QTY_OWNED.VALUE + &P
AR_QTY;
&REC_BU_ITEMS_INV.QTY_ONHAND.VALUE = &REC_BU_ITEMS_INV.QTY_ONHAND.VALUE +
&PAR_QTY;
&reservado = quantidadeReservadaBU(&PAR_BUSINESS_UNIT, &PAR_INV_ITEM_ID);
/* mmcb.SDS5026.ln */
&REC_BU_ITEMS_INV.QTY_RESERVED.VALUE = &reservado; /* mmcb.SDS5026.ln */
Break;
/********************** mmcb.sds4289.en ***********************/

End-Evaluate;
/************************************ mmcb.at2603 - e.n */
&REC_BU_ITEMS_INV.UPDATE();
End-Function;
/*******************************************************************************
***
Insere uma nova linha tabela BU_ITEMS_INV
********************************************************************************
***/
Function GRAVA_BU_ITEMS_INV(&P_BUSINESS_UNIT, &P_INV_ITEM_ID, &P_QTY)
&R_BU_ITEMS_INV = CreateRecord(Record.BU_ITEMS_INV);
&R_BU_ITEMS_INV.BUSINESS_UNIT.VALUE = &P_BUSINESS_UNIT;
&R_BU_ITEMS_INV.INV_ITEM_ID.VALUE = &P_INV_ITEM_ID;
&R_BU_ITEMS_INV.LAST_ORDER.VALUE = " ";

&R_BU_ITEMS_INV.LAST_PUTAWAY_DATE.VALUE = %Date;
&R_BU_ITEMS_INV.QTY_AVAILABLE.VALUE = &P_QTY;
&R_BU_ITEMS_INV.QTY_RESERVED.VALUE = 0;
&R_BU_ITEMS_INV.QTY_OWNED.VALUE = &P_QTY;
&R_BU_ITEMS_INV.QTY_ONHAND.VALUE = &P_QTY;
&R_BU_ITEMS_INV.LAST_DEMAND_CALC.VALUE = " ";
&R_BU_ITEMS_INV.LAST_MO_DEMAND.VALUE = 0;
&R_BU_ITEMS_INV.LAST_QTR_DEMAND.VALUE = 0;
&R_BU_ITEMS_INV.LAST_2QTR_DEMAND.VALUE = 0;
&R_BU_ITEMS_INV.LAST_ANNUAL_DEMAND.VALUE = 0;
&R_BU_ITEMS_INV.LAST_UD_DEMAND.VALUE = 0;
&R_BU_ITEMS_INV.REPLENISH_CLASS.VALUE = " ";
&R_BU_ITEMS_INV.REPL_CALC_PERIOD.VALUE = 0;
&R_BU_ITEMS_INV.REPLENISH_LEAD.VALUE = 0;
&R_BU_ITEMS_INV.HISTORICAL_LEAD.VALUE = 0;
&R_BU_ITEMS_INV.PROJECTED_LEAD.VALUE = 0;
&R_BU_ITEMS_INV.SAFETY_STOCK.VALUE = 0;
&R_BU_ITEMS_INV.STOCKOUT_RATE.VALUE = 0;
&R_BU_ITEMS_INV.REORDER_POINT.VALUE = 0;
&R_BU_ITEMS_INV.REORDER_QTY.VALUE = 0;
&R_BU_ITEMS_INV.QTY_IUT_PAR.VALUE = 0;
&R_BU_ITEMS_INV.EOQ.VALUE = 0;
&R_BU_ITEMS_INV.AOQ.VALUE = 1;
&R_BU_ITEMS_INV.FOQ.VALUE = 0;
&R_BU_ITEMS_INV.QTY_MAXIMUM.VALUE = 0;
&R_BU_ITEMS_INV.DAYS_SUPPLY.VALUE = 0;
&R_BU_ITEMS_INV.ORDER_MULTIPLE.VALUE = 0;
&R_BU_ITEMS_INV.SAFETY_LEAD_TIME.VALUE = 0;
&R_BU_ITEMS_INV.TARGET_LEVEL.VALUE = 0;
&R_BU_ITEMS_INV.EXCESS_BU.VALUE = " ";
&R_BU_ITEMS_INV.LAST_ISS_EXCESS.VALUE = 0;
&R_BU_ITEMS_INV.USE_UP_QOH.VALUE = "N";
&R_BU_ITEMS_INV.INSPECT_TIME.VALUE = 0;
&R_BU_ITEMS_INV.DOCK_TO_STOCK.VALUE = 0;
&R_BU_ITEMS_INV.COST_ELEMENT.VALUE = "MPI";
&R_BU_ITEMS_INV.COST_GROUP_CD.VALUE = " ";
&R_BU_ITEMS_INV.LAST_CYCLE_COUNT.VALUE = %Date;
&R_BU_ITEMS_INV.RELATED_ITEM_ID.VALUE = " ";
&R_BU_ITEMS_INV.ROPC_INSTANCE.VALUE = 0;
&R_BU_ITEMS_INV.ROPC_STATUS.VALUE = "1";
&R_BU_ITEMS_INV.SSTC_INSTANCE.VALUE = 0;
&R_BU_ITEMS_INV.SSTC_STATUS.VALUE = "1";
&R_BU_ITEMS_INV.EOQC_INSTANCE.VALUE = 0;
&R_BU_ITEMS_INV.EOQC_STATUS.VALUE = "1";
&R_BU_ITEMS_INV.HLDC_INSTANCE.VALUE = 0;
&R_BU_ITEMS_INV.HLDC_STATUS.VALUE = "1";
&R_BU_ITEMS_INV.ANNDM_INSTANCE.VALUE = 0;
&R_BU_ITEMS_INV.ANNDM_STATUS.VALUE = "1";
&R_BU_ITEMS_INV.CYCLE_INSTANCE.VALUE = 0;
&R_BU_ITEMS_INV.NO_REPLENISH_FLG.VALUE = "Y";
&R_BU_ITEMS_INV.INCL_WIP_QTY_FLG.VALUE = " ";
&R_BU_ITEMS_INV.SOURCE_CODE.VALUE = "2";
&R_BU_ITEMS_INV.PHANTOM_ITEM_FLAG.VALUE = "N";
&R_BU_ITEMS_INV.BOM_USAGE.VALUE = "1";
&R_BU_ITEMS_INV.DT_TIMESTAMP.VALUE = %Date;
&R_BU_ITEMS_INV.LAST_PRICE_PAID.VALUE = 0;
&R_BU_ITEMS_INV.AVERAGE_COST.VALUE = 2;
&R_BU_ITEMS_INV.CURRENT_COST.VALUE = 0;

&R_BU_ITEMS_INV.DFLT_ACTUAL_COST.VALUE = 0;
&R_BU_ITEMS_INV.EXCESS_INVENTORY.VALUE = "N";
&R_BU_ITEMS_INV.REVISION_CONTROL.VALUE = "N";
&R_BU_ITEMS_INV.ISSUE_METHOD.VALUE = "ISS";
&R_BU_ITEMS_INV.STAGED_DATE_FLAG.VALUE = "N";
&R_BU_ITEMS_INV.ISSUE_MULTIPLE.VALUE = 1;
&R_BU_ITEMS_INV.REPLENISH_POINT.VALUE = 0;
&R_BU_ITEMS_INV.WIP_MIN_QTY.VALUE = 0;
&R_BU_ITEMS_INV.PLANNER_CD.VALUE = " ";
&R_BU_ITEMS_INV.YIELD_CALC_FLG.VALUE = "N";
&R_BU_ITEMS_INV.PRDN_AREA_CODE.VALUE = " ";
&R_BU_ITEMS_INV.TRANSIT_COST_TYP.VALUE = "F";
&R_BU_ITEMS_INV.UOM_CONV_FLAG.VALUE = "0";
&R_BU_ITEMS_INV.MASTER_RTG_OPT.VALUE = "ITM";
&R_BU_ITEMS_INV.REF_ROUTING_ITEM.VALUE = &P_INV_ITEM_ID;
&R_BU_ITEMS_INV.STD_PACK_UOM.VALUE = "PC";
&R_BU_ITEMS_INV.FORECAST_ITEM_FLAG.VALUE = "N";
&R_BU_ITEMS_INV.COUNTRY_IST_ORIGINV.VALUE = " ";
&R_BU_ITEMS_INV.IST_REGION_ORIGIN.VALUE = " ";
SQLExec("select itm_status_effdt from sysadm.ps_master_item_tbl where setid='
MMCSA' and inv_item_id =:1 ", &P_INV_ITEM_ID, &V_ITM_STATUS_EFFDT);
If None(&V_ITM_STATUS_EFFDT) Then
Error ("O Item: " | &P_INV_ITEM_ID | " no est parametrizado. ");
End-If;
&R_BU_ITEMS_INV.ITM_STATUS_EFFDT.VALUE = &V_ITM_STATUS_EFFDT;
&R_BU_ITEMS_INV.ITM_STATUS_CURRENT.VALUE = "1";
&R_BU_ITEMS_INV.ITM_STATUS_FUTURE.VALUE = " ";
&R_BU_ITEMS_INV.DECLARED_VALUE.VALUE = 0;
&R_BU_ITEMS_INV.SF_WIP_MAX_QTY.VALUE = 0;
&R_BU_ITEMS_INV.SF_RPL_MODE.VALUE = "1";
&R_BU_ITEMS_INV.SF_RPL_SOURCE.VALUE = "1";
&R_BU_ITEMS_INV.SF_RPL_METHOD.VALUE = "3";
&R_BU_ITEMS_INV.SF_RPL_TYPE.VALUE = "1";
&R_BU_ITEMS_INV.SF_DISPATCH_MODE.VALUE = "1";
&R_BU_ITEMS_INV.SF_RPL_STOR_AREA.VALUE = " ";
&R_BU_ITEMS_INV.SF_RPL_STOR_LEV1.VALUE = " ";
&R_BU_ITEMS_INV.SF_RPL_STOR_LEV2.VALUE = " ";
&R_BU_ITEMS_INV.SF_RPL_STOR_LEV3.VALUE = " ";
&R_BU_ITEMS_INV.SF_RPL_STOR_LEV4.VALUE = " ";
&R_BU_ITEMS_INV.SF_RPL_VENDOR_ID.VALUE = " ";
&R_BU_ITEMS_INV.SF_RPL_VNDR_LOC.VALUE = " ";
&R_BU_ITEMS_INV.SF_RPL_PRDN_AREA.VALUE = " ";
&R_BU_ITEMS_INV.AVERAGE_COST_MAT.VALUE = 2;
&R_BU_ITEMS_INV.EN_AUTO_REV.VALUE = " ";
&R_BU_ITEMS_INV.FORECASTER.VALUE = " ";
&R_BU_ITEMS_INV.TRANSFER_MIN_ORDER.VALUE = 0;
&R_BU_ITEMS_INV.TRANSFER_YIELD.VALUE = 0;
&R_BU_ITEMS_INV.NON_OWN_FLAG.VALUE = "N";
&R_BU_ITEMS_INV.INV_STOCK_TYPE.VALUE = " ";
&R_BU_ITEMS_INV.SHIP_TYPE_ID.VALUE = " ";
&R_BU_ITEMS_INV.ISOLATE_ITEM_FLG.VALUE = "N";
&R_BU_ITEMS_INV.INVENTORY_ITEM.VALUE = "Y";
&R_BU_ITEMS_INV.MG_PRDN_OPTION.VALUE = "01";
&R_BU_ITEMS_INV.MG_VALID_PRDN_OPT.VALUE = "N";
&R_BU_ITEMS_INV.MG_ASSOCIATED_BOM.VALUE = &P_INV_ITEM_ID;
&R_BU_ITEMS_INV.SHELF_LIFE.VALUE = 0;
&R_BU_ITEMS_INV.AVAIL_LEAD_TIME.VALUE = 0;
&R_BU_ITEMS_INV.RETEST_LEAD_TIME.VALUE = 0;
&R_BU_ITEMS_INV.MATERIAL_RECON_FLG.VALUE = " ";
&R_BU_ITEMS_INV.USG_TRCKNG_METHOD.VALUE = " ";

&R_BU_ITEMS_INV.CHARGE_MARKUP_PCNT.VALUE = 0;
&R_BU_ITEMS_INV.CHARGE_MARKUP_AMT.VALUE = 0;
&R_BU_ITEMS_INV.CHARGE_CODE.VALUE = " ";
&R_BU_ITEMS_INV.MFG_COSTED_FLAG.VALUE = "Y";
&R_BU_ITEMS_INV.CONSIGNED_FLAG.VALUE = "N";
&R_BU_ITEMS_INV.VENDOR_ID.VALUE = " ";
&R_BU_ITEMS_INV.VNDR_LOC.VALUE = " ";
&R_BU_ITEMS_INV.BOM_CODE.VALUE = 0;
&R_BU_ITEMS_INV.RTG_CODE.VALUE = 0;
&R_BU_ITEMS_INV.MFG_LEADTIME_F.VALUE = 0;
&R_BU_ITEMS_INV.MFG_LEADTIME_V.VALUE = 0;
&R_BU_ITEMS_INV.MFG_LTRATEF.VALUE = "HR";
&R_BU_ITEMS_INV.MFG_LTRATEV.VALUE = "HR";
&R_BU_ITEMS_INV.OVERSIZED.VALUE = "N";
&R_BU_ITEMS_INV.ADD_HANDLING.VALUE = "N";
&R_BU_ITEMS_INV.ITEM_FIELD_C30_A.VALUE = " ";
&R_BU_ITEMS_INV.ITEM_FIELD_C30_B.VALUE = " ";
&R_BU_ITEMS_INV.ITEM_FIELD_C30_C.VALUE = " ";
&R_BU_ITEMS_INV.ITEM_FIELD_C30_D.VALUE = " ";
&R_BU_ITEMS_INV.ITEM_FIELD_C1_A.VALUE = " ";
&R_BU_ITEMS_INV.ITEM_FIELD_C1_B.VALUE = " ";
&R_BU_ITEMS_INV.ITEM_FIELD_C1_C.VALUE = " ";
&R_BU_ITEMS_INV.ITEM_FIELD_C1_D.VALUE = " ";
&R_BU_ITEMS_INV.ITEM_FIELD_C10_A.VALUE = " ";
&R_BU_ITEMS_INV.ITEM_FIELD_C10_B.VALUE = " ";
&R_BU_ITEMS_INV.ITEM_FIELD_C10_C.VALUE = " ";
&R_BU_ITEMS_INV.ITEM_FIELD_C10_D.VALUE = " ";
&R_BU_ITEMS_INV.ITEM_FIELD_C2.VALUE = " ";
&R_BU_ITEMS_INV.ITEM_FIELD_C4.VALUE = " ";
&R_BU_ITEMS_INV.ITEM_FIELD_C6.VALUE = " ";
&R_BU_ITEMS_INV.ITEM_FIELD_C8.VALUE = " ";
&R_BU_ITEMS_INV.ITEM_FIELD_N12_A.VALUE = 0;
&R_BU_ITEMS_INV.ITEM_FIELD_N12_B.VALUE = 0;
&R_BU_ITEMS_INV.ITEM_FIELD_N12_C.VALUE = 0;
&R_BU_ITEMS_INV.ITEM_FIELD_N12_D.VALUE = 0;
&R_BU_ITEMS_INV.ITEM_FIELD_N15_A.VALUE = 0;
&R_BU_ITEMS_INV.ITEM_FIELD_N15_B.VALUE = 0;
&R_BU_ITEMS_INV.ITEM_FIELD_N15_C.VALUE = 0;
&R_BU_ITEMS_INV.ITEM_FIELD_N15_D.VALUE = 0;
&R_BU_ITEMS_INV.EXPORTER_ECCN.VALUE = " ";
&R_BU_ITEMS_INV.EXPORT_LIC_NBR.VALUE = " ";
&R_BU_ITEMS_INV.EXPORT_LIC_NBR.Insert();
End-Function;

/*******************************************************************************
********************
Insere uma nova linha Tabela TRANSACTION_INV para transaes '020' e '030'
********************************************************************************
*******************/
Function GRAVA_TRANSACTION(&PAR_BUSINESS_UNIT, &PAR_INV_ITEM_ID, &PAR_DT_TIMESTA
MP, &PAR_SEQ_NBR, &PAR_SOURCE_BUS_UNIT, &PAR_ORDER_NO, &PAR_ORDER_INT_LINE_NO, &
PAR_SCHED_LINE_NO, &PAR_DEMAND_LINE_NO, &PAR_STAGED_DATE, &PAR_INV_LOT_ID, &PAR_
SERIAL_ID, &PAR_STORAGE_AREA, &PAR_STOR_LEVEL_1, &PAR_STOR_LEVEL_2, &PAR_STOR_LE
VEL_3, &PAR_STOR_LEVEL_4, &PAR_RECEIVER_ID, &PAR_RECV_LN_NBR, &PAR_TRANSACTION_G
ROUP, &PAR_TRANSACTION_DATE, &PAR_QTY_BASE, &PAR_QTY, &PAR_UNIT_MEASURE_STD, &PA
R_UNIT_OF_MEASURE, &PAR_OPRID, &PAR_ACCOUNT, &PAR_DEPTID, &PAR_PO_ID, &PAR_DISTR
IB_LINE_NUM, &PAR_DISTRIB_SEQ_NUM, &PAR_RECV_SHIP_SEQ_NBR, &PAR_PRICE_PO, &PAR_A
NALYSIS_TYPE, &PAR_VENDOR_ID, &PAR_STAGED_TYPE, &PAR_DISTRIB_TYPE, &PAR_BUSINESS

_UNIT_PO, &PAR_TRANSACTION_SOURCE, &PAR_CONVERSION_RATE, &PAR_PROCESS_INSTANCE,


&PAR_PROCESS_FLAG, &PAR_SHIP_ID)
&REC_TRANSACTION = CreateRecord(Record.TRANSACTION_INV);
&REC_TRANSACTION.BUSINESS_UNIT.Value = &PAR_BUSINESS_UNIT;
&REC_TRANSACTION.INV_ITEM_ID.Value = &PAR_INV_ITEM_ID;
&REC_TRANSACTION.DT_TIMESTAMP.Value = &PAR_DT_TIMESTAMP;
&REC_TRANSACTION.SEQ_NBR.Value = &PAR_SEQ_NBR;
&REC_TRANSACTION.SOURCE_BUS_UNIT.Value = &PAR_SOURCE_BUS_UNIT;
&REC_TRANSACTION.ORDER_NO.Value = &PAR_ORDER_NO;
&REC_TRANSACTION.ORDER_INT_LINE_NO.Value = &PAR_ORDER_INT_LINE_NO;
&REC_TRANSACTION.SCHED_LINE_NO.Value = &PAR_SCHED_LINE_NO;
&REC_TRANSACTION.DEMAND_LINE_NO.Value = &PAR_DEMAND_LINE_NO;
&REC_TRANSACTION.STAGED_DATE.Value = &PAR_STAGED_DATE;
&REC_TRANSACTION.INV_LOT_ID.Value = &PAR_INV_LOT_ID;
&REC_TRANSACTION.SERIAL_ID.Value = &PAR_SERIAL_ID;
&REC_TRANSACTION.STORAGE_AREA.Value = &PAR_STORAGE_AREA;
&REC_TRANSACTION.STOR_LEVEL_1.Value = &PAR_STOR_LEVEL_1;
&REC_TRANSACTION.STOR_LEVEL_2.Value = &PAR_STOR_LEVEL_2;
&REC_TRANSACTION.STOR_LEVEL_3.Value = &PAR_STOR_LEVEL_3;
&REC_TRANSACTION.STOR_LEVEL_4.Value = &PAR_STOR_LEVEL_4;
&REC_TRANSACTION.CONTAINER_ID.Value = " ";
&REC_TRANSACTION.RECEIVER_ID.Value = &PAR_RECEIVER_ID;
&REC_TRANSACTION.RECV_LN_NBR.Value = &PAR_RECV_LN_NBR;
&REC_TRANSACTION.COUNTING_EVENT_ID.Value = 0;
&REC_TRANSACTION.TRANSACTION_GROUP.Value = &PAR_TRANSACTION_GROUP;
&REC_TRANSACTION.TRANSACTION_DATE.Value = &PAR_TRANSACTION_DATE;
&REC_TRANSACTION.QTY_BASE.Value = &PAR_QTY_BASE;
&REC_TRANSACTION.QTY.Value = &PAR_QTY;
&REC_TRANSACTION.UNIT_MEASURE_STD.Value = &PAR_UNIT_MEASURE_STD;
&REC_TRANSACTION.UNIT_OF_MEASURE.Value = &PAR_UNIT_OF_MEASURE;
&REC_TRANSACTION.TO_CONTAINER_ID.Value = " ";
&REC_TRANSACTION.TO_STORAGE_AREA.Value = " ";
&REC_TRANSACTION.TO_STOR_LEVEL_1.Value = " ";
&REC_TRANSACTION.TO_STOR_LEVEL_2.Value = " ";
&REC_TRANSACTION.TO_STOR_LEVEL_3.Value = " ";
&REC_TRANSACTION.TO_STOR_LEVEL_4.Value = " ";
&REC_TRANSACTION.TO_UOM.Value = " ";
&REC_TRANSACTION.ADJUST_TYPE.Value = " ";
&REC_TRANSACTION.REASON_CD.Value = " ";
&REC_TRANSACTION.DOCUMENT_ID.Value = " ";
&REC_TRANSACTION.NON_COST_FLAG.Value = " ";
&REC_TRANSACTION.NON_OWN_FLAG.Value = "N";
&REC_TRANSACTION.COSTED_FLAG.Value = "N";
&REC_TRANSACTION.WT_AVE_COST.Value = 0;
&REC_TRANSACTION.OPRID.Value = &PAR_OPRID;
&REC_TRANSACTION.ACCOUNT.Value = &PAR_ACCOUNT;
&REC_TRANSACTION.ALTACCT.Value = " ";
&REC_TRANSACTION.OPERATING_UNIT.Value = " ";
&REC_TRANSACTION.DEPTID.Value = &PAR_DEPTID;
&REC_TRANSACTION.PRODUCT.Value = " ";
&REC_TRANSACTION.PROJECT_ID.Value = " ";
&REC_TRANSACTION.CURRENCY_CD.Value = " ";
&REC_TRANSACTION.STATISTICS_CODE.Value = " ";
&REC_TRANSACTION.PO_ID.Value = &PAR_PO_ID;
&REC_TRANSACTION.DISTRIB_LINE_NUM.Value = &PAR_DISTRIB_LINE_NUM;
&REC_TRANSACTION.DISTRIB_SEQ_NUM.Value = &PAR_DISTRIB_SEQ_NUM;
&REC_TRANSACTION.RECV_SHIP_SEQ_NBR.Value = &PAR_RECV_SHIP_SEQ_NBR;
&REC_TRANSACTION.PRICE_PO.Value = &PAR_PRICE_PO;
&REC_TRANSACTION.REQ_ID.Value = " ";

&REC_TRANSACTION.REQ_LINE_NBR.Value = 0;
&REC_TRANSACTION.REQ_SCHED_NBR.Value = 0;
&REC_TRANSACTION.REQ_DISTRIB_NBR.Value = 0;
&REC_TRANSACTION.RMA_ID.Value = " ";
&REC_TRANSACTION.RMA_LINE_NBR.Value = 0;
&REC_TRANSACTION.RTV_ID.Value = " ";
&REC_TRANSACTION.RTV_LN_NBR.Value = 0;
&REC_TRANSACTION.RTV_DISTRIB_NUM.Value = 0;
&REC_TRANSACTION.ACTIVITY_ID.Value = " ";
&REC_TRANSACTION.RESOURCE_TYPE.Value = " ";
&REC_TRANSACTION.RESOURCE_CATEGORY.Value = " ";
&REC_TRANSACTION.RESOURCE_SUB_CAT.Value = " ";
&REC_TRANSACTION.ANALYSIS_TYPE.Value = &PAR_ANALYSIS_TYPE;
&REC_TRANSACTION.INTERUNIT_ID.Value = " ";
&REC_TRANSACTION.INTERUNIT_LINE.Value = 0;
&REC_TRANSACTION.DESTIN_BU.Value = " ";
&REC_TRANSACTION.INSPECTION_ID.Value = " ";
&REC_TRANSACTION.TRANSFER_COST.Value = 0;
&REC_TRANSACTION.PURCH_LOT_ID.Value = " ";
&REC_TRANSACTION.VENDOR_ID.Value = &PAR_VENDOR_ID;
&REC_TRANSACTION.PRODUCTION_ID.Value = " ";
&REC_TRANSACTION.MA_PRDN_ID_FLG.Value = "N";
&REC_TRANSACTION.PRDN_AREA_CODE.Value = " ";
&REC_TRANSACTION.PRODUCTION_TYPE.Value = " ";
&REC_TRANSACTION.PUTAWAY_COMMENT.Value = " ";
&REC_TRANSACTION.STAGED_TYPE.Value = &PAR_STAGED_TYPE;
&REC_TRANSACTION.DISTRIB_TYPE.Value = &PAR_DISTRIB_TYPE;
&REC_TRANSACTION.STORAGE_CODE.Value = " ";
&REC_TRANSACTION.INV_STOCK_TYPE.Value = " ";
&REC_TRANSACTION.RECEIPT_TYPE.Value = " ";
&REC_TRANSACTION.BUSINESS_UNIT_PO.Value = &PAR_BUSINESS_UNIT_PO;
&REC_TRANSACTION.BUSINESS_UNIT_PC.Value = " ";
&REC_TRANSACTION.TRANSACTION_SOURCE.Value = &PAR_TRANSACTION_SOURCE;
&REC_TRANSACTION.CONVERSION_RATE.Value = &PAR_CONVERSION_RATE;
&REC_TRANSACTION.EIP_CTL_ID.Value = " ";
&REC_TRANSACTION.EIP_TRANS_SRC.Value = " ";
&REC_TRANSACTION.TRANSACTION_CODE.Value = " ";
&REC_TRANSACTION.BCT_SOURCE.Value = " ";
&REC_TRANSACTION.JOB_INSTANCE.Value = 0;
&REC_TRANSACTION.PROCESS_INSTANCE.Value = &PAR_PROCESS_INSTANCE;
&REC_TRANSACTION.PROCESS_FLAG.Value = &PAR_PROCESS_FLAG;
&REC_TRANSACTION.SHIP_ID.Value = &PAR_SHIP_ID;
&REC_TRANSACTION.CONSIGNED_FLAG.Value = "N";
&REC_TRANSACTION.TO_CONSIGNED_FLG.Value = " ";
&REC_TRANSACTION.TO_NON_OWN_FLG.Value = " ";
&REC_TRANSACTION.EXPORT.Value = "N";
&REC_TRANSACTION.REPLACEMENT_FLG.Value = "NA";
&REC_TRANSACTION.IST_RETURN_FLG_IUT.Value = "N";
&REC_TRANSACTION.IST_TXN_FLG.Value = "N";
&REC_TRANSACTION.TRANSFER_COST_DEST.Value = 0;
&REC_TRANSACTION.SF_KANBAN_ID.Value = " ";
&REC_TRANSACTION.Insert();
End-Function;
/*******************************************************************************
********************
Fabiano Cunha - MMC - mmcb.at2603 Insere uma nova linha Tabela TRANSACTION_INV para transao '021'

********************************************************************************
*******************/
Function GRAVA_TRANSACTION_021(&PAR_BUSINESS_UNIT, &PAR_INV_ITEM_ID, &PAR_DT_TIM
ESTAMP, &PAR_SEQ_NBR, &PAR_INV_LOT_ID, &PAR_SERIAL_ID, &PAR_STORAGE_AREA, &PAR_S
TOR_LEVEL_1, &PAR_STOR_LEVEL_2, &PAR_STOR_LEVEL_3, &PAR_STOR_LEVEL_4, &PAR_TRANS
ACTION_DATE, &PAR_QTY_BASE, &PAR_QTY, &PAR_UNIT_MEASURE_STD, &PAR_UNIT_OF_MEASUR
E, &PAR_OPRID, &PAR_PRODUCTION_ID, &PAR_PRDN_AREA_CODE, &PAR_PROCESS_INSTANCE)
&REC_TRANSACTION = CreateRecord(Record.TRANSACTION_INV);
&REC_TRANSACTION.BUSINESS_UNIT.Value = &PAR_BUSINESS_UNIT;
&REC_TRANSACTION.INV_ITEM_ID.Value = &PAR_INV_ITEM_ID;
&REC_TRANSACTION.DT_TIMESTAMP.Value = &PAR_DT_TIMESTAMP;
&REC_TRANSACTION.SEQ_NBR.Value = &PAR_SEQ_NBR;
&REC_TRANSACTION.SOURCE_BUS_UNIT.Value = " ";
&REC_TRANSACTION.ORDER_NO.Value = " ";
&REC_TRANSACTION.ORDER_INT_LINE_NO.Value = 0;
&REC_TRANSACTION.SCHED_LINE_NO.Value = 0;
&REC_TRANSACTION.DEMAND_LINE_NO.Value = 0;
&REC_TRANSACTION.STAGED_DATE.Value = Date3(1900, 1, 1);
&REC_TRANSACTION.INV_LOT_ID.Value = &PAR_INV_LOT_ID;
&REC_TRANSACTION.SERIAL_ID.Value = &PAR_SERIAL_ID;
&REC_TRANSACTION.STORAGE_AREA.Value = &PAR_STORAGE_AREA;
&REC_TRANSACTION.STOR_LEVEL_1.Value = &PAR_STOR_LEVEL_1;
&REC_TRANSACTION.STOR_LEVEL_2.Value = &PAR_STOR_LEVEL_2;
&REC_TRANSACTION.STOR_LEVEL_3.Value = &PAR_STOR_LEVEL_3;
&REC_TRANSACTION.STOR_LEVEL_4.Value = &PAR_STOR_LEVEL_4;
&REC_TRANSACTION.CONTAINER_ID.Value = " ";
&REC_TRANSACTION.RECEIVER_ID.Value = "ALL";
&REC_TRANSACTION.RECV_LN_NBR.Value = "99999";
&REC_TRANSACTION.COUNTING_EVENT_ID.Value = 0;
&REC_TRANSACTION.TRANSACTION_GROUP.Value = "021";
&REC_TRANSACTION.TRANSACTION_DATE.Value = &PAR_TRANSACTION_DATE;
&REC_TRANSACTION.QTY_BASE.Value = &PAR_QTY_BASE;
&REC_TRANSACTION.QTY.Value = &PAR_QTY;
&REC_TRANSACTION.UNIT_MEASURE_STD.Value = &PAR_UNIT_MEASURE_STD;
&REC_TRANSACTION.UNIT_OF_MEASURE.Value = &PAR_UNIT_OF_MEASURE;
&REC_TRANSACTION.TO_CONTAINER_ID.Value = " ";
&REC_TRANSACTION.TO_STORAGE_AREA.Value = " ";
&REC_TRANSACTION.TO_STOR_LEVEL_1.Value = " ";
&REC_TRANSACTION.TO_STOR_LEVEL_2.Value = " ";
&REC_TRANSACTION.TO_STOR_LEVEL_3.Value = " ";
&REC_TRANSACTION.TO_STOR_LEVEL_4.Value = " ";
&REC_TRANSACTION.TO_UOM.Value = " ";
&REC_TRANSACTION.ADJUST_TYPE.Value = " ";
&REC_TRANSACTION.REASON_CD.Value = " ";
&REC_TRANSACTION.DOCUMENT_ID.Value = " ";
&REC_TRANSACTION.NON_COST_FLAG.Value = " ";
&REC_TRANSACTION.NON_OWN_FLAG.Value = "N";
&REC_TRANSACTION.COSTED_FLAG.Value = "N";
&REC_TRANSACTION.WT_AVE_COST.Value = 0;
&REC_TRANSACTION.OPRID.Value = &PAR_OPRID;
&REC_TRANSACTION.ACCOUNT.Value = " ";
&REC_TRANSACTION.ALTACCT.Value = " ";
&REC_TRANSACTION.OPERATING_UNIT.Value = " ";
&REC_TRANSACTION.DEPTID.Value = " ";
&REC_TRANSACTION.PRODUCT.Value = " ";
&REC_TRANSACTION.PROJECT_ID.Value = " ";
&REC_TRANSACTION.CURRENCY_CD.Value = " ";
&REC_TRANSACTION.STATISTICS_CODE.Value = " ";
&REC_TRANSACTION.PO_ID.Value = " ";

&REC_TRANSACTION.DISTRIB_LINE_NUM.Value = "0";
&REC_TRANSACTION.DISTRIB_SEQ_NUM.Value = "0";
&REC_TRANSACTION.RECV_SHIP_SEQ_NBR.Value = "0";
&REC_TRANSACTION.PRICE_PO.Value = "0";
&REC_TRANSACTION.REQ_ID.Value = " ";
&REC_TRANSACTION.REQ_LINE_NBR.Value = 0;
&REC_TRANSACTION.REQ_SCHED_NBR.Value = 0;
&REC_TRANSACTION.REQ_DISTRIB_NBR.Value = 0;
&REC_TRANSACTION.RMA_ID.Value = " ";
&REC_TRANSACTION.RMA_LINE_NBR.Value = 0;
&REC_TRANSACTION.RTV_ID.Value = " ";
&REC_TRANSACTION.RTV_LN_NBR.Value = 0;
&REC_TRANSACTION.RTV_DISTRIB_NUM.Value = 0;
&REC_TRANSACTION.ACTIVITY_ID.Value = " ";
&REC_TRANSACTION.RESOURCE_TYPE.Value = " ";
&REC_TRANSACTION.RESOURCE_CATEGORY.Value = " ";
&REC_TRANSACTION.RESOURCE_SUB_CAT.Value = " ";
&REC_TRANSACTION.ANALYSIS_TYPE.Value = " ";
&REC_TRANSACTION.INTERUNIT_ID.Value = " ";
&REC_TRANSACTION.INTERUNIT_LINE.Value = 0;
&REC_TRANSACTION.DESTIN_BU.Value = " ";
&REC_TRANSACTION.INSPECTION_ID.Value = " ";
&REC_TRANSACTION.TRANSFER_COST.Value = 0;
&REC_TRANSACTION.PURCH_LOT_ID.Value = " ";
&REC_TRANSACTION.VENDOR_ID.Value = " ";
&REC_TRANSACTION.PRODUCTION_ID.Value = &PAR_PRODUCTION_ID;
&REC_TRANSACTION.MA_PRDN_ID_FLG.Value = "Y";
&REC_TRANSACTION.PRDN_AREA_CODE.Value = &PAR_PRDN_AREA_CODE;
&REC_TRANSACTION.PRODUCTION_TYPE.Value = "PR";
&REC_TRANSACTION.PUTAWAY_COMMENT.Value = " ";
&REC_TRANSACTION.STAGED_TYPE.Value = "1";
&REC_TRANSACTION.DISTRIB_TYPE.Value = " ";
&REC_TRANSACTION.STORAGE_CODE.Value = " ";
&REC_TRANSACTION.INV_STOCK_TYPE.Value = " ";
&REC_TRANSACTION.RECEIPT_TYPE.Value = " ";
&REC_TRANSACTION.BUSINESS_UNIT_PO.Value = " ";
&REC_TRANSACTION.BUSINESS_UNIT_PC.Value = " ";
&REC_TRANSACTION.TRANSACTION_SOURCE.Value = "WL";
&REC_TRANSACTION.CONVERSION_RATE.Value = "0";
&REC_TRANSACTION.EIP_CTL_ID.Value = " ";
&REC_TRANSACTION.EIP_TRANS_SRC.Value = " ";
&REC_TRANSACTION.TRANSACTION_CODE.Value = " ";
&REC_TRANSACTION.BCT_SOURCE.Value = " ";
&REC_TRANSACTION.JOB_INSTANCE.Value = 0;
&REC_TRANSACTION.PROCESS_INSTANCE.Value = &PAR_PROCESS_INSTANCE;
&REC_TRANSACTION.PROCESS_FLAG.Value = "N";
&REC_TRANSACTION.SHIP_ID.Value = " ";
&REC_TRANSACTION.CONSIGNED_FLAG.Value = "N";
&REC_TRANSACTION.TO_CONSIGNED_FLG.Value = " ";
&REC_TRANSACTION.TO_NON_OWN_FLG.Value = " ";
&REC_TRANSACTION.EXPORT.Value = "N";
&REC_TRANSACTION.REPLACEMENT_FLG.Value = "NA";
&REC_TRANSACTION.IST_RETURN_FLG_IUT.Value = "N";
&REC_TRANSACTION.IST_TXN_FLG.Value = "N";
&REC_TRANSACTION.TRANSFER_COST_DEST.Value = 0;
&REC_TRANSACTION.SF_KANBAN_ID.Value = " ";
&REC_TRANSACTION.Insert();
End-Function;

/*******************************************************************************
**********************************
Fabiano Cunha - MMC - mmcb.at2603 Faz atualizao de QTDs na tabela PHYSICAL_INV ou Cria uma nova linha caso no exista
.
********************************************************************************
*********************************/
Function ATUALIZA_PHYSICAL_INV(&PAR_BUSINESS_UNIT, &PAR_STAGED_DATE, &PAR_INV_LO
T_ID, &PAR_INV_ITEM_ID, &PAR_SERIAL_ID, &PAR_STORAGE_AREA, &PAR_STOR_LEVEL_1, &P
AR_STOR_LEVEL_2, &PAR_STOR_LEVEL_3, &PAR_STOR_LEVEL_4, &PAR_CONTAINER_ID, &PAR_U
NIT_OF_MEASURE, &PAR_QTY, &PAR_QTY_BASE, &PAR_TRANSACTION_GROUP)
/***************************************************************************
mmcb.at2603 - s.n ******************/
/* Buscar o Lote e Serie default, quando o item no for controlado por serie e
lote */
SQLExec("SELECT DFLT_SERIAL_ID, DFLT_INV_LOT_ID FROM SYSADM.PS_INSTALLATION_I
N", &DFLT_SERIAL_ID, &DFLT_INV_LOT_ID);
/*Verificar se o item controlado por lote e serie */
SQLExec("SELECT A.LOT_CONTROL, A.SERIAL_CONTROL FROM SYSADM.PS_MASTER_ITEM_TB
L A, SYSADM.PS_SET_CNTRL_REC B WHERE A.SETID = B.SETID AND A.INV_ITEM_ID = :1 A
ND B.RECNAME = 'MASTER_ITEM_TBL' AND B.REC_GROUP_ID = 'FS_18' AND B.SETCNTRLVALU
E = :2", &PAR_INV_ITEM_ID, &PAR_BUSINESS_UNIT, &FLG_INV_LOT_ID, &FLG_SERIAL_ID);
If &FLG_INV_LOT_ID = "N" Then
If None(&PAR_INV_LOT_ID) Then
&PAR_INV_LOT_ID = &DFLT_INV_LOT_ID
End-If;
End-If;
If &FLG_INV_LOT_ID = "Y" Then
SQLExec("SELECT 'X',SYSDATe FROM PS_LOT_CONTROL_INV WHERE BUSINESS_UNIT =
:1 AND INV_ITEM_ID = :2 AND INV_LOT_ID = :3", &PAR_BUSINESS_UNIT, &PAR_INV_ITEM_
ID, &PAR_INV_LOT_ID, &EXISTE_LOT, &HOJE);
If None(&EXISTE_LOT) Then
&HOJE = %Date;
&HOJE99 = &HOJE;
&HOJE99 = AddToDate(&HOJE, 99, 0, 0);
SQLExec("INSERT INTO PS_LOT_CONTROL_INV( BUSINESS_UNIT, INV_ITEM_ID, IN
V_LOT_ID, DESCR, LOT_BIRTHDATE, EXPIRATION_DATE, AVAIL_STATUS, AVAIL_STATUS_TYPE
, REASON_CD, WARNING_MSG, PURCH_LOT_ID, INV_PROD_GRADE, QTY_ONHAND, QTY_AVAILABL
E, QTY_ALLOCATED, CONFIG_CODE, CONFIG_LOT_ASSIGN, DT_TIMESTAMP, OPRID, DESCR254_
MIXED )VALUES ( :1, :2, :3, :4, TO_DATE( :5, 'YYYY-MM-DD' ), TO_DATE( :6, 'YYYYMM-DD' ), :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17, TO_DATE( SUBSTR( S
YSDATE, 0, 19 ), 'YYYY-MM-DD-HH24.MI.SS' ), :18, :19 )", &PAR_BUSINESS_UNIT, &PA
R_INV_ITEM_ID, &PAR_INV_LOT_ID, "CADASTRO AUTOMTICO", &HOJE, &HOJE99, "1", " ", "
", " ", " ", " ", &PAR_QTY, &PAR_QTY, 0, &PAR_INV_LOT_ID, "N", %OperatorId, " "
);
Else
SQLExec("UPDATE PS_LOT_CONTROL_INV SET QTY_ONHAND=QTY_ONHAND +:1 , QTY_
AVAILABLE = QTY_AVAILABLE +:2 WHERE BUSINESS_UNIT = :3 AND INV_ITEM_ID = :4 AND
INV_LOT_ID = :5", &PAR_QTY, &PAR_QTY, &PAR_BUSINESS_UNIT, &PAR_INV_ITEM_ID, &PAR
_INV_LOT_ID);
End-If;
End-If;

If &FLG_SERIAL_ID = "N" Then


If None(&PAR_SERIAL_ID) Then
&PAR_SERIAL_ID = &DFLT_SERIAL_ID
End-If;
End-If;
/***************************************************************************
mmcb.at2603 - e.n ******************/
SQLExec("select 'Y' from sysadm.ps_physical_inv where business_unit=:1 and s
taged_date= %datein(:2) and inv_lot_id=:3 and inv_item_id=:4 and serial_id=:5 an
d storage_area=:6 and stor_level_1=:7 and stor_level_2=:8 and stor_level_3=:9 an
d stor_level_4=:10 and container_id=:11 and unit_of_measure=:12", &PAR_BUSINESS_
UNIT, &PAR_STAGED_DATE, &PAR_INV_LOT_ID, &PAR_INV_ITEM_ID, &PAR_SERIAL_ID, &PAR_
STORAGE_AREA, &PAR_STOR_LEVEL_1, &PAR_STOR_LEVEL_2, &PAR_STOR_LEVEL_3, &PAR_STOR
_LEVEL_4, &PAR_CONTAINER_ID, &PAR_UNIT_OF_MEASURE, &EXISTE);
If &EXISTE = "Y" Then
&REC_PHYSICAL_INV = CreateRecord(Record.PHYSICAL_INV);
&REC_PHYSICAL_INV.BUSINESS_UNIT.VALUE = &PAR_BUSINESS_UNIT;
&REC_PHYSICAL_INV.STAGED_DATE.VALUE = &PAR_STAGED_DATE;
&REC_PHYSICAL_INV.INV_LOT_ID.VALUE = &PAR_INV_LOT_ID;
&REC_PHYSICAL_INV.INV_ITEM_ID.VALUE = &PAR_INV_ITEM_ID;
&REC_PHYSICAL_INV.SERIAL_ID.VALUE = &PAR_SERIAL_ID;
&REC_PHYSICAL_INV.STORAGE_AREA.VALUE = &PAR_STORAGE_AREA;
&REC_PHYSICAL_INV.STOR_LEVEL_1.VALUE = &PAR_STOR_LEVEL_1;
&REC_PHYSICAL_INV.STOR_LEVEL_2.VALUE = &PAR_STOR_LEVEL_2;
&REC_PHYSICAL_INV.STOR_LEVEL_3.VALUE = &PAR_STOR_LEVEL_3;
&REC_PHYSICAL_INV.STOR_LEVEL_4.VALUE = &PAR_STOR_LEVEL_4;
&REC_PHYSICAL_INV.CONTAINER_ID.VALUE = &PAR_CONTAINER_ID;
&REC_PHYSICAL_INV.UNIT_OF_MEASURE.VALUE = &PAR_UNIT_OF_MEASURE;
&REC_PHYSICAL_INV.SelectByKey();
&REC_PHYSICAL_INV.QTY.VALUE = &REC_PHYSICAL_INV.QTY.VALUE + &PAR_QTY;
&REC_PHYSICAL_INV.QTY_BASE.VALUE = &REC_PHYSICAL_INV.QTY_BASE.VALUE + &PAR
_QTY_BASE;
&REC_PHYSICAL_INV.DT_TIMESTAMP.VALUE = %Datetime;
&REC_PHYSICAL_INV.UPDATE();
Else
&PAR_LAST_TRANSACT_TYPE = &PAR_TRANSACTION_GROUP;
&PAR_LAST_ISSUE_DATE = %Date;
&PAR_QTY_RESERVED = 0;
&PAR_QTY_RESERVED_BASE = 0;
&PAR_AVAIL_STATUS = "1";
&PAR_DT_TIMESTAMP = %Datetime;
GRAVA_PHYSICAL_INV(&PAR_BUSINESS_UNIT, &PAR_STAGED_DATE, &PAR_INV_LOT_ID,
&PAR_INV_ITEM_ID, &PAR_SERIAL_ID, &PAR_STORAGE_AREA, &PAR_STOR_LEVEL_1, &PAR_STO
R_LEVEL_2, &PAR_STOR_LEVEL_3, &PAR_STOR_LEVEL_4, &PAR_CONTAINER_ID, &PAR_UNIT_OF
_MEASURE, &PAR_LAST_TRANSACT_TYPE, &PAR_LAST_ISSUE_DATE, &PAR_QTY, &PAR_QTY_RESE
RVED, &PAR_QTY_BASE, &PAR_QTY_RESERVED_BASE, &PAR_AVAIL_STATUS, &PAR_DT_TIMESTAM
P)
End-If;
End-Function;

/*******************************************************************************
*******************
Cria uma Entrada de Estoque (Transao 020)
********************************************************************************
*******************/
Function ENTRADA_ESTOQUE(&P_BUSINESS_UNIT, &P_STAGED_DATE, &P_INV_LOT_ID, &P_INV
_ITEM_ID, &P_SERIAL_ID, &P_STORAGE_AREA, &P_STOR_LEVEL_1, &P_STOR_LEVEL_2, &P_ST
OR_LEVEL_3, &P_STOR_LEVEL_4, &P_CONTAINER_ID, &P_UNIT_OF_MEASURE, &P_QTY, &P_DEP
TO, &P_DISTRIB_TYPE, &P_DT_TIMESTAMP, &P_BUSINESS_UNIT_RECV, &P_RECEIVER_ID, &P_
RECV_LN_NBR, &P_RECV_SHIP_SEQ_NBR, &P_SOURCE_BUS_UNIT, &P_ORDER_NO, &P_ORDER_INT
_LINE_NO, &P_CUSTO, &P_CONFIG_CODE, &P_PARAMETRO_OPCIONAL)
/************************************ mmcb.hd226465.sn **********************
**************/
/*Verifica se o item esta cadastrado na UN de estoque*/
SQLExec("SELECT 'Y' AS EXISTE_BU FROM SYSADM.PS_BU_ITEMS_INV WHERE BUSINESS_U
NIT = :1 AND INV_ITEM_ID = :2 AND ITM_STATUS_CURRENT = '1' AND ITM_STATUS_EFFDT
<= TRUNC(SYSDATE)", &P_BUSINESS_UNIT, &P_INV_ITEM_ID, &EXISTE_BU);
If None(&EXISTE_BU) Then
Error ("O item " | &P_INV_ITEM_ID | " no esta cadastrado na UN de estoque "
| &P_BUSINESS_UNIT | "! Favor verificar a tela Home > Manter Itens > Definir It
ens > Usar > Definio do Item da UN.");
End-If;
/************************************ mmcb.hd226465.en **********************
**************/
If None(&P_BUSINESS_UNIT_RECV) Or
&P_BUSINESS_UNIT_RECV = "" Or
&P_BUSINESS_UNIT_RECV = " " Then
Error ("Erro Funo: ENTRADA_ESTOQUE Parametro &P_BUSINESS_UNIT_RECV UN: " | &
P_BUSINESS_UNIT | " Item: " | &P_INV_ITEM_ID);
End-If;
If None(&P_RECEIVER_ID) Or
&P_RECEIVER_ID = "" Or
&P_RECEIVER_ID = " " Then
Error ("Erro Funo: ENTRADA_ESTOQUE Parametro &P_RECEIVER_ID UN: " | &P_BUSIN
ESS_UNIT | " Item: " | &P_INV_ITEM_ID);
End-If;
/* If None(&P_RECV_LN_NBR) Or
&P_RECV_LN_NBR <= 0 Then
Error ("Erro Funo: ENTRADA_ESTOQUE Parametro &P_RECV_LN_NBR UN: " | &P_BUSIN
ESS_UNIT | " Item: " | &P_INV_ITEM_ID);
End-If;
If None(&P_RECV_SHIP_SEQ_NBR) Or
&P_RECV_SHIP_SEQ_NBR <= 0 Then
Error ("Erro Funo: ENTRADA_ESTOQUE Parametro &P_RECV_SHIP_SEQ_NBR UN: " | &P
_BUSINESS_UNIT | " Item: " | &P_INV_ITEM_ID);
End-If;*/
If None(&P_DISTRIB_TYPE) Or
&P_DISTRIB_TYPE = "" Or
&P_DISTRIB_TYPE = " " Then
Error ("Erro Funo: ENTRADA_ESTOQUE Parametro &P_DISTRIB_TYPE UN: " | &P_BUSI
NESS_UNIT | " Item: " | &P_INV_ITEM_ID);

End-If;
If None(&P_PARAMETRO_OPCIONAL) Or
&P_PARAMETRO_OPCIONAL = "" Or
&P_PARAMETRO_OPCIONAL = " " Then
Error ("Erro Funo: ENTRADA_ESTOQUE Parametro &P_PARAMETRO_OPCIONAL: " | &P_P
ARAMETRO_OPCIONAL | " retornada em branco.");
End-If;
&PAR_BUSINESS_UNIT = &P_BUSINESS_UNIT;
&PAR_STAGED_DATE = &P_STAGED_DATE;
&PAR_INV_LOT_ID = &P_INV_LOT_ID;
&PAR_INV_ITEM_ID = &P_INV_ITEM_ID;
&PAR_SERIAL_ID = &P_SERIAL_ID;
&PAR_STORAGE_AREA = &P_STORAGE_AREA;
&PAR_STOR_LEVEL_1 = &P_STOR_LEVEL_1;
&PAR_STOR_LEVEL_2 = &P_STOR_LEVEL_2;
&PAR_STOR_LEVEL_3 = &P_STOR_LEVEL_3;
&PAR_STOR_LEVEL_4 = &P_STOR_LEVEL_4;
&PAR_CONTAINER_ID = &P_CONTAINER_ID;
&PAR_UNIT_OF_MEASURE = &P_UNIT_OF_MEASURE;
&PAR_QTY = &P_QTY;
&PAR_QTY_BASE = &P_QTY;
&PAR_DT_TIMESTAMP = &P_DT_TIMESTAMP;
&PAR_SEQ_NBR = max_seqnbr_transaction(&P_BUSINESS_UNIT, &PAR_INV_ITEM_ID, &PA
R_DT_TIMESTAMP);;
&PAR_SOURCE_BUS_UNIT = &P_SOURCE_BUS_UNIT;
&PAR_ORDER_NO = &P_ORDER_NO;
&PAR_ORDER_INT_LINE_NO = &P_ORDER_INT_LINE_NO;
&PAR_SCHED_LINE_NO = 0;
&PAR_DEMAND_LINE_NO = 0;
&PAR_RECEIVER_ID = &P_RECEIVER_ID;
&PAR_RECV_LN_NBR = &P_RECV_LN_NBR;
&PAR_TRANSACTION_GROUP = "020";
&PAR_TRANSACTION_DATE = %Date;
&PAR_QTY_BASE = &P_QTY;
&PAR_QTY = &P_QTY;
&PAR_UNIT_MEASURE_STD = &PAR_UNIT_OF_MEASURE;
&PAR_UNIT_OF_MEASURE = &PAR_UNIT_OF_MEASURE;
&PAR_OPRID = %UserId;
&PAR_DEPTID = &P_DEPTO;
&PAR_PO_ID = " ";
&PAR_DISTRIB_LINE_NUM = 0;
&PAR_DISTRIB_SEQ_NUM = 0;
&PAR_RECV_SHIP_SEQ_NBR = &P_RECV_SHIP_SEQ_NBR;
&PAR_PRICE_PO = 0;
&PAR_ANALYSIS_TYPE = "ACT";
&PAR_VENDOR_ID = " ";
&PAR_STAGED_TYPE = "1";
&PAR_DISTRIB_TYPE = &P_DISTRIB_TYPE;
&PAR_BUSINESS_UNIT_PO = " ";
&PAR_TRANSACTION_SOURCE = "IN";
&PAR_CONVERSION_RATE = 0;
&PAR_PROCESS_INSTANCE = 0;
&PAR_PROCESS_FLAG = "N";
&PAR_SHIP_ID = " ";
GRAVA_TRANSACTION(&PAR_BUSINESS_UNIT, &PAR_INV_ITEM_ID, &PAR_DT_TIMESTAMP, &P
AR_SEQ_NBR, &PAR_SOURCE_BUS_UNIT, &PAR_ORDER_NO, &PAR_ORDER_INT_LINE_NO, &PAR_SC

HED_LINE_NO, &PAR_DEMAND_LINE_NO, &PAR_STAGED_DATE, &PAR_INV_LOT_ID, &PAR_SERIAL


_ID, &PAR_STORAGE_AREA, &PAR_STOR_LEVEL_1, &PAR_STOR_LEVEL_2, &PAR_STOR_LEVEL_3,
&PAR_STOR_LEVEL_4, &PAR_RECEIVER_ID, &PAR_RECV_LN_NBR, &PAR_TRANSACTION_GROUP,
&PAR_TRANSACTION_DATE, &PAR_QTY_BASE, &PAR_QTY, &PAR_UNIT_MEASURE_STD, &PAR_UNIT
_OF_MEASURE, &PAR_OPRID, &PAR_ACCOUNT, &PAR_DEPTID, &PAR_PO_ID, &PAR_DISTRIB_LIN
E_NUM, &PAR_DISTRIB_SEQ_NUM, &PAR_RECV_SHIP_SEQ_NBR, &PAR_PRICE_PO, &PAR_ANALYSI
S_TYPE, &PAR_VENDOR_ID, &PAR_STAGED_TYPE, &PAR_DISTRIB_TYPE, &PAR_BUSINESS_UNIT_
PO, &PAR_TRANSACTION_SOURCE, &PAR_CONVERSION_RATE, &PAR_PROCESS_INSTANCE, &PAR_P
ROCESS_FLAG, &PAR_SHIP_ID);
SQLExec("select qty_available, cost_element, source_code from sysadm.ps_bu_it
ems_inv where business_unit=:1 and inv_item_id=:2", &P_BUSINESS_UNIT, &P_INV_ITE
M_ID, &BU_QTY_AVAILABLE, &BU_COST_ELEMENT, &BU_SOURCE_CODE);
If &BU_SOURCE_CODE = "2" Then
GERA_CUSTO_MEDIO_ITEM(&PAR_BUSINESS_UNIT, &PAR_INV_ITEM_ID, &PAR_QTY, &PAR
_DT_TIMESTAMP, &PAR_SEQ_NBR, &P_BUSINESS_UNIT_RECV, &PAR_RECEIVER_ID, &PAR_RECV_
LN_NBR, &PAR_RECV_SHIP_SEQ_NBR, &P_CUSTO, &P_CONFIG_CODE, &PAR_TRANSACTION_DATE,
&P_PARAMETRO_OPCIONAL);
End-If;
ATUALIZA_PHYSICAL_INV_020(&PAR_BUSINESS_UNIT, &PAR_STAGED_DATE, &PAR_INV_LOT_
ID, &PAR_INV_ITEM_ID, &PAR_SERIAL_ID, &PAR_STORAGE_AREA, &PAR_STOR_LEVEL_1, &PAR
_STOR_LEVEL_2, &PAR_STOR_LEVEL_3, &PAR_STOR_LEVEL_4, &PAR_CONTAINER_ID, &PAR_UNI
T_OF_MEASURE, &PAR_QTY, &PAR_QTY);
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

=
=
=
=
=
=
=
=
=

"";
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

|
|
|
|
|
|
|
|

" SELECT NETTABLE_FLG ";


" FROM SYSADM.PS_STOR_LOC_INV ";
" WHERE BUSINESS_UNIT = :1 ";
" AND STORAGE_AREA = :2 ";
" AND STOR_LEVEL_1 = :3 ";
" AND STOR_LEVEL_2 = :4 ";
" AND STOR_LEVEL_3 = :5 ";
" AND STOR_LEVEL_4 = :6 ";

SQLExec(&SQL, &PAR_BUSINESS_UNIT, &PAR_STORAGE_AREA, &PAR_STOR_LEVEL_1, &PAR_


STOR_LEVEL_2, &PAR_STOR_LEVEL_3, &PAR_STOR_LEVEL_4, &FLAG_AREA_ACEITA_RESERVA);
ATUALIZA_BU_ITEMS_INV(&PAR_BUSINESS_UNIT, &PAR_INV_ITEM_ID, &PAR_QTY, "020",
" ", &FLAG_AREA_ACEITA_RESERVA);
End-Function;
/*******************************************************************************
******************************
FAZ Reduo do Estoque.
********************************************************************************
*****************************/
Function REDUCAO_ESTOQUE(&P_BUSINESS_UNIT, &P_SHIP_ID)
SQLExec("SELECT DISTINCT SHIP_ID, shipped_flag, cancel_flag, pssh_complete,
pssh_run_status, deplete_inv_flg FROM SYSADM.PS_SHIP_INF_INV WHERE BUSINESS_UNIT
=:1 AND SHIP_ID=:2 AND SHIPPED_FLAG='Y' AND CANCEL_FLAG = 'N' AND PSSH_COMPLETE
= 'N' AND PSSH_RUN_STATUS = '1'", &P_BUSINESS_UNIT, &P_SHIP_ID, &SHIPID_VALIDO,
&a, &b, &c, &d, &e);
If None(&SHIPID_VALIDO) Then
Error ("O SHIPID: " | &P_BUSINESS_UNIT | " - " | &P_SHIP_ID | " no est pende

nte na lista de Reduo");


End-If;
SQLExec("update ps_ship_inf_inv set pssh_run_status = '2', pssh_complete = 'N
' where business_unit =:1 and ship_id =:2 and shipped_flag='Y' and cancel_flag =
'N' and pssh_complete = 'N' and pssh_run_status = '1' and deplete_inv_flg = 'Y'
", &P_BUSINESS_UNIT, &P_SHIP_ID);
&SQL = "select a.demand_source, a.source_bus_unit, a.order_no, a.order_int_li
ne_no, a.sched_line_no, a.inv_item_id, a.demand_line_no, a.destin_bu, a.interuni
t_flg, b.non_own_flag, c.nettable_flg, b.avail_status, a.unit_measure_ship, a.pr
ice_po, sum(b.last_qty_ship_base), c.inspect_flg,b.storage_area,b.stor_level_1,b
.stor_level_2,b.stor_level_3,b.stor_level_4,b.inv_lot_id, b.serial_id,a.deptid,a
.distrib_type from sysadm.ps_ship_inf_inv a, sysadm.ps_demand_phys_inv b, sysadm
.ps_stor_loc_inv c where a.business_unit =:1 and a.ship_id=:2 and a.pssh_run_sta
tus = '2' and a.pssh_complete = 'N' and b.business_unit = a.business_unit and b.
demand_source = a.demand_source and b.source_bus_unit = a.source_bus_unit and b.
order_no = a.order_no and b.order_int_line_no = a.order_int_line_no and b.sched_
line_no = a.sched_line_no and b.demand_line_no = a.demand_line_no and b.inv_item
_id = a.inv_item_id and c.business_unit = b.business_unit and c.storage_area = b
.storage_area and c.stor_level_1 = ";
&SQL = &SQL | " b.stor_level_1 and c.stor_level_2 = b.stor_level_2 and c.stor
_level_3 = b.stor_level_3 and c.stor_level_4 = b.stor_level_4 group by a.busines
s_unit, a.demand_source, a.source_bus_unit, a.order_no, a.order_int_line_no, a.s
ched_line_no, a.inv_item_id, a.demand_line_no, a.destin_bu, a.interunit_flg, b.n
on_own_flag, c.nettable_flg, b.avail_status, a.unit_measure_ship, a.price_po, c.
inspect_flg,b.storage_area,b.stor_level_1,b.stor_level_2,b.stor_level_3,b.stor_l
evel_4, b.inv_lot_id, b.serial_id,a.deptid,a.distrib_type order by a.order_no, a
.order_int_line_no, a.sched_line_no, a.demand_line_no ";
&cmdSQL = CreateSQL(&SQL, &P_BUSINESS_UNIT, &P_SHIP_ID);
While &cmdSQL.Fetch(&v_demand_source, &V_SOURCE_BUS_UNIT, &v_order_no, &v_ord
er_int_line_no, &v_sched_line_no, &V_INV_ITEM_ID, &v_demand_line_no, &v_destin_b
u, &v_interunit_flg, &V_NON_OWN_FLAG, &v_nettable_flg, &v_avail_status, &v_unit_
measure_ship, &v_price_po, &v_qty_ship_base, &v_inspect_flg, &V_STORAGE_AREA, &V
_STOR_LEVEL_1, &V_STOR_LEVEL_2, &V_STOR_LEVEL_3, &V_STOR_LEVEL_4, &V_INV_LOT_ID,
&V_SERIAL_ID, &V_DEPTID, &V_DISTRIB_TYPE)
/************************************ mmcb.hd226465.sn *******************
*****************/
/*Verifica se o item esta cadastrado na UN de estoque*/
SQLExec("SELECT 'Y' AS EXISTE_BU FROM SYSADM.PS_BU_ITEMS_INV WHERE BUSINES
S_UNIT = :1 AND INV_ITEM_ID = :2 AND ITM_STATUS_CURRENT = '1' AND ITM_STATUS_EFF
DT <= TRUNC(SYSDATE)", &P_BUSINESS_UNIT, &V_INV_ITEM_ID, &EXISTE_BU);
If None(&EXISTE_BU) Then
Error ("O item " | &V_INV_ITEM_ID | " no esta cadastrado na UN de estoqu
e " | &P_BUSINESS_UNIT | "! Favor verificar a tela Home > Manter Itens > Definir
Itens > Usar > Definio do Item da UN.");
End-If;
/************************************ mmcb.hd226465.en *******************
*****************/
&PAR_BUSINESS_UNIT = &P_BUSINESS_UNIT;
&PAR_INV_ITEM_ID = &V_INV_ITEM_ID;
&PAR_DT_TIMESTAMP = %Datetime;
&PAR_SEQ_NBR = max_seqnbr_transaction(&P_BUSINESS_UNIT, &PAR_INV_ITEM_ID,
&PAR_DT_TIMESTAMP);

&PAR_SOURCE_BUS_UNIT = &V_SOURCE_BUS_UNIT;
&PAR_ORDER_NO = &v_order_no;
&PAR_ORDER_INT_LINE_NO = &v_order_int_line_no;
&PAR_SCHED_LINE_NO = &v_sched_line_no;
&PAR_DEMAND_LINE_NO = &v_demand_line_no;
&PAR_STAGED_DATE = Date3(1900, 1, 1);
&PAR_INV_LOT_ID = &V_INV_LOT_ID;
&PAR_SERIAL_ID = &V_SERIAL_ID;
&PAR_STORAGE_AREA = &V_STORAGE_AREA;
&PAR_STOR_LEVEL_1 = &V_STOR_LEVEL_1;
&PAR_STOR_LEVEL_2 = &V_STOR_LEVEL_2;
&PAR_STOR_LEVEL_3 = &V_STOR_LEVEL_3;
&PAR_STOR_LEVEL_4 = &V_STOR_LEVEL_4;
&PAR_RECEIVER_ID = " ";
&PAR_RECV_LN_NBR = 0;
&PAR_TRANSACTION_GROUP = "030";
&PAR_TRANSACTION_DATE = %Date;
&PAR_QTY_BASE = &v_qty_ship_base;
&PAR_QTY = &v_qty_ship_base;
&PAR_UNIT_MEASURE_STD = &v_unit_measure_ship;
&PAR_UNIT_OF_MEASURE = &v_unit_measure_ship;
&PAR_OPRID = %UserId;
&PAR_ACCOUNT = " ";
&PAR_DEPTID = &V_DEPTID;
&PAR_PO_ID = " ";
&PAR_DISTRIB_LINE_NUM = 0;
&PAR_DISTRIB_SEQ_NUM = 0;
&PAR_RECV_SHIP_SEQ_NBR = 0;
&PAR_PRICE_PO = 0;
&PAR_ANALYSIS_TYPE = "ACT";
&PAR_VENDOR_ID = " ";
&PAR_STAGED_TYPE = " ";
&PAR_DISTRIB_TYPE = &V_DISTRIB_TYPE;
&PAR_BUSINESS_UNIT_PO = " ";
&PAR_TRANSACTION_SOURCE = "IN";
&PAR_CONVERSION_RATE = 0;
&PAR_PROCESS_INSTANCE = 0;
&PAR_PROCESS_FLAG = "N";
&PAR_SHIP_ID = &P_SHIP_ID;
GRAVA_TRANSACTION(&PAR_BUSINESS_UNIT, &PAR_INV_ITEM_ID, &PAR_DT_TIMESTAMP,
&PAR_SEQ_NBR, &PAR_SOURCE_BUS_UNIT, &PAR_ORDER_NO, &PAR_ORDER_INT_LINE_NO, &PAR
_SCHED_LINE_NO, &PAR_DEMAND_LINE_NO, &PAR_STAGED_DATE, &PAR_INV_LOT_ID, &PAR_SER
IAL_ID, &PAR_STORAGE_AREA, &PAR_STOR_LEVEL_1, &PAR_STOR_LEVEL_2, &PAR_STOR_LEVEL
_3, &PAR_STOR_LEVEL_4, &PAR_RECEIVER_ID, &PAR_RECV_LN_NBR, &PAR_TRANSACTION_GROU
P, &PAR_TRANSACTION_DATE, &PAR_QTY_BASE, &PAR_QTY, &PAR_UNIT_MEASURE_STD, &PAR_U
NIT_OF_MEASURE, &PAR_OPRID, &PAR_ACCOUNT, &PAR_DEPTID, &PAR_PO_ID, &PAR_DISTRIB_
LINE_NUM, &PAR_DISTRIB_SEQ_NUM, &PAR_RECV_SHIP_SEQ_NBR, &PAR_PRICE_PO, &PAR_ANAL
YSIS_TYPE, &PAR_VENDOR_ID, &PAR_STAGED_TYPE, &PAR_DISTRIB_TYPE, &PAR_BUSINESS_UN
IT_PO, &PAR_TRANSACTION_SOURCE, &PAR_CONVERSION_RATE, &PAR_PROCESS_INSTANCE, &PA
R_PROCESS_FLAG, &PAR_SHIP_ID);
ATUALIZA_BU_ITEMS_INV(&P_BUSINESS_UNIT, &V_INV_ITEM_ID, &v_qty_ship_base,
"030", &v_order_no, "Y");
End-While;
&cmdSQL.Close();
SQLExec("update ps_ship_inf_inv set pssh_run_status = '3' , pssh_complete = '
Y' , depleted_date =sysdate where business_unit=:1 and ship_id=:2", &P_BUSINESS

_UNIT, &P_SHIP_ID);
End-Function;
/*******************************************************************************
******
* Faz as rotinas do processo de Armazenagem estoque
*
* PROCESSO: Home > Controlar Estoque > Armazenar Estoque > Processar >
*
* Carreg Itens Armazenados
*
********************************************************************************
*****/
Function CARREGAR_ITENS_ARMAZENADOS(&P_BUSINESS_UNIT, &P_RECEIVER_ID)
SQLExec("select count(*) from ps_staged_inf_inv where business_unit =:1 and r
eceiver_id =:2 and (process_flag = 'N' or (process_flag = 'Y' and receiver_id li
ke 'RT%')) ", &P_BUSINESS_UNIT, &P_RECEIVER_ID, &CONTADOR);
If &CONTADOR = 0 Then
Error ("Recebimento: " | &P_RECEIVER_ID | " no est na lista de Armazenagens"
);
End-If;
SQLExec("update sysadm.ps_bus_unit_tbl_in set staging_id = staging_id + 1 whe
re business_unit = :1 ", &P_BUSINESS_UNIT);
SQLExec("select staging_id from ps_bus_unit_tbl_in where business_unit = :1 "
, &P_BUSINESS_UNIT, &LAST_STAGING_ID);
&SQL1 = "select business_unit , inv_lot_id , container_id , inv_item_id , ser
ial_id , receiver_id , recv_ln_nbr , source_bus_unit , recv_ship_seq_nbr , distr
ib_line_num , distrib_seq_num , rma_id , rma_line_nbr , %DateOut(lot_birthdate)
, %dateOut(expiration_date) , ma_prdn_id_flg , production_id , prdn_area_code ,
production_type , to_production_id , op_sequence , qty_code , inv_stock_type , q
ty , unit_of_measure , conversion_rate , transfer_cost , process_flag , process_
instance , job_instance , ";
&SQL2 = "storage_area , stor_level_1 , stor_level_2 , stor_level_3 , stor_lev
el_4 , receipt_type , po_id , interunit_id , interunit_line , sf_kanban_id , ins
pect_status , inspection_id , %DateOut(last_purch_date) , non_own_flag , purch_l
ot_id , vendor_id , storage_code ,oprid , distrib_type , %DateOut(po_dt) , busin
ess_unit_po , trans_source , config_code , container_type , speedtype_key , acc
ount , altacct , operating_unit , deptid , product , project_id , activity_id ,
resource_type , resource_category , resource_sub_cat , analysis_type , business_
unit_pc , combo_valid_flg , consigned_flag, actual_cost from sysadm.ps_staged_i
nf_inv where business_unit =:1 and receiver_id =:2 and (process_flag = 'N' or (
process_flag = 'Y' and receiver_id like 'RT%')) ";
&SQL = &SQL1 | &SQL2;
&cmdSQL = CreateSQL(&SQL, &P_BUSINESS_UNIT, &P_RECEIVER_ID);
While &cmdSQL.fetch(&V_BUSINESS_UNIT, &V_INV_LOT_ID, &V_CONTAINER_ID, &V_INV_
ITEM_ID, &V_SERIAL_ID, &V_RECEIVER_ID, &V_RECV_LN_NBR, &V_SOURCE_BUS_UNIT, &V_RE
CV_SHIP_SEQ_NBR, &V_DISTRIB_LINE_NUM, &V_DISTRIB_SEQ_NUM, &V_RMA_ID, &V_RMA_LINE
_NBR, &V_LOT_BIRTHDATE, &V_EXPIRATION_DATE, &V_MA_PRDN_ID_FLG, &V_PRODUCTION_ID,
&V_PRDN_AREA_CODE, &V_PRODUCTION_TYPE, &V_TO_PRODUCTION_ID, &V_OP_SEQUENCE, &V_
QTY_CODE, &V_INV_STOCK_TYPE, &V_QTY, &V_UNIT_OF_MEASURE, &V_CONVERSION_RATE, &V_
TRANSFER_COST, &V_PROCESS_FLAG, &V_PROCESS_INSTANCE, &V_JOB_INSTANCE, &V_STORAGE

_AREA, &V_STOR_LEVEL_1, &V_STOR_LEVEL_2, &V_STOR_LEVEL_3, &V_STOR_LEVEL_4, &V_RE


CEIPT_TYPE, &V_PO_ID, &V_INTERUNIT_ID, &V_INTERUNIT_LINE, &V_SF_KANBAN_ID, &V_IN
SPECT_STATUS, &V_INSPECTION_ID, &V_LAST_PURCH_DATE, &V_NON_OWN_FLAG, &V_PURCH_LO
T_ID, &V_VENDOR_ID, &V_STORAGE_CODE, &V_OPRID, &V_DISTRIB_TYPE, &V_PO_DT, &V_BUS
INESS_UNIT_PO, &V_TRANS_SOURCE, &V_CONFIG_CODE, &V_CONTAINER_TYPE, &V_SPEEDTYPE_
KEY, &V_ACCOUNT, &V_ALTACCT, &V_OPERATING_UNIT, &V_DEPTID, &V_PRODUCT, &V_PROJEC
T_ID, &V_ACTIVITY_ID, &V_RESOURCE_TYPE, &V_RESOURCE_CATEGORY, &V_RESOURCE_SUB_CA
T, &V_ANALYSIS_TYPE, &V_BUSINESS_UNIT_PC, &V_COMBO_VALID_FLG, &V_CONSIGNED_FLAG,
&V_ACTUAL_COST);
&S_BUSINESS_UNIT = &V_BUSINESS_UNIT;
&S_STAGING_ID = &LAST_STAGING_ID;
&S_INV_LOT_ID = &V_INV_LOT_ID;
&S_CONTAINER_ID = &V_CONTAINER_ID;
&S_INV_ITEM_ID = &V_INV_ITEM_ID;
&S_SERIAL_ID = &V_SERIAL_ID;
&S_RECEIVER_ID = &V_RECEIVER_ID;
&S_RECV_LN_NBR = &V_RECV_LN_NBR;
&S_STAGED_NUM = 1;
&S_SOURCE_BUS_UNIT = &V_SOURCE_BUS_UNIT;
&S_RECV_SHIP_SEQ_NBR = &V_RECV_SHIP_SEQ_NBR;
&S_DISTRIB_LINE_NUM = &V_DISTRIB_LINE_NUM;
&S_DISTRIB_SEQ_NUM = &V_DISTRIB_SEQ_NUM;
&S_RMA_ID = &V_RMA_ID;
&S_RMA_LINE_NBR = &V_RMA_LINE_NBR;
&S_PTWY_PLAN_ID = 0;
&S_PTWYPLAN_LN_NBR = 0;
&S_STAGED_DATE = %Date;
&S_LOT_BIRTHDATE = &V_LOT_BIRTHDATE;
&S_EXPIRATION_DATE = &V_EXPIRATION_DATE;
&S_MA_PRDN_ID_FLG = &V_MA_PRDN_ID_FLG;
&S_PRODUCTION_ID = &V_PRODUCTION_ID;
&S_PRDN_AREA_CODE = &V_PRDN_AREA_CODE;
&S_PRODUCTION_TYPE = &V_PRODUCTION_TYPE;
&S_TO_PRODUCTION_ID = &V_TO_PRODUCTION_ID;
&S_OP_SEQUENCE = &V_OP_SEQUENCE;
&S_QTY_CODE = &V_QTY_CODE;
&S_INV_STOCK_TYPE = &V_INV_STOCK_TYPE;
&S_QTY = &V_QTY;
&S_UNIT_OF_MEASURE = &V_UNIT_OF_MEASURE;
&S_QTY_BASE = &V_QTY;
&S_QTY_CONV_FLAG = "1";
&S_PUTAWAY_STATUS = "1";
&S_CONVERSION_RATE = &V_CONVERSION_RATE;
&S_TRANSFER_COST = &V_TRANSFER_COST;
&S_PROCESS_FLAG = "N";
&S_PROCESS_INSTANCE = 0;
&S_JOB_INSTANCE = 0;
&S_PUTAWAY_COMMENT = " ";
&S_FROM_STOR_AREA = " ";
&S_FROM_STOR_LEV1 = " ";
&S_FROM_STOR_LEV2 = " ";
&S_FROM_STOR_LEV3 = " ";
&S_FROM_STOR_LEV4 = " ";
&S_FROM_UOM = " ";
&S_STORAGE_AREA = &V_STORAGE_AREA;
&S_STOR_LEVEL_1 = &V_STOR_LEVEL_1;
&S_STOR_LEVEL_2 = &V_STOR_LEVEL_2;
&S_STOR_LEVEL_3 = &V_STOR_LEVEL_3;
&S_STOR_LEVEL_4 = &V_STOR_LEVEL_4;

&S_PUTAWAY_FLAG = "Y";
&S_RECEIPT_TYPE = &V_RECEIPT_TYPE;
&S_PO_ID = &V_PO_ID;
&S_INTERUNIT_ID = &V_INTERUNIT_ID;
&S_INTERUNIT_LINE = &V_INTERUNIT_LINE;
&S_SF_KANBAN_ID = &V_SF_KANBAN_ID;
&S_INSPECT_STATUS = &V_INSPECT_STATUS;
&S_INSPECTION_ID = &V_INSPECTION_ID;
&S_LAST_PURCH_DATE = &V_LAST_PURCH_DATE;
&S_NON_OWN_FLAG = &V_NON_OWN_FLAG;
&S_PURCH_LOT_ID = &V_PURCH_LOT_ID;
&S_VENDOR_ID = &V_VENDOR_ID;
&S_STORAGE_CODE = &V_STORAGE_CODE;
&S_OPRID = %UserId;
&S_STAGED_TYPE = "1";
&S_DISTRIB_TYPE = &V_DISTRIB_TYPE;
&S_PO_DT = &V_PO_DT;
&S_BUSINESS_UNIT_PO = &V_BUSINESS_UNIT_PO;
&S_TRANS_SOURCE = &V_TRANS_SOURCE;
&S_CONFIG_CODE = &V_CONFIG_CODE;
&S_CANCEL_NETTABLE = "N";
&S_DT_TIMESTAMP = %Datetime;
&S_CONTAINER_TYPE = &V_CONTAINER_TYPE;
&S_SPEEDTYPE_KEY = &V_SPEEDTYPE_KEY;
&S_ACCOUNT = &V_ACCOUNT;
&S_ALTACCT = &V_ALTACCT;
&S_OPERATING_UNIT = &V_OPERATING_UNIT;
&S_DEPTID = &V_DEPTID;
&S_PRODUCT = &V_PRODUCT;
&S_PROJECT_ID = &V_PROJECT_ID;
&S_ACTIVITY_ID = &V_ACTIVITY_ID;
&S_RESOURCE_TYPE = &V_RESOURCE_TYPE;
&S_RESOURCE_CATEGORY = &V_RESOURCE_CATEGORY;
&S_RESOURCE_SUB_CAT = &V_RESOURCE_SUB_CAT;
&S_ANALYSIS_TYPE = &V_ANALYSIS_TYPE;
&S_BUSINESS_UNIT_PC = &V_BUSINESS_UNIT_PC;
&S_COMBO_VALID_FLG = &V_COMBO_VALID_FLG;
&S_CONSIGNED_FLAG = &V_CONSIGNED_FLAG;
GRAVA_STAGED_ITEM_INV(&S_BUSINESS_UNIT, &S_STAGING_ID, &S_INV_LOT_ID, &S_C
ONTAINER_ID, &S_INV_ITEM_ID, &S_SERIAL_ID, &S_RECEIVER_ID, &S_RECV_LN_NBR, &S_ST
AGED_NUM, &S_SOURCE_BUS_UNIT, &S_RECV_SHIP_SEQ_NBR, &S_DISTRIB_LINE_NUM, &S_DIST
RIB_SEQ_NUM, &S_RMA_ID, &S_RMA_LINE_NBR, &S_PTWY_PLAN_ID, &S_PTWYPLAN_LN_NBR, &S
_STAGED_DATE, &S_LOT_BIRTHDATE, &S_EXPIRATION_DATE, &S_MA_PRDN_ID_FLG, &S_PRODUC
TION_ID, &S_PRDN_AREA_CODE, &S_PRODUCTION_TYPE, &S_TO_PRODUCTION_ID, &S_OP_SEQUE
NCE, &S_QTY_CODE, &S_INV_STOCK_TYPE, &S_QTY, &S_UNIT_OF_MEASURE, &S_QTY_BASE, &S
_QTY_CONV_FLAG, &S_PUTAWAY_STATUS, &S_CONVERSION_RATE, &S_TRANSFER_COST, &S_PROC
ESS_FLAG, &S_PROCESS_INSTANCE, &S_JOB_INSTANCE, &S_PUTAWAY_COMMENT, &S_FROM_STOR
_AREA, &S_FROM_STOR_LEV1, &S_FROM_STOR_LEV2, &S_FROM_STOR_LEV3, &S_FROM_STOR_LEV
4, &S_FROM_UOM, &S_STORAGE_AREA, &S_STOR_LEVEL_1, &S_STOR_LEVEL_2, &S_STOR_LEVEL
_3, &S_STOR_LEVEL_4, &S_PUTAWAY_FLAG, &S_RECEIPT_TYPE, &S_PO_ID, &S_INTERUNIT_ID
, &S_INTERUNIT_LINE, &S_SF_KANBAN_ID, &S_INSPECT_STATUS, &S_INSPECTION_ID, &S_LA
ST_PURCH_DATE, &S_NON_OWN_FLAG, &S_PURCH_LOT_ID, &S_VENDOR_ID, &S_STORAGE_CODE,
&S_OPRID, &S_STAGED_TYPE, &S_DISTRIB_TYPE, &S_PO_DT, &S_BUSINESS_UNIT_PO, &S_TRA
NS_SOURCE, &S_CONFIG_CODE, &S_CANCEL_NETTABLE, &S_DT_TIMESTAMP, &S_CONTAINER_TYP
E, &S_SPEEDTYPE_KEY, &S_ACCOUNT, &S_ALTACCT, &S_OPERATING_UNIT, &S_DEPTID, &S_PR
ODUCT, &S_PROJECT_ID, &S_ACTIVITY_ID, &S_RESOURCE_TYPE, &S_RESOURCE_CATEGORY, &S
_RESOURCE_SUB_CAT, &S_ANALYSIS_TYPE, &S_BUSINESS_UNIT_PC, &S_COMBO_VALID_FLG, &S
_CONSIGNED_FLAG);

&SC_BUSINESS_UNIT = &S_BUSINESS_UNIT;
&SC_STAGING_ID = &S_STAGING_ID;
&SC_INV_LOT_ID = &S_INV_LOT_ID;
&SC_CONTAINER_ID = &S_CONTAINER_ID;
&SC_INV_ITEM_ID = &S_INV_ITEM_ID;
&SC_SERIAL_ID = &S_SERIAL_ID;
&SC_RECEIVER_ID = &S_RECEIVER_ID;
&SC_RECV_LN_NBR = &S_RECV_LN_NBR;
&SC_STAGED_NUM = &S_STAGED_NUM;
&SC_SOURCE_BUS_UNIT = &S_SOURCE_BUS_UNIT;
&SC_RECV_SHIP_SEQ_NBR = &S_RECV_SHIP_SEQ_NBR;
&SC_DISTRIB_LINE_NUM = &S_DISTRIB_LINE_NUM;
&SC_DISTRIB_SEQ_NUM = &S_DISTRIB_SEQ_NUM;
SQLExec("select cost_element from sysadm.ps_bu_items_inv where business_un
it=:1 and inv_item_id=:2", &V_BUSINESS_UNIT, &V_INV_ITEM_ID, &SC_COST_ELEMENT);
&SC_ACTUAL_COST = &V_ACTUAL_COST;
&SC_LC_COMP_FLAG = "N";
&SC_PROCESS_INSTANCE = 0;
&SC_JOB_INSTANCE = 0;
GRAVA_STAGED_COST_INV(&SC_BUSINESS_UNIT, &SC_STAGING_ID, &SC_INV_LOT_ID, &
SC_CONTAINER_ID, &SC_INV_ITEM_ID, &SC_SERIAL_ID, &SC_RECEIVER_ID, &SC_RECV_LN_NB
R, &SC_STAGED_NUM, &SC_SOURCE_BUS_UNIT, &SC_RECV_SHIP_SEQ_NBR, &SC_DISTRIB_LINE_
NUM, &SC_DISTRIB_SEQ_NUM, &SC_COST_ELEMENT, &SC_ACTUAL_COST, &SC_LC_COMP_FLAG, &
SC_PROCESS_INSTANCE, &SC_JOB_INSTANCE)
End-While;
SQLExec("update ps_staged_inf_inv set process_flag = 'Y' where business_unit
=:1 and staged_status = '02' and process_flag = 'N' and receiver_id =:2", &P_BUS
INESS_UNIT, &P_RECEIVER_ID);
End-Function;
/*******************************************************************************
******
* Faz as rotinas do processo de Armazenagem estoque
*
* PROCESSO: Home > Controlar Estoque > Armazenar Estoque > Processar >
*
* Armazenagem
*
********************************************************************************
*****/
Function ARMAZENAGEM(&PAR_BUSINESS_UNIT, &PAR_STAGING_ID)
SQLExec("select distinct staging_id from sysadm.ps_staged_item_inv where busi
ness_unit=:1 and staging_id=:2 and putaway_status = '1' and
putaway_flag = 'Y
' and process_flag = 'N'", &PAR_BUSINESS_UNIT, &PAR_STAGING_ID, &EXISTE_STAGINGI
D);
If None(&EXISTE_STAGINGID) Then
Error ("O ID de Armazenagem Temporaria: " | &PAR_STAGING_ID | " no est na li
sta de Processos.");
End-If;
&SQL1 = "select a.business_unit, a.staged_date, a.inv_lot_id, a.inv_item_id,
a.serial_id, a.storage_area, a.stor_level_1, a.stor_level_2, a.stor_level_3, a.s
tor_level_4, a.container_id, a.unit_of_measure, a.qty, a.deptid, a.distrib_type,

a.dt_timestamp, a.receiver_id, a.recv_ln_nbr, a.recv_ship_seq_nbr, a.source_bus


_unit, a.config_code, b.actual_cost from sysadm.ps_staged_item_inv a, sysadm.ps_
staged_cost_inv b where a.business_unit=:1 and a.staging_id=:2 and a.putaway_sta
tus = '1' and a.putaway_flag = 'Y' and a.process_flag = 'N' and a.business_unit
= b.business_unit and a.staging_id = b.staging_id and a.inv_lot_id = b.inv_lot_
id and ";
&SQL2 = " a.container_id = b.container_id and a.inv_item_id = b.inv_item_id a
nd a.serial_id = b.serial_id and a.receiver_id = b.receiver_id and a.recv_ln_nbr
= b.recv_ln_nbr and a.staged_num = b.staged_num and a.source_bus_unit = b.sourc
e_bus_unit and a.recv_ship_seq_nbr = b.recv_ship_seq_nbr and a.distrib_line_num
= b.distrib_line_num and a.distrib_seq_num = b.distrib_seq_num order by a.recei
ver_id, a.recv_ln_nbr";
&SQLCMD = &SQL1 | &SQL2;
&SQL = CreateSQL(&SQLCMD, &PAR_BUSINESS_UNIT, &PAR_STAGING_ID);
While &SQL.Fetch(&V_BUSINESS_UNIT, &V_STAGED_DATE, &V_INV_LOT_ID, &V_INV_ITEM
_ID, &V_SERIAL_ID, &V_STORAGE_AREA, &V_STOR_LEVEL_1, &V_STOR_LEVEL_2, &V_STOR_LE
VEL_3, &V_STOR_LEVEL_4, &V_CONTAINER_ID, &V_UNIT_OF_MEASURE, &V_QTY, &V_DEPTID,
&V_DISTRIB_TYPE, &V_DT_TIMESTAMP, &V_RECEIVER_ID, &V_RECV_LN_NBR, &V_RECV_SHIP_S
EQ_NBR, &V_SOURCE_BUS_UNIT, &V_CONFIG_CODE, &ACTUAL_COST)
&P_BUSINESS_UNIT = &V_BUSINESS_UNIT;
&P_STAGED_DATE = Date3(1900, 1, 1);
&P_INV_LOT_ID = &V_INV_LOT_ID;
&P_INV_ITEM_ID = &V_INV_ITEM_ID;
&P_SERIAL_ID = &V_SERIAL_ID;
&P_STORAGE_AREA = &V_STORAGE_AREA;
&P_STOR_LEVEL_1 = &V_STOR_LEVEL_1;
&P_STOR_LEVEL_2 = &V_STOR_LEVEL_2;
&P_STOR_LEVEL_3 = &V_STOR_LEVEL_3;
&P_STOR_LEVEL_4 = &V_STOR_LEVEL_4;
&P_CONTAINER_ID = &V_CONTAINER_ID;
&P_UNIT_OF_MEASURE = &V_UNIT_OF_MEASURE;
&P_QTY = &V_QTY;
&P_DEPTO = &V_DEPTID;
&P_DISTRIB_TYPE = &V_DISTRIB_TYPE;
&P_DT_TIMESTAMP = %Datetime;
&P_BUSINESS_UNIT_RECV = &V_SOURCE_BUS_UNIT;
&P_RECEIVER_ID = &V_RECEIVER_ID;
&P_RECV_LN_NBR = &V_RECV_LN_NBR;
&P_RECV_SHIP_SEQ_NBR = &V_RECV_SHIP_SEQ_NBR;
SQLExec("select business_unit, nf_brl_id, nf_brl_line_num from sysadm.ps_n
f_ln_brl where business_unit_recv =:1 and receiver_id =:2 and recv_ln_nbr=:3 and
recv_ship_seq_nbr=:4", &P_BUSINESS_UNIT_RECV, &P_RECEIVER_ID, &P_RECV_LN_NBR, &
P_RECV_SHIP_SEQ_NBR, &P_SOURCE_BUS_UNIT, &P_ORDER_NO, &P_ORDER_INT_LINE_NO);
&P_CONFIG_CODE = &V_CONFIG_CODE;
&P_CUSTO = &ACTUAL_COST;
ENTRADA_ESTOQUE(&P_BUSINESS_UNIT, &P_STAGED_DATE, &P_INV_LOT_ID, &P_INV_IT
EM_ID, &P_SERIAL_ID, &P_STORAGE_AREA, &P_STOR_LEVEL_1, &P_STOR_LEVEL_2, &P_STOR_
LEVEL_3, &P_STOR_LEVEL_4, &P_CONTAINER_ID, &P_UNIT_OF_MEASURE, &P_QTY, &P_DEPTO,
&P_DISTRIB_TYPE, &P_DT_TIMESTAMP, &P_BUSINESS_UNIT_RECV, &P_RECEIVER_ID, &P_REC
V_LN_NBR, &P_RECV_SHIP_SEQ_NBR, &P_SOURCE_BUS_UNIT, &P_ORDER_NO, &P_ORDER_INT_LI
NE_NO, &P_CUSTO, &P_CONFIG_CODE, &P_PARAMETRO_OPCIONAL);
End-While;

SQLExec("update sysadm.ps_staged_item_inv set process_flag = 'Y' where busine


ss_unit = :1 and staging_id = :2 and putaway_status = '1' and putaway_flag = 'Y'
and process_flag = 'N'", &PAR_BUSINESS_UNIT, &PAR_STAGING_ID);
End-Function;
Function BAIXA_ESTOQUE(&B_BUSINESS_UNIT, &B_INV_ITEM_ID, &B_INV_LOT_ID, &B_QTD,
&B_UNIT_OF_MEASURE, &B_SERIAL_ID, &B_DT_TIMESTAMP, &B_ORDER_NO, &B_ORDER_INT_LIN
E_NO, &B_TRANSACTION_DATE, &B_STORAGE_AREA, &B_STOR_LEVEL_1, &B_STOR_LEVEL_2, &B
_STOR_LEVEL_3, &B_STOR_LEVEL_4, &B_DEPTID, &B_DISTRIB_TYPE, &B_SHIP_ID, &B_SOURC
E_BUS_UNIT)
If None(&B_ORDER_NO) Or
&B_ORDER_NO = "" Or
&B_ORDER_NO = " " Then
Error ("Erro Funo: BAIXA_ESTOQUE parametro: &B_ORDER_NO est em branco UN: " |
&B_BUSINESS_UNIT | " Item: " | &B_INV_ITEM_ID);
End-If;
If None(&B_ORDER_INT_LINE_NO) Or
&B_ORDER_INT_LINE_NO <= 0 Then
Error ("Erro Funo: BAIXA_ESTOQUE parametro: &B_ORDER_INT_LINE_NO est em branc
o UN: " | &B_BUSINESS_UNIT | " Item: " | &B_INV_ITEM_ID);
End-If;
/************************************ mmcb.hd226465.sn **********************
**************/
/*Verifica se o item esta cadastrado na UN de estoque*/
SQLExec("SELECT 'Y' AS EXISTE_BU FROM SYSADM.PS_BU_ITEMS_INV WHERE BUSINESS_U
NIT = :1 AND INV_ITEM_ID = :2 AND ITM_STATUS_CURRENT = '1' AND ITM_STATUS_EFFDT
<= TRUNC(SYSDATE)", &B_BUSINESS_UNIT, &B_INV_ITEM_ID, &EXISTE_BU);
If None(&EXISTE_BU) Then
Error ("O item " | &B_INV_ITEM_ID | " no esta cadastrado na UN de estoque "
| &B_BUSINESS_UNIT | "! Favor verificar a tela Home > Manter Itens > Definir It
ens > Usar > Definio do Item da UN.");
End-If;
/************************************ mmcb.hd226465.en **********************
**************/
SQLExec("select qty - QTY_RESERVED FROM sysadm.ps_physical_inv where business
_unit = :1 and inv_item_id = :2 and inv_lot_id = :3 and serial_id = :4 and stora
ge_area = :5 and stor_level_1 = :6 and stor_level_2 = :7 and stor_level_3= :8 an
d stor_level_4 = :9", &B_BUSINESS_UNIT, &B_INV_ITEM_ID, &B_INV_LOT_ID, &B_SERIA
L_ID, &B_STORAGE_AREA, &B_STOR_LEVEL_1, &B_STOR_LEVEL_2, &B_STOR_LEVEL_3, &B_STO
R_LEVEL_4, &V_QTD_DISPONIVEL);
If &V_QTD_DISPONIVEL < &B_QTD Then
Error ("No existe Saldo em Estoque suficiente para Item: " | &B_INV_ITEM_ID
| " Endereo: " | &B_STORAGE_AREA | " - " | &B_STOR_LEVEL_1 | " - " | &B_STOR_LEV
EL_2 | " - " | &B_STOR_LEVEL_3);

End-If;
SQLExec("update sysadm.ps_physical_inv set last_transact_type = '030', last_i
ssue_date = to_date(sysdate), qty = qty - :1, qty_base = qty_base - :2, dt_times
tamp = to_date(sysdate) where business_unit = :3 and inv_item_id = :4 and inv_lo
t_id = :5 and serial_id = :6 and storage_area = :7 and stor_level_1 = :8 and sto
r_level_2 = :9 and stor_level_3 = :10 and stor_level_4 = :11", &B_QTD, &B_QTD, &
B_BUSINESS_UNIT, &B_INV_ITEM_ID, &B_INV_LOT_ID, &B_SERIAL_ID, &B_STORAGE_AREA, &
B_STOR_LEVEL_1, &B_STOR_LEVEL_2, &B_STOR_LEVEL_3, &B_STOR_LEVEL_4);
&PAR_BUSINESS_UNIT = &B_BUSINESS_UNIT;
&PAR_INV_ITEM_ID = &B_INV_ITEM_ID;
&PAR_DT_TIMESTAMP = &B_DT_TIMESTAMP;
&PAR_SEQ_NBR = max_seqnbr_transaction(&B_BUSINESS_UNIT, &B_INV_ITEM_ID, &B_DT
_TIMESTAMP);
&PAR_SOURCE_BUS_UNIT = &B_SOURCE_BUS_UNIT;
&PAR_ORDER_NO = &B_ORDER_NO;
&PAR_ORDER_INT_LINE_NO = &B_ORDER_INT_LINE_NO;
&PAR_SCHED_LINE_NO = &B_ORDER_INT_LINE_NO;
&PAR_DEMAND_LINE_NO = &B_ORDER_INT_LINE_NO;
&PAR_STAGED_DATE = Date3(1900, 1, 1);
&PAR_INV_LOT_ID = &B_INV_LOT_ID;
&PAR_SERIAL_ID = &B_SERIAL_ID;
&PAR_STORAGE_AREA = &B_STORAGE_AREA;
&PAR_STOR_LEVEL_1 = &B_STOR_LEVEL_1;
&PAR_STOR_LEVEL_2 = &B_STOR_LEVEL_2;
&PAR_STOR_LEVEL_3 = &B_STOR_LEVEL_3;
&PAR_STOR_LEVEL_4 = &B_STOR_LEVEL_4;
&PAR_RECEIVER_ID = " ";
&PAR_RECV_LN_NBR = 0;
&PAR_TRANSACTION_GROUP = "030";
&PAR_TRANSACTION_DATE = &B_TRANSACTION_DATE;
&PAR_QTY_BASE = &B_QTD;
&PAR_QTY = &B_QTD;
&PAR_UNIT_MEASURE_STD = &B_UNIT_OF_MEASURE;
&PAR_UNIT_OF_MEASURE = &B_UNIT_OF_MEASURE;
&PAR_OPRID = %UserId;
&PAR_ACCOUNT = " ";
&PAR_DEPTID = &B_DEPTID;
&PAR_PO_ID = " ";
&PAR_DISTRIB_LINE_NUM = 0;
&PAR_DISTRIB_SEQ_NUM = 0;
&PAR_RECV_SHIP_SEQ_NBR = 0;
&PAR_PRICE_PO = 0;
&PAR_ANALYSIS_TYPE = "ACT";
&PAR_VENDOR_ID = " ";
&PAR_STAGED_TYPE = " ";
&PAR_DISTRIB_TYPE = &B_DISTRIB_TYPE;
&PAR_BUSINESS_UNIT_PO = " ";
&PAR_TRANSACTION_SOURCE = "IN";
&PAR_CONVERSION_RATE = 0;
&PAR_PROCESS_INSTANCE = 0;
&PAR_PROCESS_FLAG = "N";
&PAR_SHIP_ID = &B_SHIP_ID;
GRAVA_TRANSACTION(&PAR_BUSINESS_UNIT, &PAR_INV_ITEM_ID, &PAR_DT_TIMESTAMP, &P
AR_SEQ_NBR, &PAR_SOURCE_BUS_UNIT, &PAR_ORDER_NO, &PAR_ORDER_INT_LINE_NO, &PAR_SC
HED_LINE_NO, &PAR_DEMAND_LINE_NO, &PAR_STAGED_DATE, &PAR_INV_LOT_ID, &PAR_SERIAL

_ID, &PAR_STORAGE_AREA, &PAR_STOR_LEVEL_1, &PAR_STOR_LEVEL_2, &PAR_STOR_LEVEL_3,


&PAR_STOR_LEVEL_4, &PAR_RECEIVER_ID, &PAR_RECV_LN_NBR, &PAR_TRANSACTION_GROUP,
&PAR_TRANSACTION_DATE, &PAR_QTY_BASE, &PAR_QTY, &PAR_UNIT_MEASURE_STD, &PAR_UNIT
_OF_MEASURE, &PAR_OPRID, &PAR_ACCOUNT, &PAR_DEPTID, &PAR_PO_ID, &PAR_DISTRIB_LIN
E_NUM, &PAR_DISTRIB_SEQ_NUM, &PAR_RECV_SHIP_SEQ_NBR, &PAR_PRICE_PO, &PAR_ANALYSI
S_TYPE, &PAR_VENDOR_ID, &PAR_STAGED_TYPE, &PAR_DISTRIB_TYPE, &PAR_BUSINESS_UNIT_
PO, &PAR_TRANSACTION_SOURCE, &PAR_CONVERSION_RATE, &PAR_PROCESS_INSTANCE, &PAR_P
ROCESS_FLAG, &PAR_SHIP_ID);
SQLExec("update sysadm.ps_bu_items_inv set qty_available = qty_available - :1
, qty_owned = qty_owned - :2, qty_onhand = qty_onhand - :3, dt_timestamp = sysd
ate, last_order = :4, last_order_date = sysdate where business_unit=:5 and inv_i
tem_id=:6 ", &B_QTD, &B_QTD, &B_QTD, &B_ORDER_NO, &B_BUSINESS_UNIT, &B_INV_ITEM_
ID);
End-Function;

[MMC_IN_LIB.TO_STORAGE_AREA.SavePostChange]
/*******************************************************************************
*****
* Wagner Sorio - MMC - 21/07/2010 - mmcb.sds3346 - Cancela Reserva Automatica
*
* Funo para Fazer Transferencia entre Area Estoque
*
********************************************************************************
*****/
/******************************** mmcb.sds3346.SN ******************************
****/
Function TRANSFE_ENTRE_AREAS_ESTOQUE(&P_SETID, &P_BUSINESS_UNIT, &P_INV_ITEM_ID,
&P_QTY_SOLICITADA, &P_FROM_STORAGE_AREA, &P_FROM_STOR_LEVEL_1, &P_FROM_STOR_LEV
EL_2, &P_FROM_STOR_LEVEL_3, &P_FROM_STOR_LEVEL_4, &P_TO_STORAGE_AREA, &P_TO_STOR
_LEVEL_1, &P_TO_STOR_LEVEL_2, &P_TO_STOR_LEVEL_3, &P_TO_STOR_LEVEL_4, &OUT_STATU
S_TRANSFERENCIA, &OUT_MMC_TRAN_BU, &OUT_MMC_TRAN_ITEM, &OUT_MMC_TRAN_TIMESTAMP,
&OUT_MMC_TRAN_SEQ_NBR)
&OUT_STATUS_TRANSFERENCIA = "ERRO";
If None(&P_BUSINESS_UNIT) Then
Error ("Erro na funo: TRANSFE_ENTRE_AREAS_ESTOQUE o parametro: &P_BUSINESS_U
NIT est em branco.");
End-If;
If None(&P_INV_ITEM_ID) Then
Error ("Erro na funo: TRANSFE_ENTRE_AREAS_ESTOQUE o parametro: &P_INV_ITEM_I
D est em branco.");
End-If;
If None(&P_QTY_SOLICITADA) Then
Error ("Erro na funo: TRANSFE_ENTRE_AREAS_ESTOQUE o parametro: &P_QTY_SOLICI
TADA est em branco.");
End-If;
If None(&P_FROM_STORAGE_AREA) Then
Error ("Erro na funo: TRANSFE_ENTRE_AREAS_ESTOQUE o parametro: &P_FROM_STORA
GE_AREA est em branco.");
End-If;

If None(&P_FROM_STOR_LEVEL_1) Then
Error ("Erro na funo: TRANSFE_ENTRE_AREAS_ESTOQUE o parametro: &P_FROM_STOR_
LEVEL_1 est em branco.");
End-If;
If None(&P_FROM_STOR_LEVEL_2) Then
Error ("Erro na funo: TRANSFE_ENTRE_AREAS_ESTOQUE o parametro: &P_FROM_STOR_
LEVEL_2 est em branco.");
End-If;
If None(&P_FROM_STOR_LEVEL_3) Then
Error ("Erro na funo: TRANSFE_ENTRE_AREAS_ESTOQUE o parametro: &P_FROM_STOR_
LEVEL_3 est em branco.");
End-If;
If None(&P_FROM_STOR_LEVEL_4) Then
Error ("Erro na funo: TRANSFE_ENTRE_AREAS_ESTOQUE o parametro: &P_FROM_STOR_
LEVEL_4 est em branco.");
End-If;
If None(&P_TO_STORAGE_AREA) Then
Error ("Erro na funo: TRANSFE_ENTRE_AREAS_ESTOQUE o parametro: &P_TO_STORAGE
_AREA est em branco.");
End-If;
If None(&P_TO_STOR_LEVEL_1) Then
Error ("Erro na funo: TRANSFE_ENTRE_AREAS_ESTOQUE o parametro: &P_TO_STOR_LE
VEL_1 est em branco.");
End-If;
If None(&P_TO_STOR_LEVEL_2) Then
Error ("Erro na funo: TRANSFE_ENTRE_AREAS_ESTOQUE o parametro: &P_TO_STOR_LE
VEL_2 est em branco.");
End-If;
If None(&P_TO_STOR_LEVEL_3) Then
Error ("Erro na funo: TRANSFE_ENTRE_AREAS_ESTOQUE o parametro: &P_TO_STOR_LE
VEL_3 est em branco.");
End-If;
If None(&P_TO_STOR_LEVEL_4) Then
Error ("Erro na funo: TRANSFE_ENTRE_AREAS_ESTOQUE o parametro: &P_TO_STOR_LE
VEL_4 est em branco.");
End-If;
If &P_QTY_SOLICITADA <= 0 Then
Error ("Erro QTD do endereo de Origem: " | &P_BUSINESS_UNIT | " - " | &P_IN
V_ITEM_ID | " - " | &P_FROM_STORAGE_AREA | " - " | &P_FROM_STOR_LEVEL_1 | " - "
| &P_FROM_STOR_LEVEL_2 | " - " | &P_FROM_STOR_LEVEL_3 | " - " | &P_FROM_STOR_LEV
EL_4 | " no pode ser nenor ou igual a zero.");
End-If;
If &P_FROM_STORAGE_AREA = &P_TO_STORAGE_AREA And
&P_FROM_STOR_LEVEL_1 = &P_TO_STOR_LEVEL_1 And
&P_FROM_STOR_LEVEL_2 = &P_TO_STOR_LEVEL_2 And
&P_FROM_STOR_LEVEL_3 = &P_TO_STOR_LEVEL_3 And
&P_FROM_STOR_LEVEL_4 = &P_TO_STOR_LEVEL_4 Then
Error ("Erro durante Transferencia do Item: " | &P_BUSINESS_UNIT | " - " |

&P_INV_ITEM_ID | " endereo de origem e destino so iguais.");


End-If;
&ITEM_EXISTE_FLAG = "N";
&SQL
&SQL
&SQL
&SQL
&SQL

=
=
=
=
=

"";
&SQL
&SQL
&SQL
&SQL

|
|
|
|

" SELECT 'Y'


"
FROM SYSADM.PS_BU_ITEMS_INV
" WHERE BUSINESS_UNIT
= :1
"
AND INV_ITEM_ID
= :2

";
";
";
";

SQLExec(&SQL, &P_BUSINESS_UNIT, &P_INV_ITEM_ID, &ITEM_EXISTE_FLAG);


If &ITEM_EXISTE_FLAG <> "Y" Then
Error ("Erro: Item " | &P_INV_ITEM_ID | " no cadastrada para Unidade de Neg
ocio: " | &P_BUSINESS_UNIT | ".");
End-If;
&AREA_ORIGEM_EXISTE_FLAG = "N";
&SQL = "";
&SQL = &SQL | " SELECT DISTINCT 'Y'
&SQL = &SQL | "
FROM SYSADM.PS_PHYSICAL_INV
&SQL = &SQL | " WHERE BUSINESS_UNIT
&SQL = &SQL | "
AND INV_ITEM_ID
&SQL = &SQL | "
AND STORAGE_AREA
&SQL = &SQL | "
AND STOR_LEVEL_1
&SQL = &SQL | "
AND STOR_LEVEL_2
&SQL = &SQL | "
AND STOR_LEVEL_3
&SQL = &SQL | "
AND STOR_LEVEL_4

=
=
=
=
=
=
=

:1
:2
:3
:4
:5
:6
:7

";
";
";
";
";
";
";
";
";

SQLExec(&SQL, &P_BUSINESS_UNIT, &P_INV_ITEM_ID, &P_FROM_STORAGE_AREA, &P_FROM


_STOR_LEVEL_1, &P_FROM_STOR_LEVEL_2, &P_FROM_STOR_LEVEL_3, &P_FROM_STOR_LEVEL_4,
&AREA_ORIGEM_EXISTE_FLAG);
If &AREA_ORIGEM_EXISTE_FLAG <> "Y" Then
Error ("Erro: Item " | &P_BUSINESS_UNIT | " - " | &P_INV_ITEM_ID | " no exi
ste no endereo: " | &P_FROM_STORAGE_AREA | " - " | &P_FROM_STOR_LEVEL_1 | " - " |
&P_FROM_STOR_LEVEL_2 | " - " | &P_FROM_STOR_LEVEL_3 | " - " | &P_FROM_STOR_LEVE
L_4 | " de origem.");
End-If;
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=

"";
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

" SELECT
";
"
PI.INV_LOT_ID
"
, PI.SERIAL_ID
"
, PI.UNIT_OF_MEASURE
"
, PI.QTY
"
, PI.QTY_RESERVED
"
, SLI.NETTABLE_FLG
"
, SLI.WIP_LOC_FLG
" FROM SYSADM.PS_PHYSICAL_INV PI,
"
SYSADM.PS_STOR_LOC_INV SLI
" WHERE PI.BUSINESS_UNIT
= :1
"
AND PI.INV_ITEM_ID
= :2
"
AND PI.STORAGE_AREA
= :3
"
AND PI.STOR_LEVEL_1
= :4
"
AND PI.STOR_LEVEL_2
= :5

";
";
";
";
";
";
";
";
";
";
";
";
";
";

&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

=
=
=
=
=
=
=
=
=

&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

|
|
|
|
|
|
|
|
|

"
"
"
"
"
"
"
"
"

AND
AND
AND
AND
AND
AND
AND
AND
AND

PI.STOR_LEVEL_3
PI.STOR_LEVEL_4
PI.BUSINESS_UNIT
PI.STORAGE_AREA
PI.STOR_LEVEL_1
PI.STOR_LEVEL_2
PI.STOR_LEVEL_3
PI.STOR_LEVEL_4
PI.QTY - PI.QTY_RESERVED

=
=
=
=
=
=
=
=
>

:6
:7
SLI.BUSINESS_UNIT
SLI.STORAGE_AREA
SLI.STOR_LEVEL_1
SLI.STOR_LEVEL_2
SLI.STOR_LEVEL_3
SLI.STOR_LEVEL_4
0

";
";
";
";
";
";
";
";
";

&sqlStmt = CreateSQL(&SQL, &P_BUSINESS_UNIT, &P_INV_ITEM_ID, &P_FROM_STORAGE_


AREA, &P_FROM_STOR_LEVEL_1, &P_FROM_STOR_LEVEL_2, &P_FROM_STOR_LEVEL_3, &P_FROM_
STOR_LEVEL_4);
&sqlStmt.Fetch(&E_ORIG_INV_LOT_ID, &E_ORIG_SERIAL_ID, &E_ORIG_UNIT_OF_MEASURE
, &E_ORIG_QTY, &E_ORIG_QTY_RESERVED, &E_ORIG_NETTABLE_FLG, &E_ORIG_WIP_LOC_FLG);
&sqlStmt.Close();
If &E_ORIG_QTY < 0 Then
Error ("Quantidade do endereo Origem: " | &P_BUSINESS_UNIT | " - " | &P_INV
_ITEM_ID | " - " | &P_FROM_STORAGE_AREA | " - " | &P_FROM_STOR_LEVEL_1 | " - " |
&P_FROM_STOR_LEVEL_2 | " - " | &P_FROM_STOR_LEVEL_3 | " - " | &P_FROM_STOR_LEVE
L_4 | " est negativa.");
End-If;
If &E_ORIG_QTY_RESERVED < 0 Then
Error ("Quantidade reservada do endereo Origem: " | &P_BUSINESS_UNIT | " " | &P_INV_ITEM_ID | " - " | &P_FROM_STORAGE_AREA | " - " | &P_FROM_STOR_LEVEL_1
| " - " | &P_FROM_STOR_LEVEL_2 | " - " | &P_FROM_STOR_LEVEL_3 | " - " | &P_FROM
_STOR_LEVEL_4 | " est negativa.");
End-If;
&E_ORIG_QTY_DISPONIVEL = &E_ORIG_QTY - &E_ORIG_QTY_RESERVED;
If &P_QTY_SOLICITADA > &E_ORIG_QTY_DISPONIVEL Then
Error ("Quantidade disponivel do endereo Origem: " | &P_BUSINESS_UNIT | " " | &P_INV_ITEM_ID | " - " | &P_FROM_STORAGE_AREA | " - " | &P_FROM_STOR_LEVEL_
1 | " - " | &P_FROM_STOR_LEVEL_2 | " - " | &P_FROM_STOR_LEVEL_3 | " - " | &P_FRO
M_STOR_LEVEL_4 | ": " | &E_ORIG_QTY_DISPONIVEL | " menor que a quantidade solici
tada: " | &P_QTY_SOLICITADA | ".");
End-If;
If &E_ORIG_INV_LOT_ID <> "NONE" Then
Error ("Erro: No possivel fazer a Transferncia para o Item: " | &P_BUSINESS_
UNIT | " - " | &P_INV_ITEM_ID | ". Por que ele controlado por Lote");
End-If;
If &E_ORIG_SERIAL_ID <> "NONE" Then
Error ("Erro: No possivel fazer a Transferncia para o Item: " | &P_BUSINESS_
UNIT | " - " | &P_INV_ITEM_ID | ". Por que ele controlado por Serie");
End-If;

REM *************************************************************************
********************;
REM ! Checa se a quantidade disponvel maior que a quantidade requisitada
;
REM ! e transfere todo o saldo disponvel para as reas destinadas.
;
REM *************************************************************************
********************;
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

=
=
=
=
=
=
=
=

"";
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

|
|
|
|
|
|
|

" SELECT BII.QTY_AVAILABLE


"
, BII.QTY_OWNED
"
, BII.QTY_RESERVED
" FROM SYSADM.PS_BU_ITEMS_INV BII
" WHERE BII.BUSINESS_UNIT
= :1
"
AND BII.INV_ITEM_ID
= :2
"
AND (BII.QTY_ONHAND - BII.QTY_RESERVED) > 0

";
";
";
";
";
";
";

&sqlStmt = CreateSQL(&SQL, &P_BUSINESS_UNIT, &P_INV_ITEM_ID);


&sqlStmt.Fetch(&BU_QTY_AVAILABLE, &BU_QTY_OWNED, &BU_QTY_RESERVED);
&sqlStmt.Close();
REM *************************************************************************
********************;
REM ! Essa lgica foi feita porque quando tentamos transferir itens de uma rea
;
REM ! que no aceita reserva, a quantidade disponvel nunca a real, pois a
;
REM ! quantidade que fica em reas que no aceitam reservas no ficam disponveis
;
REM ! no estoque.
;
REM *************************************************************************
********************;
REM *************************************************************************
********************;
REM ! Para sabermos a quantidade REAL disponivel no estoque, sem a mesma esta
r reservada
;
REM ! precisamos subtrair da quantidade propria a quantidade reservada, com i
sso temos
;
REM ! o saldo REAL do estoque, mesmo esta pea estando em reas que no aceitam res
erva.
;
REM *************************************************************************
********************;
&QTY_DISPONIVEL = 0;
If &BU_QTY_OWNED > &BU_QTY_RESERVED Then
&QTY_DISPONIVEL = &BU_QTY_OWNED - &BU_QTY_RESERVED;
End-If;
REM *************************************************************************
********************;
REM ! Aqui temos um caso onde temos item em rea que no aceita reserva, pois a q
uantidade
;
REM ! disponivel na BU_ITEMS_INV est menor que a quantidade disponvel REAL.
;

REM *************************************************************************
********************;
If &BU_QTY_AVAILABLE < &QTY_DISPONIVEL Then
&BU_QTY_AVAILABLE = &QTY_DISPONIVEL;
End-If;
REM *************************************************************************
********************;
REM ! Se a quantidade da BU for menor ou igual a zero, devemos abandonar
;
REM ! o loop mesmo se existirem quantidades na PHYSICAL, pois estas quantidad
es
;
REM ! j esto alocadas.
;
REM *************************************************************************
********************;
If &BU_QTY_AVAILABLE <= 0 Then
Error ("Erro: No existe saldo na Unidade Negocio: " | &P_BUSINESS_UNIT | "
disponivel para transferir o Item: " | &P_INV_ITEM_ID | ".");
End-If;
If &P_QTY_SOLICITADA > &BU_QTY_AVAILABLE Then
Error ("Erro: No existe saldo na Unidade Negocio: " | &P_BUSINESS_UNIT | "
disponivel para transferir o Item: " | &P_INV_ITEM_ID | ".");
End-If;
&EXISTE_AREAPHYSICAL_DESTINO = "N";
&SQL = "";
&SQL = &SQL | " SELECT DISTINCT 'Y'
&SQL = &SQL | "
FROM SYSADM.PS_PHYSICAL_INV PI_E
&SQL = &SQL | " WHERE PI_E.BUSINESS_UNIT
= :1
&SQL = &SQL | "
AND PI_E.INV_ITEM_ID
= :2
&SQL = &SQL | "
AND PI_E.STORAGE_AREA
= :3
&SQL = &SQL | "
AND PI_E.STOR_LEVEL_1
= :4
&SQL = &SQL | "
AND PI_E.STOR_LEVEL_2
= :5
&SQL = &SQL | "
AND PI_E.STOR_LEVEL_3
= :6
&SQL = &SQL | "
AND PI_E.STOR_LEVEL_4
= :7

";
";
";
";
";
";
";
";
";

&sqlStmt = CreateSQL(&SQL, &P_BUSINESS_UNIT, &P_INV_ITEM_ID, &P_TO_STORAGE_AR


EA, &P_TO_STOR_LEVEL_1, &P_TO_STOR_LEVEL_2, &P_TO_STOR_LEVEL_3, &P_TO_STOR_LEVEL
_4);
&sqlStmt.Fetch(&EXISTE_AREAPHYSICAL_DESTINO);
&sqlStmt.Close();
&EXISTE_LOCACAO_DESTINO
&SQL = "";
&SQL = &SQL | " SELECT
&SQL = &SQL | "
&SQL = &SQL | "
&SQL = &SQL | "
&SQL = &SQL | "

= "N";
,
,
,
,

'Y'
SLI_E.SUSPEND_FLG
SLI_E.PHYS_CYC_INV_FLG
SLI_E.NETTABLE_FLG
SLI_E.WIP_LOC_FLG

";
";
";
";
";

&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

=
=
=
=
=
=
=
=
=

&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

|
|
|
|
|
|
|
|
|

"
"
"
"
"
"
"
"
"

FROM
WHERE
AND
AND
AND
AND
AND

, SLI_E.INSPECT_FLG
, SLI_E.DELETE_STORLOC_FLG
SYSADM.PS_STOR_LOC_INV SLI_E
SLI_E.BUSINESS_UNIT
SLI_E.STORAGE_AREA
SLI_E.STOR_LEVEL_1
SLI_E.STOR_LEVEL_2
SLI_E.STOR_LEVEL_3
SLI_E.STOR_LEVEL_4

=
=
=
=
=
=

:1
:2
:3
:4
:5
:6

";
";
";
";
";
";
";
";
";

&sqlStmt = CreateSQL(&SQL, &P_BUSINESS_UNIT, &P_TO_STORAGE_AREA, &P_TO_STOR_L


EVEL_1, &P_TO_STOR_LEVEL_2, &P_TO_STOR_LEVEL_3, &P_TO_STOR_LEVEL_4);
&sqlStmt.Fetch(&EXISTE_LOCACAO_DESTINO, &E_DEST_SUSPEND_FLG, &E_DEST_PHYS_CYC
_INV_FLG, &E_DEST_NETTABLE_FLG, &E_DEST_WIP_LOC_FLG, &E_DEST_INSPECT_FLG, &E_DES
T_DELETE_STORLOC_FLG);
&sqlStmt.Close();
If &EXISTE_LOCACAO_DESTINO <> "Y" Then
Error ("Locao de Destino: " | &P_BUSINESS_UNIT | " - " | &P_TO_STORAGE_AREA
| " - " | &P_TO_STOR_LEVEL_1 | " - " | &P_TO_STOR_LEVEL_2 | " - " | &P_TO_STOR_L
EVEL_3 | " - " | &P_TO_STOR_LEVEL_4 | " no est cadastrada.");
End-If;
If &E_DEST_SUSPEND_FLG = "Y" Then
Error ("Locao de Destino: " | &P_BUSINESS_UNIT | " - " | &P_TO_STORAGE_AREA
| " - " | &P_TO_STOR_LEVEL_1 | " - " | &P_TO_STOR_LEVEL_2 | " - " | &P_TO_STOR_L
EVEL_3 | " - " | &P_TO_STOR_LEVEL_4 | " est suspensa.");
End-If;
If &E_DEST_PHYS_CYC_INV_FLG = "Y" Then
Error ("Locao de Destino: " | &P_BUSINESS_UNIT | " - " | &P_TO_STORAGE_AREA
| " - " | &P_TO_STOR_LEVEL_1 | " - " | &P_TO_STOR_LEVEL_2 | " - " | &P_TO_STOR_L
EVEL_3 | " - " | &P_TO_STOR_LEVEL_4 | " est em contagem cclica.");
End-If;
If &E_DEST_INSPECT_FLG = "Y" Then
Error ("Locao de Destino: " | &P_BUSINESS_UNIT | " - " | &P_TO_STORAGE_AREA
| " - " | &P_TO_STOR_LEVEL_1 | " - " | &P_TO_STOR_LEVEL_2 | " - " | &P_TO_STOR_L
EVEL_3 | " - " | &P_TO_STOR_LEVEL_4 | " est em inspeo.");
End-If;
If &E_DEST_DELETE_STORLOC_FLG = "Y" Then
Error ("Locao de Destino: " | &P_BUSINESS_UNIT | " - " | &P_TO_STORAGE_AREA
| " - " | &P_TO_STOR_LEVEL_1 | " - " | &P_TO_STOR_LEVEL_2 | " - " | &P_TO_STOR_L
EVEL_3 | " - " | &P_TO_STOR_LEVEL_4 | " est fechada.");
End-If;
REM *************************************************************************
********************;

REM ! Insere ou Atualiza Saldo na PHYSICAL_INV


;
REM *************************************************************************
********************;
REM *************************************************************************
********************;
REM ! Baixando Saldo na Origem
;
REM *************************************************************************
********************;
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

=
=
=
=
=
=
=
=
=
=
=

"";
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

|
|
|
|
|
|
|
|
|
|

" UPDATE SYSADM.PS_PHYSICAL_INV


"
SET QTY
"
, QTY_BASE
" WHERE BUSINESS_UNIT
"
AND INV_ITEM_ID
"
AND STORAGE_AREA
"
AND STOR_LEVEL_1
"
AND STOR_LEVEL_2
"
AND STOR_LEVEL_3
"
AND STOR_LEVEL_4

=
=
=
=
=
=
=
=
=

QTY
QTY_BASE -

:1
:2
:3
:4
:5
:6
:7
:8
:9

";
";
";
";
";
";
";
";
";
";

&sqlStmt = CreateSQL(&SQL, &P_QTY_SOLICITADA, &P_QTY_SOLICITADA, &P_BUSINESS_


UNIT, &P_INV_ITEM_ID, &P_FROM_STORAGE_AREA, &P_FROM_STOR_LEVEL_1, &P_FROM_STOR_L
EVEL_2, &P_FROM_STOR_LEVEL_3, &P_FROM_STOR_LEVEL_4);
&sqlStmt.Close();
&SQL = "";
&SQL = &SQL | " SELECT A.QTY - A.QTY_RESERVED
";
&SQL = &SQL | "
FROM PS_PHYSICAL_INV A
";
&SQL = &SQL | "
WHERE A.BUSINESS_UNIT
= :1
";
&SQL = &SQL | "
AND A.INV_ITEM_ID
= :2
";
&SQL = &SQL | "
AND A.STORAGE_AREA
= :3
";
&SQL = &SQL | "
AND A.STOR_LEVEL_1
= :4
";
&SQL = &SQL | "
AND A.STOR_LEVEL_2
= :5
";
&SQL = &SQL | "
AND A.STOR_LEVEL_3
= :6
";
&SQL = &SQL | "
AND A.STOR_LEVEL_4
= :7
";
&sqlStmt = CreateSQL(&SQL, &P_BUSINESS_UNIT, &P_INV_ITEM_ID, &P_FROM_STORAGE_
AREA, &P_FROM_STOR_LEVEL_1, &P_FROM_STOR_LEVEL_2, &P_FROM_STOR_LEVEL_3, &P_FROM_
STOR_LEVEL_4);
&sqlStmt.Fetch(&QTY_DISPO_APOS_UPDATE);
&sqlStmt.Close();
If &QTY_DISPO_APOS_UPDATE < 0 Then
Error ("Saldo do endereo Origem: " | &P_BUSINESS_UNIT | " - " | &P_INV_ITEM
_ID | " - " | &P_FROM_STORAGE_AREA | " - " | &P_FROM_STOR_LEVEL_1 | " - " | &P_F
ROM_STOR_LEVEL_2 | " - " | &P_FROM_STOR_LEVEL_3 | " - " | &P_FROM_STOR_LEVEL_4 |
" ficar negativa apos a transferencia.");
End-If;
REM *************************************************************************
********************;
REM ! Aumentando Saldo no Destino
;
REM *************************************************************************
********************;

If &EXISTE_AREAPHYSICAL_DESTINO = "Y" Then


&SQL = "";
&SQL = &SQL | " UPDATE SYSADM.PS_PHYSICAL_INV
";
&SQL = &SQL | "

SET QTY

QTY

+ :1

QTY_BASE

+ :2

";
&SQL = &SQL | "

, QTY_BASE

";
&SQL = &SQL | "

WHERE BUSINESS_UNIT

:3

&SQL = &SQL | "

AND INV_ITEM_ID

:4

&SQL = &SQL | "

AND STORAGE_AREA

:5

&SQL = &SQL | "

AND STOR_LEVEL_1

:6

&SQL = &SQL | "

AND STOR_LEVEL_2

:7

&SQL = &SQL | "

AND STOR_LEVEL_3

:8

&SQL = &SQL | "

AND STOR_LEVEL_4

:9

";
";
";
";
";
";
";
&sqlStmt = CreateSQL(&SQL, &P_QTY_SOLICITADA, &P_QTY_SOLICITADA, &P_BUSINE
SS_UNIT, &P_INV_ITEM_ID, &P_TO_STORAGE_AREA, &P_TO_STOR_LEVEL_1, &P_TO_STOR_LEVE
L_2, &P_TO_STOR_LEVEL_3, &P_TO_STOR_LEVEL_4);
&sqlStmt.Close();
Else
&REC_PHYSICAL_INV = CreateRecord(Record.PHYSICAL_INV);
&REC_PHYSICAL_INV.BUSINESS_UNIT.VALUE = &P_BUSINESS_UNIT;
&REC_PHYSICAL_INV.STAGED_DATE.VALUE = Date3(1900, 1, 1);
&REC_PHYSICAL_INV.INV_LOT_ID.VALUE = "NONE";
&REC_PHYSICAL_INV.INV_ITEM_ID.VALUE = &P_INV_ITEM_ID;
&REC_PHYSICAL_INV.SERIAL_ID.VALUE = "NONE";
&REC_PHYSICAL_INV.STORAGE_AREA.VALUE = &P_TO_STORAGE_AREA;
&REC_PHYSICAL_INV.STOR_LEVEL_1.VALUE = &P_TO_STOR_LEVEL_1;
&REC_PHYSICAL_INV.STOR_LEVEL_2.VALUE = &P_TO_STOR_LEVEL_2;
&REC_PHYSICAL_INV.STOR_LEVEL_3.VALUE = &P_TO_STOR_LEVEL_3;
&REC_PHYSICAL_INV.STOR_LEVEL_4.VALUE = &P_TO_STOR_LEVEL_4;
&REC_PHYSICAL_INV.CONTAINER_ID.VALUE = " ";
&REC_PHYSICAL_INV.UNIT_OF_MEASURE.VALUE = &E_ORIG_UNIT_OF_MEASURE;
&REC_PHYSICAL_INV.LAST_TRANSACT_TYPE.VALUE = "060";
&REC_PHYSICAL_INV.QTY.VALUE = &P_QTY_SOLICITADA;
&REC_PHYSICAL_INV.QTY_RESERVED.VALUE = 0;
&REC_PHYSICAL_INV.QTY_BASE.VALUE = &P_QTY_SOLICITADA;
&REC_PHYSICAL_INV.QTY_RESERVED_BASE.VALUE = 0;
&REC_PHYSICAL_INV.AVAIL_STATUS.VALUE = "1";
&REC_PHYSICAL_INV.AVAIL_STATUS_TYPE.VALUE = " ";
&REC_PHYSICAL_INV.REASON_CD.VALUE = " ";
&REC_PHYSICAL_INV.DT_TIMESTAMP.VALUE = %Datetime;
&REC_PHYSICAL_INV.DESCR254.VALUE = " ";
&sqlStmt = CreateSQL("%INSERT(:1)");
&sqlStmt.Execute(&REC_PHYSICAL_INV);
&sqlStmt.Close();

End-If;
&QTY_AVAILABLE = 0;
&QTY_RESERVED = 0;
/****************************************************************************
************************************/
/****************************************************************************
************************************/
/****************************************************************************
************************************/
REM
REM
REM
REM

******************************************;
! rea que aceita reserva.
;
! Regra 01
;
******************************************;

If &E_ORIG_WIP_LOC_FLG = "N" And


&E_ORIG_NETTABLE_FLG = "Y" Then
REM ******************************************;
REM ! WIP / Aceita reserva.
;
REM ******************************************;
If &E_DEST_WIP_LOC_FLG = "Y" And
&E_DEST_NETTABLE_FLG = "Y" Then
REM ! SOMA QUANTIDADE DISPONVEL / SOMA QUANTIDADE RESERVADA. ;
&QTY_AVAILABLE = &P_QTY_SOLICITADA;
&QTY_RESERVED = &P_QTY_SOLICITADA * - 1;
End-If;
REM ******************************************;
REM ! WIP / No aceita reserva.
;
REM ******************************************;
If &E_DEST_WIP_LOC_FLG = "Y" And
&E_DEST_NETTABLE_FLG = "N" Then
REM ! Subtrai quantidade disponvel. ;
&QTY_AVAILABLE = &P_QTY_SOLICITADA;
&QTY_RESERVED = 0;
End-If;
REM ******************************************;
REM ! Aceita reserva.
;
REM ******************************************;
If &E_DEST_WIP_LOC_FLG = "N" And
&E_DEST_NETTABLE_FLG = "N" Then
REM ! Soma quantidade disponvel ;

&QTY_AVAILABLE = &P_QTY_SOLICITADA;
&QTY_RESERVED = 0;
End-If;
End-If;
/****************************************************************************
************************************/
/****************************************************************************
************************************/
/****************************************************************************
************************************/
REM
REM
REM
REM

******************************************;
! rea que no aceita reserva.
;
! Regra 02
;
******************************************;

If &E_ORIG_WIP_LOC_FLG = "N" And


&E_ORIG_NETTABLE_FLG = "N" Then
REM ******************************************;
REM ! WIP / Aceita reserva.
;
REM ******************************************;
If &E_DEST_WIP_LOC_FLG = "Y" And
&E_DEST_NETTABLE_FLG = "Y" Then
&QTY_AVAILABLE = 0;
&QTY_RESERVED = &P_QTY_SOLICITADA * - 1;
End-If;
REM ******************************************;
REM ! WIP / No aceita reserva.
;
REM ******************************************;
If &E_DEST_WIP_LOC_FLG = "Y" And
&E_DEST_NETTABLE_FLG = "N" Then
REM NO FAZ NADA ;
End-If;
REM ******************************************;
REM ! Aceita reserva.
;
REM ******************************************;
If &E_DEST_WIP_LOC_FLG = "N" And
&E_DEST_NETTABLE_FLG = "Y" Then
&QTY_AVAILABLE = &P_QTY_SOLICITADA * - 1;
&QTY_RESERVED = 0;
End-If;
End-If;

/****************************************************************************
************************************/
/****************************************************************************
************************************/
/****************************************************************************
************************************/
REM
REM
REM
REM

******************************************;
! rea WIP que aceita reserva.
;
! Regra 03
;
******************************************;

If &E_ORIG_WIP_LOC_FLG = "Y" And


&E_ORIG_NETTABLE_FLG = "Y" Then
REM ******************************************;
REM ! Aceita reserva.
;
REM ******************************************;
If &E_DEST_WIP_LOC_FLG = "N" And
&E_DEST_NETTABLE_FLG = "Y" Then
REM ! Soma quantidade disponvel / subtrai quantidade reservada.
&QTY_AVAILABLE = &P_QTY_SOLICITADA * - 1;
&QTY_RESERVED = &P_QTY_SOLICITADA;
End-If;
REM ******************************************;
REM ! WIP / No aceita reserva.
;
REM ******************************************;
If &E_DEST_WIP_LOC_FLG = "Y" And
&E_DEST_NETTABLE_FLG = "N" Then
REM ! Subtrai quantidade reservada.
&QTY_AVAILABLE = 0;
&QTY_RESERVED = &P_QTY_SOLICITADA;
End-If;
REM ******************************************;
REM ! No aceita reserva.
;
REM ******************************************;
If &E_DEST_WIP_LOC_FLG = "N" And
&E_DEST_NETTABLE_FLG = "N" Then
REM ! Subtrai quantidade reservada.
&QTY_AVAILABLE = 0;
&QTY_RESERVED = &P_QTY_SOLICITADA;
End-If;
End-If;

/****************************************************************************
************************************/
/****************************************************************************
************************************/
/****************************************************************************
************************************/
REM ******************************************;
REM ! rea WIP que no aceita reserva.
;
REM ! Regra 04
;
REM ******************************************;
If &E_ORIG_WIP_LOC_FLG = "Y" And
&E_ORIG_NETTABLE_FLG = "N" Then
REM ******************************************;
REM ! WIP / Aceita reserva.
;
REM ******************************************;
If &E_DEST_WIP_LOC_FLG = "Y" And
&E_DEST_NETTABLE_FLG = "Y" Then
REM ! Soma quantidade reservada. ;
&QTY_AVAILABLE = 0;
&QTY_RESERVED = &P_QTY_SOLICITADA * - 1;
End-If;
REM ******************************************;
REM ! No aceita reserva.
;
REM ******************************************;
If &E_DEST_WIP_LOC_FLG = "N" And
&E_DEST_NETTABLE_FLG = "N" Then
REM ! No faz nada. ;
End-If;
REM ******************************************;
REM ! Aceita reserva.
;
REM ******************************************;
If &E_DEST_WIP_LOC_FLG = "N" And
&E_DEST_NETTABLE_FLG = "Y" Then
REM ! Soma quantidade disponivel. ;
&QTY_AVAILABLE = &P_QTY_SOLICITADA * - 1;
&QTY_RESERVED = 0;
End-If;
End-If;
/****************************************************************************
************************************/
/****************************************************************************
************************************/
/****************************************************************************

************************************/
If &QTY_AVAILABLE <> 0 Or
&QTY_RESERVED <> 0 Then

,
,

&SQL
&SQL
";
&SQL
";
&SQL
";
&SQL
";
&SQL
";
&SQL
";

= "";
= &SQL | " UPDATE SYSADM.PS_BU_ITEMS_INV
= &SQL | "

SET QTY_AVAILABLE

= QTY_AVAILABLE -

:1
:2

= &SQL | "

QTY_RESERVED

= QTY_RESERVED

= &SQL | "

DT_TIMESTAMP

= SYSDATE

= &SQL | "

WHERE BUSINESS_UNIT

:3

= &SQL | "

AND INV_ITEM_ID

:4

&sqlStmt = CreateSQL(&SQL, &P_BUSINESS_UNIT, &P_INV_ITEM_ID, &QTY_AVAILABL


E, &QTY_RESERVED);
&sqlStmt.Close();
End-If;
&SQL = "";
&SQL = &SQL | " SELECT MIT.UNIT_MEASURE_STD
&SQL = &SQL | "
FROM SYSADM.PS_MASTER_ITEM_TBL MIT
&SQL = &SQL | " WHERE MIT.SETID
&SQL = &SQL | "
AND MIT.INV_ITEM_ID
&sqlStmt = CreateSQL(&SQL, &P_SETID, &P_INV_ITEM_ID);
&sqlStmt.Fetch(&UNIT_MEASURE_STD);
&sqlStmt.Close();

= :1
= :2

";
";
";
";

&TRANS_DT_TIMESTAMP = %Datetime;
&SQL = "";
&SQL = &SQL | " SELECT CASE WHEN MAX(TI.SEQ_NBR) IS NULL THEN 1 ELSE MAX(TI.
SEQ_NBR) + 1 END ";
&SQL = &SQL | "
FROM SYSADM.PS_TRANSACTION_INV TI
";
&SQL = &SQL | " WHERE TI.BUSINESS_UNIT
= :1
";
&SQL = &SQL | "
AND TI.INV_ITEM_ID
= :2
";
&SQL = &SQL | "
AND TI.DT_TIMESTAMP
= %DateTimeIn(:3)
";
&sqlStmt = CreateSQL(&SQL, &P_BUSINESS_UNIT, &P_INV_ITEM_ID, &TRANS_DT_TIMEST
AMP);
&sqlStmt.Fetch(&TRANS_SEQ_NBR);
&sqlStmt.Close();
If None(&TRANS_SEQ_NBR) Or
&TRANS_SEQ_NBR <= 0 Then

&TRANS_SEQ_NBR = 1;
End-If;
&REC_TRAN = CreateRecord(Record.TRANSACTION_INV);
&REC_TRAN.BUSINESS_UNIT.Value = &P_BUSINESS_UNIT;
&REC_TRAN.INV_ITEM_ID.Value = &P_INV_ITEM_ID;
&REC_TRAN.DT_TIMESTAMP.Value = &TRANS_DT_TIMESTAMP;
&REC_TRAN.SEQ_NBR.Value = &TRANS_SEQ_NBR;
&REC_TRAN.SOURCE_BUS_UNIT.Value = " ";
&REC_TRAN.ORDER_NO.Value = " ";
&REC_TRAN.ORDER_INT_LINE_NO.Value = 0;
&REC_TRAN.SCHED_LINE_NO.Value = 0;
&REC_TRAN.DEMAND_LINE_NO.Value = 0;
&REC_TRAN.STAGED_DATE.Value = Date3(1900, 1, 1);
&REC_TRAN.INV_LOT_ID.Value = "NONE";
&REC_TRAN.SERIAL_ID.Value = "NONE";
&REC_TRAN.STORAGE_AREA.Value = &P_FROM_STORAGE_AREA;
&REC_TRAN.STOR_LEVEL_1.Value = &P_FROM_STOR_LEVEL_1;
&REC_TRAN.STOR_LEVEL_2.Value = &P_FROM_STOR_LEVEL_2;
&REC_TRAN.STOR_LEVEL_3.Value = &P_FROM_STOR_LEVEL_3;
&REC_TRAN.STOR_LEVEL_4.Value = &P_FROM_STOR_LEVEL_4;
&REC_TRAN.CONTAINER_ID.Value = " ";
&REC_TRAN.RECEIVER_ID.Value = " ";
&REC_TRAN.RECV_LN_NBR.Value = 0;
&REC_TRAN.COUNTING_EVENT_ID.Value = 0;
&REC_TRAN.TRANSACTION_GROUP.Value = "060";
&REC_TRAN.TRANSACTION_DATE.Value = %Date;
&REC_TRAN.QTY_BASE.Value = &P_QTY_SOLICITADA;
&REC_TRAN.QTY.Value = &P_QTY_SOLICITADA;
&REC_TRAN.UNIT_MEASURE_STD.Value = &UNIT_MEASURE_STD;
&REC_TRAN.UNIT_OF_MEASURE.Value = &E_ORIG_UNIT_OF_MEASURE;
&REC_TRAN.TO_CONTAINER_ID.Value = " ";
&REC_TRAN.TO_STORAGE_AREA.Value = &P_TO_STORAGE_AREA;
&REC_TRAN.TO_STOR_LEVEL_1.Value = &P_TO_STOR_LEVEL_1;
&REC_TRAN.TO_STOR_LEVEL_2.Value = &P_TO_STOR_LEVEL_2;
&REC_TRAN.TO_STOR_LEVEL_3.Value = &P_TO_STOR_LEVEL_3;
&REC_TRAN.TO_STOR_LEVEL_4.Value = &P_TO_STOR_LEVEL_4;
&REC_TRAN.TO_UOM.Value = &E_ORIG_UNIT_OF_MEASURE;
&REC_TRAN.ADJUST_TYPE.Value = " ";
&REC_TRAN.REASON_CD.Value = " ";
&REC_TRAN.DOCUMENT_ID.Value = " ";
&REC_TRAN.NON_COST_FLAG.Value = " ";
&REC_TRAN.NON_OWN_FLAG.Value = "N";
&REC_TRAN.COSTED_FLAG.Value = "N";
&REC_TRAN.WT_AVE_COST.Value = 0;
&REC_TRAN.OPRID.Value = %UserId;
&REC_TRAN.ACCOUNT.Value = " ";
&REC_TRAN.ALTACCT.Value = " ";
&REC_TRAN.OPERATING_UNIT.Value = " ";
&REC_TRAN.DEPTID.Value = " ";
&REC_TRAN.PRODUCT.Value = " ";
&REC_TRAN.PROJECT_ID.Value = " ";
&REC_TRAN.CURRENCY_CD.Value = "BRL";
&REC_TRAN.STATISTICS_CODE.Value = " ";
&REC_TRAN.PO_ID.Value = " ";
&REC_TRAN.DISTRIB_LINE_NUM.Value = 0;
&REC_TRAN.DISTRIB_SEQ_NUM.Value = 0;
&REC_TRAN.RECV_SHIP_SEQ_NBR.Value = 0;

&REC_TRAN.PRICE_PO.Value = 0;
&REC_TRAN.REQ_ID.Value = " ";
&REC_TRAN.REQ_LINE_NBR.Value = 0;
&REC_TRAN.REQ_SCHED_NBR.Value = 0;
&REC_TRAN.REQ_DISTRIB_NBR.Value = 0;
&REC_TRAN.RMA_ID.Value = " ";
&REC_TRAN.RMA_LINE_NBR.Value = 0;
&REC_TRAN.RTV_ID.Value = " ";
&REC_TRAN.RTV_LN_NBR.Value = 0;
&REC_TRAN.RTV_DISTRIB_NUM.Value = 0;
&REC_TRAN.ACTIVITY_ID.Value = " ";
&REC_TRAN.RESOURCE_TYPE.Value = " ";
&REC_TRAN.RESOURCE_CATEGORY.Value = " ";
&REC_TRAN.RESOURCE_SUB_CAT.Value = " ";
&REC_TRAN.ANALYSIS_TYPE.Value = " ";
&REC_TRAN.INTERUNIT_ID.Value = " ";
&REC_TRAN.INTERUNIT_LINE.Value = 0;
&REC_TRAN.DESTIN_BU.Value = " ";
&REC_TRAN.INSPECTION_ID.Value = " ";
REM &REC_TRAN.LAST_PURCH_DATE
.Value = NULL
&REC_TRAN.TRANSFER_COST.Value = 0;
&REC_TRAN.PURCH_LOT_ID.Value = " ";
&REC_TRAN.VENDOR_ID.Value = " ";
&REC_TRAN.PRODUCTION_ID.Value = " ";
&REC_TRAN.MA_PRDN_ID_FLG.Value = "N";
&REC_TRAN.PRDN_AREA_CODE.Value = " ";
&REC_TRAN.PRODUCTION_TYPE.Value = " ";
&REC_TRAN.PUTAWAY_COMMENT.Value = " ";
&REC_TRAN.STAGED_TYPE.Value = " ";
&REC_TRAN.DISTRIB_TYPE.Value = " ";
REM &REC_TRAN.PO_DT
.Value = NULL
&REC_TRAN.STORAGE_CODE.Value = " ";
&REC_TRAN.INV_STOCK_TYPE.Value = " ";
&REC_TRAN.RECEIPT_TYPE.Value = " ";
&REC_TRAN.BUSINESS_UNIT_PO.Value = " ";
&REC_TRAN.BUSINESS_UNIT_PC.Value = " ";
&REC_TRAN.TRANSACTION_SOURCE.Value = "IN";
&REC_TRAN.CONVERSION_RATE.Value = 0;
&REC_TRAN.EIP_CTL_ID.Value = " ";
&REC_TRAN.EIP_TRANS_SRC.Value = " ";
&REC_TRAN.TRANSACTION_CODE.Value = " ";
&REC_TRAN.BCT_SOURCE.Value = " ";
&REC_TRAN.JOB_INSTANCE.Value = 0;
&REC_TRAN.PROCESS_INSTANCE.Value = 0;
&REC_TRAN.PROCESS_FLAG.Value = "N";
&REC_TRAN.SHIP_ID.Value = " ";
&REC_TRAN.CONSIGNED_FLAG.Value = "N";
&REC_TRAN.TO_CONSIGNED_FLG.Value = "N";
&REC_TRAN.TO_NON_OWN_FLG.Value = "N";
REM &REC_TRAN.BUDGET_DT
.Value = NULL
&REC_TRAN.EXPORT.Value = "N";
&REC_TRAN.REPLACEMENT_FLG.Value = "NA";
&REC_TRAN.IST_RETURN_FLG_IUT.Value = "N";
&REC_TRAN.IST_TXN_FLG.Value = "N";
&REC_TRAN.TRANSFER_COST_DEST.Value = 0;
&REC_TRAN.SF_KANBAN_ID.Value = " ";
&sqlStmt = CreateSQL("%INSERT(:1)");
&sqlStmt.Execute(&REC_TRAN);
&sqlStmt.Close();

&OUT_STATUS_TRANSFERENCIA = "OK";
&OUT_MMC_TRAN_BU = &P_BUSINESS_UNIT;
&OUT_MMC_TRAN_ITEM = &P_INV_ITEM_ID;
&OUT_MMC_TRAN_TIMESTAMP = &TRANS_DT_TIMESTAMP;
&OUT_MMC_TRAN_SEQ_NBR = &TRANS_SEQ_NBR;

End-Function;

/******************************** mmcb.sds3346.EN ******************************


****/
[MMC_IN_RALLYPAR.TOF_PBL.RowInit]
/*******************************************************************************
*****
Wagner Sorio - MMC - 18/03/2008 - mmcb.at2617 - Remessa Rally
Rotina faz envio material para Local estoque parametrizado para Rally
********************************************************************************
*****/
/************************* mmcb.at2617.sn *************************************
*******/
/*
&NUMLINHAS = ActiveRowCount(Record.MMC_IN_RALLYPAR);
If &NUMLINHAS > 1 Then
BUSINESS_UNIT = FetchValue(Record.MMC_IN_RALLYPAR, 1, BUSINESS_UNIT);
STORAGE_AREA = FetchValue(Record.MMC_IN_RALLYPAR, 1, STORAGE_AREA);
STOR_LEVEL_1 = FetchValue(Record.MMC_IN_RALLYPAR, 1, STOR_LEVEL_1);
STOR_LEVEL_2 = FetchValue(Record.MMC_IN_RALLYPAR, 1, STOR_LEVEL_2);
STOR_LEVEL_3 = FetchValue(Record.MMC_IN_RALLYPAR, 1, STOR_LEVEL_3);
STOR_LEVEL_4 = FetchValue(Record.MMC_IN_RALLYPAR, 1, STOR_LEVEL_4);
End-If;
*/
/************************* mmcb.at2617.en *************************************
*******/
[NF_CNFM_BBL_WRK.BUSINESS_UNIT.FieldChange]
AddKeyListItem(NF_HDSR_BBL_VW1.BUSINESS_UNIT,
AddKeyListItem(NF_HDSR_BBL_VW2.BUSINESS_UNIT,
AddKeyListItem(NF_HDSR_BBL_VW3.BUSINESS_UNIT,
AddKeyListItem(NF_HDSR_BBL_VW4.BUSINESS_UNIT,
AddKeyListItem(NF_HDSR_BBL_VW5.BUSINESS_UNIT,
AddKeyListItem(NF_HDSR_BBL_VW6.BUSINESS_UNIT,
AddKeyListItem(NF_HDSR_BBL_VW7.BUSINESS_UNIT,
[NF_CNFM_BBL_WRK.BUSINESS_UNIT.RowInit]
/*BRLOC-BI Localization Release 1
Author: Mrio Tonizza Pereira
Creation Date: 05/10/99
*/
If %PanelGroup = PanelGroup.NF_CNFM_BBL Then

BUSINESS_UNIT);
BUSINESS_UNIT);
BUSINESS_UNIT);
BUSINESS_UNIT);
BUSINESS_UNIT);
BUSINESS_UNIT);
BUSINESS_UNIT);

ScrollFlush(Record.NF_HDR_BBL_VW3);
End-If;
[NF_CNFM_BBL_WRK.CONFIRMED_FLAG.FieldChange]
/*******************************************************************************
*******
Bruno Verosa - MMC - 14/12/2011 mmcb.hd4055 - Customizao para gerar uma nf no peopl
e com algum erro que no valide no Sefaz , tentar confirmar no People este ID , o
People no poder deixar confirmar o ID.
********************************************************************************
********/
/*******************************************************************************
*******
Mauri R. Back - MMC - 23/04/2012 mmcb.hd139017 - Permitir confirmar NF de Rally
nao vai para o triangulus, pois uma serie nova
********************************************************************************
********/
/*******************************************************************************
*******
Filipe/Rosangela Enc.Vinicius Favero - MMC - 30/07/2013 - mmcb.hd179384
Incluir a serie E para no passar pela validao de confirmao da Sefaz, por ser uma
serie de servio.
********************************************************************************
********/
/*
If %Page = Page.NF_CNFM_BBL Then
&BU = FetchValue(Record.NF_HDR_BBL_VW3, CurrentRowNumber(), NF_HDR_BBL_VW3.BU
SINESS_UNIT);
&NF = FetchValue(Record.NF_HDR_BBL_VW3, CurrentRowNumber(), NF_HDR_BBL_VW3.NF
_BRL_ID);
&FLAG = FetchValue(Record.NF_HDR_BBL_VW3, CurrentRowNumber(), CONFIRMED_FLAG)
;
If All(&NF) And
(&FLAG = "Y") Then
SQLExec("SELECT substr(CFO_BRL_CD, 1, 1), NF_BRL_SERIES FROM SYSADM.PS_N
F_HDR_BBL_FS WHERE BUSINESS_UNIT = :1 AND NF_BRL_ID = :2", &BU, &NF, &CFO, &SERI
E);
If &CFO = "7" Then
SQLExec("SELECT 'Y' FROM SYSADM.PS_MMC_NF_EXP_HDR WHERE
BUSINESS_UNIT = :1 AND NF_BRL_ID = :2", &BU, &NF, &SPED);
If All(&SPED) Then
UpdateValue(CONFIRMED_FLAG, CurrentRowNumber(),
"Y");
Else
WinMessage("A Nota Fiscal de ID : " | &NF | " no
pode ser confirmada devido a falta de informaes de SPED.);
UpdateValue(CONFIRMED_FLAG, CurrentRowNumber(),
"N");
End-If;
Else
UpdateValue(CONFIRMED_FLAG, CurrentRowNumber(), "Y");
End-If;
End-If;
End-If;

*/
/************************************************************************mmcb.sd
s4055.sn*/
If %Page = Page.NF_CNFM_BBL Then
&FLAG = FetchValue(Record.NF_HDR_BBL_VW3, CurrentRowNumber(), CONFIRMED_FLAG)
;
&BU = FetchValue(Record.NF_HDR_BBL_VW3, CurrentRowNumber(), NF_HDR_BBL_VW3.BU
SINESS_UNIT);
&NF_ID = FetchValue(Record.NF_HDR_BBL_VW3, CurrentRowNumber(), NF_HDR_BBL_VW3
.NF_BRL_ID);
&NF = FetchValue(Record.NF_HDR_BBL_VW3, CurrentRowNumber(), NF_HDR_BBL_VW3.NF
_BRL);
&SERIE_DOC_FISC = FetchValue(Record.NF_HDR_BBL_VW3, CurrentRowNumber(), NF_HD
R_BBL_VW3.NF_BRL_SERIES);
&STAT100 = "N";
SQLExec("SELECT 'Y' FROM SYSADM.PS_MMC_NFE_CH_ACES WHERE BUSINESS_UNIT = :1 A
ND NF_BRL_ID = :2", &BU, &NF_ID, &STAT100);
If &FLAG = "Y" And
&STAT100 <> "Y"
&SERIE_DOC_FISC
&SERIE_DOC_FISC
&SERIE_DOC_FISC
&SERIE_DOC_FISC
&SERIE_DOC_FISC
&SERIE_DOC_FISC

And
<> "A" And
<> "D1" And
<> "D2" And
<> "0" And
<> "E" And /*mmcb.hd179384.ln*/
<> "A1" Then

CONFIRMED_FLAG = "N";
WinMessage("A Nota Fiscal: " | &NF_ID | " no obteve confirmao da Sefaz.");
End-If;
End-If;
/************************************************************************mmcb.sd
s4055.en*/
[NF_CNFM_BBL_WRK.CONFIRMED_FLAG.RowInit]
Gray(CONFIRMED_FLAG);
[NF_CNFM_BBL_WRK.CONFIRMED_FLAG.SaveEdit]
/********************Begin Localization**************************
|| BRLOC-BI Localization Release 1
|| Rotina que
|| 1. Confere a somatoria das linhas de distribuio por linha de NF
|| Author: Florival Athaide
================================================================*/
Global number &SUMLANC;
Global number &LINHANOTA;
If %Page = Page.NF_CNFM_BBL Then
&BU = FetchValue(Record.NF_HDR_BBL_VW3, CurrentRowNumber(), NF_HDR_BBL_VW3.BU
SINESS_UNIT);
&NF = FetchValue(Record.NF_HDR_BBL_VW3, CurrentRowNumber(), NF_HDR_BBL_VW3.NF
_BRL_ID);
&FLAG = FetchValue(Record.NF_HDR_BBL_VW3, CurrentRowNumber(), CONFIRMED_FLAG)
;

If All(&NF) And
(&FLAG = "Y") Then
/*** JEISON CALDAS - 31/03/09 - HD 65595 - SOLICITADO PELO DARIO RETIRAR C
USTOMIZAO DA PRODUO - INICIO SQLExec("SELECT substr(CFO_BRL_CD, 1, 1) FROM SYSADM.PS_NF_HDR_BBL_FS WHERE BU
SINESS_UNIT = :1 AND NF_BRL_ID = :2", &BU, &NF, &CFO);
If &CFO = "7" Then
SQLExec("SELECT 'Y' FROM SYSADM.PS_MMC_NF_EXP_HDR WHERE BUSINESS_UNIT =
:1 AND NF_BRL_ID = :2", &BU, &NF, &SPED);
If All(&SPED) Then
UpdateValue(CONFIRMED_FLAG, CurrentRowNumber(), "Y");
Else
Error "A Nota Fiscal de ID : " | &NF | " no pode ser confirmada devid
o a falta de informaes de SPED.";
UpdateValue(CONFIRMED_FLAG, CurrentRowNumber(), "N");
End-If;
Else
UpdateValue(CONFIRMED_FLAG, CurrentRowNumber(), "Y");
End-If;
- JEISON CALDAS - 31/03/09 - HD 65595 - SOLICITADO PELO DARIO RETIRAR CUST
OMIZAO DA PRODUO - FIM ***/
UpdateValue(CONFIRMED_FLAG, CurrentRowNumber(), "Y");
End-If;
End-If;
[NF_CNFM_BBL_WRK.CONFIRMED_FLAG.SavePostChange]
/********************Begin Localization**************************
|| BRLOC-BI Localization Release 1
|| Rotina que
|| 1. Confere a somatoria das linhas de distribuio por linha de NF
|| 2. Muda o status do NF_HDR_BRL.NF_STATUS_BBL para 'CNFM' (Confirmed)
||
e as datas de confirmaao para do dia e de contabilizacao para a
||
data de emisso (ISSUE_DT)
|| 3. Muda o status RMNEIO_LINE_BBL.INF_PRC_STATUS_BBL para 'I' (Invoiced)
|| 4. Caso todas as linhas do romaneio estejam 'I' mudar o RMNEIO_STATUS_BBL
||
para 'SHP'(Shipped)
|| 5. Atualiza o BILLING_STATUS da PS_SHIP_INF_INV caso todos os romaneios
||
estejam com INF_PRC_STATUS_BBL = Invoiced
|| Author: Florival Athaide
================================================================*/
/*******************************************************************************
**********
* Wagner Sorio - MMC - 18/10/2007 - mmcb.at2323 - Sistema Controle Terceiros
*
* Rotina de gravao da NF na tabela de transao de terceiros.
*
*******************************************************************************
**********/
/*******************************************************************************
**********
* Wagner Sorio - MMC - 18/03/2008 - mmcb.at2617 - Remessa Rally
*
* Rotina faz envio material para Local estoque parametrizado para Rally.

*
*******************************************************************************
**********/
/*******************************************************************************
**********
* Claudio Henrique da Costa - MMC - 27/05/2008 - mmcb.sds2736
*
* Alterao para que embarques no apaream para reduo aps terem sido reduzidos.
*******************************************************************************
**********/
/*******************************************************************************
**********
* Wagner Sorio - MMC - 29/05/2008 - mmcb.sds2618
*
* Retorno Rally
*
*******************************************************************************
**********/
/*******************************************************************************
**********
* Wagner Sorio - MMC - 19/08/2008 - mmcb.sds2720
*
* Parametrizao Tipo de Distribuio Remessa Rally.
*
*******************************************************************************
**********/
/*******************************************************************************
**********
* Wagner Sorio - MMC - 26/08/2008 - mmcb.hd54903
*
* Correo rotina evio NF para ITERC.
*
* Na Confirmao da NF no estava sendo gravado saldo Tabelas Terceiros.
*
*******************************************************************************
**********/
/*******************************************************************************
**********
* Wagner Sorio/Claudio Henrique da Costa - MMC - 22/09/2008 - mmcb.hd56098
*
* Na Confirmao da NF no confirmar NFs de Terceiros que no tenha Solicitao
*
* identificada.
*
*******************************************************************************
**********/
/*******************************************************************************
**********
* Gustavo V. Neto - MMCB - 30/10/2009 - mmcb.sds3239
*
* Projeto Implantao People - Multi Empresa MMCB-SVB.
*
*******************************************************************************
**********/
/*******************************************************************************
**********
* JC800888 Jeison Caldas - 26.11.09 - SDS 3085
*
* Correo SDS2440 - Customizao no considerava mais de uma linha de ativo na nota
*

* fiscal.
*
*******************************************************************************
**********/
/*******************************************************************************
**********
* Itamar Junior - MMCB - 19/08/2009 - mmcb.hd73211
*
* Ajuste para evitar lanamentos duplicados na tabela de transao de terceiros
*
*******************************************************************************
**********/
/*******************************************************************************
**********
* Vincius Alves Mello - MMCB - 23/11/2010 - mmcb.sds3686
*
* Atualizar MMC_ASSET_LOC, quando um ativo for movimentado
*
*******************************************************************************
**********/
/*******************************************************************************
**********
* Mauri/Adercley (Enc. Filipe Rehder) - MMCB - 27/07/2012
- mmcb.hd147325
*
* Otimizar update em embarques de confirmao de NF devido a lentido
*
*******************************************************************************
**********/
/*******************************************************************************
**********
* Vincius Alves Mello - MMC - mmcb.sds4613 - 31/10/2013
*
* Otimizar Completar NF, devido ao processo que gera a 030 na tabela MMC_TE_CON
TR_MT. *
*******************************************************************************
**********/
/*******************************************************************************
**********
* Fernando Camarinha - MMCB - 18/10/2012
- mmcb.sds3884
*
* Novo Sistema de Controle de Pagamentos Comisses de Venda
*
*******************************************************************************
**********/
/*******************************************************************************
**********
* Vincius Alves Mello - MMC - mmcb.sds5105 - 26/01/2015
*
* Ajustes controle de terceiros em nosso poder.
*
*******************************************************************************
**********/
/*******************************************************************************
**********
* Bleno L Sampaio - MMC - mmcb.sds5222 - 23/04/2015
*
* Projeto FWA - Interface de dados de Terceiros entre empresas do grupo
*
*******************************************************************************
**********/

Declare Function BUSCA_SETID PeopleCode MMC_BU_SETID.SETID SavePreChange; /* mmc


b.sds3239.ln */
/************************************************************************
* Wagner Sorio - MMCB - 01/09/2014 - mmcb.sds4689
*
* Implantao do People DBME
*
*************************************************************************/
/* Declare Function BU_SETID PeopleCode MMC_BU_SETID.SETID SavePreChange; */ /*
mmcb.sds4689.lo */

Declare Function GRAVA_TRANSACTION PeopleCode MMC_IN_LIB.FUNCLIB SavePostChange;


Declare Function nf_derived_generate PeopleCode FUNCLIB_OF.FLOW_ID_BBL FieldForm
ula;
Local SQL &SQL_DEMAND; /* ******* mmcb.AT1831 - L.N ******* */
/************************* mmcb.at2323.sn *************************************
*******/
Declare Function REDUCAO_ESTOQUE PeopleCode MMC_IN_LIB.FUNCLIB SavePostChange;
Declare Function ENTRADA_ESTOQUE PeopleCode MMC_IN_LIB.FUNCLIB SavePostChange;
Declare Function GRAVA_SALDO_NF_TERCEIRO PeopleCode MMC_TE_WRK.FUNCLIB SavePostC
hange;
Declare Function BUSCA_CUSTO_ITEM PeopleCode MMC_IN_LIB.FUNCLIB SavePostChange;
Local Rowset &RS0, &RS1;
Local Record &RC2;
/************************* mmcb.at2323.en *************************************
*******/
/************************* mmcb.sds2618.sn ************************************
********/
Declare Function GRAVA_MMC_TE_TRANSAC PeopleCode MMC_TE_WRK.FUNCLIB SavePostChan
ge;
Declare Function GRAVA_SALDO_LN_RALLY PeopleCode MMC_RT_RALLY_WK.FUNCLIB SavePos
tChange;
Declare Function GRAVA_SALDO_H_RALLY PeopleCode MMC_RT_RALLY_WK.FUNCLIB SavePost
Change;
Declare Function BAIXA_ESTOQUE PeopleCode MMC_IN_LIB.FUNCLIB SavePostChange;
Declare Function CHECA_RETORNO_OPERACAO_PARAM PeopleCode MMC_RT_RALLY_WK.FUNCLIB
SavePostChange;
Declare Function CHECA_REMESSA_OPERACAO_PARAM PeopleCode MMC_RT_RALLY_WK.FUNCLIB
SavePostChange;
/************************* mmcb.sds2618.en ************************************
********/
/************************* mmcb.sds2720.sn ************************************
********/
Declare Function GRAVA_DISTRIB_TYPE_REMESSA PeopleCode MMC_RT_RALLY_WK.FUNCLIB S
avePostChange;
/************************* mmcb.sds2720.en ************************************
********/
/************************* mmcb.sds2946.sn ************************************
********/
/*Declare Function GRAVA_CONTROLE_MAT_TERC PeopleCode MMC_IN_LIB.FUNCLIB SavePos
tChange;*/ /*mmcb.sds4613.lo*/

/************************* mmcb.sds2946.en ************************************


********/
/************************* mmcb.sds5222.sn ************************************
********/
Declare Function fncMontaSQLParamEDI PeopleCode MMC_PAR_EDI_HDR.BUSINESS_UNIT Fi
eldFormula;
Declare Function fncBuscaCnpjEDI PeopleCode MMC_PAR_EDI_HDR.BUSINESS_UNIT FieldF
ormula;
Declare Function fncGetStausEDI PeopleCode MMC_PAR_EDI_HDR.BUSINESS_UNIT FieldFo
rmula;
/************************* mmcb.sds5222.en ************************************
********/
/************************************* mmcb.sds4613.sn *************************
************/
/*Verifica se o cdigo esta sendo executado na pgina de Confirmar NF*/
If %Component = "NF_CNFM_BBL" Then
/*Verifica se o usurio deseja confirmar a NF da linha atual*/
If CONFIRMED_FLAG = "Y" Then
/*Recupera o SetId Geral*/
&SETID = BUSCA_SETID();
/*Verifica se a nota fiscal possui uma solicitao eletronica de devoluo de mate
rial de terceiro em nosso poder*/
SQLExec("SELECT A.MMC_TE_SOL_ID FROM SYSADM.PS_MMC_TE_SOL_HDR A, SYSADM.PS
_MMC_TE_SOL_LN B WHERE A.SETID = :1 AND A.MMC_TE_SOL_STATUS <> '5' AND A.BUSINES
S_UNIT_BI = :2 AND A.NF_BRL_ID = :3 AND B.SETID = A.SETID AND B.MMC_TE_SOL_ID =
A.MMC_TE_SOL_ID AND B.MMC_TE_SOL_BUS_UN <> ' ' AND B.MMC_TE_SOL_NF_ID <> ' ' AND
B.MMC_TE_SOL_LN_NF <> 0 AND B.BUSINESS_UNIT_BI = :2 AND B.NF_BRL_ID = :3 AND RO
WNUM = 1", &SETID, NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &MMC_
TE_SOL_ID);
If All(&MMC_TE_SOL_ID) Then
/*Monta o insert da 030 na MMC_TE_CONTR_MT*/
&SQL = "";
&SQL = &SQL | " INSERT INTO SYSADM.PS_MMC_TE_CONTR_MT ";
&SQL = &SQL | " SELECT TCM.BUSINESS_UNIT ";
&SQL = &SQL | " , TCM.NF_BRL_ID ";
&SQL = &SQL | " , TCM.NF_BRL_LINE_NUM ";
&SQL = &SQL | " , SYSDATE
AS DT_TIMESTAMP ";
&SQL = &SQL | " , ROWNUM
AS SEQ_NBR ";
&SQL = &SQL | " , TCM.NF_BRL ";
&SQL = &SQL | " , TCM.NF_BRL_SERIES ";
&SQL = &SQL | " , TCM.INV_ITEM_ID ";
&SQL = &SQL | " , TCM.DESCR ";
&SQL = &SQL | " , TCM.SHIPTO_ID ";
&SQL = &SQL | " , TCM.VENDOR_ID ";
&SQL = &SQL | " , TCM.NF_BRL_DATE ";
&SQL = &SQL | " , '030'
AS TRANSACTION_GROUP ";
&SQL = &SQL | " , TRUNC(SYSDATE)
AS TRANSACTION_DATE ";
&SQL = &SQL | " , TCM.TAX_CLASS_BRL ";
&SQL = &SQL | " , LN.TOF_PBL ";
&SQL = &SQL | " , ' '
AS SOURCE_BUS_UNIT ";
&SQL = &SQL | " , ' '
AS ORDER_NO ";

&SQL = &SQL | " , 0


AS ORDER_INT_LINE_NO ";
&SQL = &SQL | " , HDR.BUSINESS_UNIT
AS BUSINESS_UNIT_BI ";
&SQL = &SQL | " , HDR.NF_BRL_ID
AS MMC_NF_BRL_ID_OUT ";
&SQL = &SQL | " , LN.NF_BRL_LINE_NUM AS MMC_LINE_NUM_OUT ";
&SQL = &SQL | " , HDR.SHIP_TO_CUST_ID AS CUST_ID ";
&SQL = &SQL | " , ' '
AS MMC_TIPO_AJUST ";
&SQL = &SQL | " , :1
AS OPRID ";
&SQL = &SQL | " , ' '
AS ACCOUNT ";
&SQL = &SQL | " , IIU.UNIT_OF_MEASURE AS UNIT_OF_MEASURE ";
&SQL = &SQL | " , ' '
AS MMC_OBS_AJUST ";
&SQL = &SQL | " , ((LN.QTY_NF_BRL * DECODE(IIU.UNIT_OF_MEASURE,IIUP.UNI
T_OF_MEASURE,1,IIU.CONVERSION_RATE)) * -1)
AS MMC_ISSUE_QTY ";
&SQL = &SQL | " , (LN.QTY_NF_BRL * DECODE(IIU.UNIT_OF_MEASURE,IIUP.UNIT
_OF_MEASURE,1,IIU.CONVERSION_RATE))
AS QTY_NF_BRL ";
&SQL = &SQL | " , (LN.UNIT_AMT_BSE_BBL / DECODE(IIU.UNIT_OF_MEASURE,IIU
P.UNIT_OF_MEASURE,1,IIU.CONVERSION_RATE))
AS UNIT_PRICE ";
&SQL = &SQL | " , ((LN.QTY_NF_BRL * DECODE(IIU.UNIT_OF_MEASURE,IIUP.UNI
T_OF_MEASURE,1,IIU.CONVERSION_RATE)) * (LN.UNIT_AMT_BSE_BBL / DECODE(IIU.UNIT_OF
_MEASURE,IIUP.UNIT_OF_MEASURE,1,IIU.CONVERSION_RATE))) AS MERCHANDISE_AMT ";
&SQL = &SQL | " FROM SYSADM.PS_NF_HDR_BRL
HDR ";
&SQL = &SQL | " ,
SYSADM.PS_NF_LN_BRL
LN ";
&SQL = &SQL | " ,
SYSADM.PS_INV_ITEM_UOM
IIU ";
&SQL = &SQL | " ,
SYSADM.PS_INV_ITEM_UOM
IIUP ";
&SQL = &SQL | " ,
SYSADM.PS_TOF_TYPE_PBL
TOF ";
&SQL = &SQL | " ,
SYSADM.PS_MMC_TE_TOF_TYPE TOF_MMC ";
&SQL = &SQL | " ,
SYSADM.PS_MMC_TE_SOL_HDR
SOL_HDR ";
&SQL = &SQL | " ,
SYSADM.PS_MMC_TE_SOL_LN
SOL_LN ";
&SQL = &SQL | " ,
SYSADM.PS_MMC_TE_CONTR_MT TCM ";
&SQL = &SQL | " WHERE HDR.BUSINESS_UNIT
= :2 ";
&SQL = &SQL | " AND HDR.NF_BRL_ID
= :3 ";
&SQL = &SQL | " AND HDR.BUSINESS_UNIT
= LN.BUSINESS_UNIT ";
&SQL = &SQL | " AND HDR.NF_BRL_ID
= LN.NF_BRL_ID ";
&SQL = &SQL | " AND IIU.SETID
= :4 ";
&SQL = &SQL | " AND IIU.INV_ITEM_ID
= LN.INV_ITEM_ID ";
&SQL = &SQL | " AND IIU.UNIT_OF_MEASURE
= LN.UNIT_OF_MEASURE ";
&SQL = &SQL | " AND IIUP.SETID
= :4 ";
&SQL = &SQL | " AND IIUP.INV_ITEM_ID
= LN.INV_ITEM_ID ";
&SQL = &SQL | " AND IIUP.DFLT_UOM_STOCK
= 'Y' ";
&SQL = &SQL | " AND LN.TOF_PBL
= TOF.TOF_PBL ";
&SQL = &SQL | " AND LN.TOF_PBL
= TOF_MMC.TOF_PBL
";
&SQL = &SQL | " AND TOF_MMC.MMC_MERC_TERC
= 'Y' ";
&SQL = &SQL | " AND TOF.EFFDT
= TOF_MMC.EFFDT
";
&SQL = &SQL | " AND TOF.EFF_STATUS
= 'A' ";
&SQL = &SQL | " AND TOF.TOF_PBL
= TOF_MMC.TOF_PBL ";
&SQL = &SQL | " AND TOF.EFFDT
= ( ";
&SQL = &SQL | "
SELECT M
AX(XTOF.EFFDT) ";
&SQL = &SQL | "
FROM SYS
ADM.PS_TOF_TYPE_PBL XTOF ";
&SQL = &SQL | "
WHERE XT
OF.EFFDT
= TOF.EFFDT ";
&SQL = &SQL | "
AND XT
OF.TOF_PBL
= TOF.TOF_PBL ";
&SQL = &SQL | "
AND XT
OF.EFF_STATUS = 'A' ";
&SQL = &SQL | "
) ";
&SQL = &SQL | " AND SOL_HDR.BUSINESS_UNIT_BI = HDR.BUSINESS_UNIT ";
&SQL = &SQL | " AND SOL_HDR.NF_BRL_ID
= HDR.NF_BRL_ID ";

&SQL = &SQL | " AND


&SQL = &SQL | " AND

SOL_HDR.SETID
SOL_HDR.MMC_TE_SOL_ID

= SOL_LN.SETID ";
= SOL_LN.MMC_TE_SOL_ID

&SQL = &SQL | " AND

LN.BUSINESS_UNIT

= SOL_LN.BUSINESS_UNIT_

&SQL = &SQL | " AND


&SQL = &SQL | " AND

LN.NF_BRL_ID
LN.NF_BRL_LINE_NUM

= SOL_LN.NF_BRL_ID ";
= SOL_LN.NF_BRL_LINE_NU

&SQL = &SQL | " AND


&SQL = &SQL | " AND

MMC_TE_SOL_STATUS
LN.INV_ITEM_ID

<> '5' ";


= SOL_LN.INV_ITEM_ID "

&SQL
&SQL
&SQL
&SQL

SOL_LN.MMC_TE_SOL_BUS_UN
SOL_LN.MMC_TE_SOL_NF_ID
SOL_LN.MMC_TE_SOL_LN_NF
TCM.BUSINESS_UNIT

";
BI ";
M ";
;
=
=
=
=

&SQL
&SQL
&SQL
&SQL

|
|
|
|

"
"
"
"

AND
AND
AND
AND

<>
<>
<>
=

' ' ";


' ' ";
0 ";
SOL_LN.MMC_TE_SOL_BUS

_UN ";
&SQL = &SQL | " AND

TCM.NF_BRL_ID

= SOL_LN.MMC_TE_SOL_NF_

&SQL = &SQL | " AND

TCM.NF_BRL_LINE_NUM

= SOL_LN.MMC_TE_SOL_LN_

&SQL = &SQL | " AND


&SQL = &SQL | " AND
&SQL = &SQL | "

TCM.TRANSACTION_GROUP
NOT EXISTS

= '020' ";
( ";

ID ";
NF ";
SELECT '

Y' ";
&SQL = &SQL |
ADM.PS_MMC_TE_CONTR_MT
&SQL = &SQL |
CM.BUSINESS_UNIT
=
&SQL = &SQL |
CM.NF_BRL_ID
=
&SQL = &SQL |
CM.NF_BRL_LINE_NUM =
&SQL = &SQL |
CM.TRANSACTION_GROUP =
&SQL = &SQL |
CM.BUSINESS_UNIT_BI =
&SQL = &SQL |
CM.MMC_NF_BRL_ID_OUT =
&SQL = &SQL |
CM.MMC_LINE_NUM_OUT =
&SQL = &SQL |
SQLExec(&SQL,
.NF_BRL_ID, &SETID);

"
FROM SYS
XTCM ";
"
WHERE XT
TCM.BUSINESS_UNIT ";
"
AND XT
TCM.NF_BRL_ID ";
"
AND XT
TCM.NF_BRL_LINE_NUM ";
"
AND XT
'030' ";
"
AND XT
HDR.BUSINESS_UNIT ";
"
AND XT
HDR.NF_BRL_ID ";
"
AND XT
LN.NF_BRL_LINE_NUM ";
"
) ";
%OperatorId, NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3

/*Atualiza o status da solicitao para faturada*/


SQLExec("UPDATE SYSADM.PS_MMC_TE_SOL_HDR SET MMC_TE_SOL_STATUS = '5' WH
ERE SETID = :1 AND MMC_TE_SOL_ID = :2", &SETID, &MMC_TE_SOL_ID);
End-If;
End-If;
End-If;
/************************************* mmcb.sds4613.en *************************
************/

/************************************* mmcb.sds4613.so *************************


************/

/************************* MMCB.AT2946.SN **************************************


*******/
/*
If %Component = "NF_CNFM_BBL" Then
If %Page = Page.NF_CNFM_BBL Then
If CONFIRMED_FLAG = "Y" Then
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
*/
REM
REM
REM
REM
/*

&SQL
&SQL
&SQL
&SQL

=
=
=
=
=
=
=
=
=
=
=
=

&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

=
=
=
=

E_AMT

"";
" SELECT
&SQL | "
&SQL | "
&SQL | "
&SQL | "
&SQL | "
&SQL | "
&SQL | "
&SQL | "
&SQL | "
&SQL | "
&SQL
&SQL
&SQL
&SQL

=
=
=
=
=
=
=
=

&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

|
|
|
|

"
"
"
"

DISTINCT ";
SOL_HDR.SETID, ";
SOL_HDR.MMC_TE_SOL_ID, ";
LN.TOF_PBL, ";
SOL_LN.MMC_TE_SOL_BUS_UN, ";
SOL_LN.MMC_TE_SOL_NF_ID, ";
SOL_LN.MMC_TE_SOL_LN_NF, ";
SOL_LN.MMC_TE_SOL_NF_FORN , ";
SOL_LN.MMC_TE_SOL_SE_FORN, ";
LN.INV_ITEM_ID, ";
LN.QTY_NF_BRL, ";

|
|
|
|
|
|
|
|

LN.DESCR, ";
HDR_IN.NF_BRL_DATE, ";
HDR_IN.VENDOR_ID, ";
LN_IN.TAX_CLASS_BRL, ";
"
"
"
"
"
"
"
"

HDR.BUSINESS_UNIT, ";
HDR.NF_BRL_ID, ";
LN.NF_BRL_LINE_NUM, ";
HDR.SHIP_TO_CUST_ID, ";
SOL_HDR.OPRID, ";
LN.UNIT_OF_MEASURE, ";
SOL_LN.MONETARY_AMOUNT, ";
(LN.QTY_NF_BRL * SOL_LN.MONETARY_AMOUNT) AS MERCHANDIS

";

&SQL = &SQL | " FROM ";


&SQL = &SQL | "
SYSADM.PS_NF_HDR_BRL HDR , ";
&SQL = &SQL | "
SYSADM.PS_NF_LN_BRL LN, ";
&SQL = &SQL | "
SYSADM.PS_TOF_TYPE_PBL TOF, ";
&SQL = &SQL | "
SYSADM.PS_MMC_TE_TOF_TYPE TOF_MMC, ";
&SQL = &SQL | "
SYSADM.PS_MMC_TE_SOL_HDR SOL_HDR, ";
&SQL = &SQL | "
SYSADM.PS_MMC_TE_SOL_LN SOL_LN ";
&SQL = &SQL | " WHERE ";
&SQL = &SQL | "
HDR.BUSINESS_UNIT
= '" | NF_HDR_BBL_VW3.
BUSINESS_UNIT | "'";
&SQL = &SQL | " AND HDR.NF_BRL_ID
= '" | NF_HDR_BBL_VW3.
NF_BRL_ID | "'";
&SQL = &SQL | " AND HDR.BUSINESS_UNIT
= LN.BUSINESS_UNIT ";
&SQL = &SQL | " AND HDR.NF_BRL_ID
= LN.NF_BRL_ID ";
&SQL = &SQL | " AND LN.TOF_PBL
= TOF.TOF_PBL ";
&SQL = &SQL | " AND LN.TOF_PBL
= TOF_MMC.TOF_PBL ";
&SQL = &SQL | " AND TOF_MMC.MMC_MERC_TERC
= 'Y' ";
&SQL = &SQL | " AND TOF.EFFDT
= TOF_MMC.EFFDT ";
&SQL = &SQL | " AND TOF.EFF_STATUS
= 'A' ";
&SQL = &SQL | " AND TOF.TOF_PBL
= TOF_MMC.TOF_PBL ";
&SQL = &SQL | " AND TOF.EFFDT = (SELECT MAX(EFFDT) FROM SYSADM.PS_TO
F_TYPE_PBL X WHERE TOF.EFFDT
= X.EFFDT AND TOF.TOF_PBL
= X.TOF_PBL AND
X.EFF_STATUS
= 'A' )";
&SQL = &SQL | " AND SOL_HDR.BUSINESS_UNIT_BI = HDR.BUSINESS_UNIT ";
&SQL = &SQL | " AND SOL_HDR.NF_BRL_ID
= HDR.NF_BRL_ID
";

&SQL = &SQL | " AND SOL_HDR.SETID


&SQL = &SQL | " AND SOL_HDR.MMC_TE_SOL_ID

= SOL_LN.SETID ";
= SOL_LN.MMC_TE_SOL_ID

";
*/
/************************* mmcb.hd74408.sn *************************************
********/
/*&SQL = &SQL | " AND SOL_LN.QTY
= LN.QTY_NF_BRL ";
&SQL = &SQL | " AND SOL_LN.QTY * SOL_LN.MONETARY_AMOUNT = LN.MERCH_
AMT_BSE ";
*/
/*
&SQL = &SQL | " AND LN.BUSINESS_UNIT
= SOL_LN.BUSINESS_
UNIT_BI ";
&SQL = &SQL | " AND LN.NF_BRL_ID
= SOL_LN.NF_BRL_ID
";
&SQL = &SQL | " AND LN.NF_BRL_LINE_NUM
= SOL_LN.NF_BRL_LI
NE_NUM ";
*/
/************************* mmcb.hd74408.en *************************************
********/
/************************* mmcb.hd73211.sn *************************************
********/
/*
&SQL = &SQL | " AND MMC_TE_SOL_STATUS
<> '5' ";
*/
/************************* mmcb.hd73211.eo *************************************
********/
/*
&SQL = &SQL | " AND LN.INV_ITEM_ID

= SOL_LN.INV_ITEM_ID

";
&SQL = &SQL | " AND SOL_LN.MMC_TE_SOL_BUS_UN
&SQL = &SQL | " AND SOL_LN.MMC_TE_SOL_NF_ID
&SQL = &SQL | " AND SOL_LN.MMC_TE_SOL_LN_NF
&contSQL = CreateSQL(&SQL);

<> ' ' ";


<> ' ' ";
<> 0 ";

&TEMP = "X";
While &contSQL.Fetch(&CONTR_SOL_SETID, &CONTR_SOL_ID, &CONTR_TOF_PBL,
&CONTR_MMC_TE_SOL_BUS_UN, &CONTR_MMC_TE_SOL_NF_ID, &CONTR_MMC_TE_SOL_LN_NF, &CON
TR_MMC_TE_SOL_NF_FORN, &CONTR_MMC_TE_SOL_SE_FORN, &CONTR_INV_ITEM_ID, &CONTR_QTY
_NF_BRL, &CONTR_BUSINESS_UNIT, &CONTR_NF_BRL_ID, &CONTR_NF_BRL_LINE_NUM, &CONTR_
SHIP_TO_CUST_ID, &CONTR_OPRID, &CONTR_UNIT_OF_MEASURE, &CONTR_UNIT_PRICE, &CONTR
_MERCHANDISE_AMT)
&SQL1 = "";
&SQL1 = &SQL1 | " SELECT
";
&SQL1 = &SQL1 | " B.DESCR,
";
&SQL1 = &SQL1 | " %DATEOUT(A.NF_BRL_DATE),
";
&SQL1 = &SQL1 | " A.VENDOR_ID,
";
&SQL1 = &SQL1 | " B.TAX_CLASS_BRL
";
&SQL1 = &SQL1 | " FROM
";

&SQL1 = &SQL1 | " SYSADM.PS_NF_HDR_BRL A,


";
&SQL1 = &SQL1 | " SYSADM.PS_NF_LN_BRL B
";
&SQL1 = &SQL1 | " WHERE
";
&SQL1 = &SQL1 | "
A.BUSINESS_UNIT
E_SOL_BUS_UN | "'";
&SQL1 = &SQL1 | " AND A.NF_BRL_ID
E_SOL_NF_ID | "'";
&SQL1 = &SQL1 | " AND A.BUSINESS_UNIT
";
&SQL1 = &SQL1 | " AND A.NF_BRL_ID
";
&SQL1 = &SQL1 | " AND B.NF_BRL_LINE_NUM
E_SOL_LN_NF | "'";

'" | &CONTR_MMC_T

'" | &CONTR_MMC_T

B.BUSINESS_UNIT

B.NF_BRL_ID

'" | &CONTR_MMC_T

&contSQL1 = CreateSQL(&SQL1);
&contSQL1.Fetch(&CONTR_DESCR, &CONTR_NF_BRL_DATE, &CONTR_VENDOR_ID,
&CONTR_TAX_CLASS_BRL);
&CONTR_TRANSACTION_GROUP = "030";
&CONTR_TRANSACTION_DATE = %Date;
&CONTR_SOURCE_BUS_UNIT = " ";
&CONTR_ORDER_NO = " ";
&CONTR_ORDER_INT_LINE_NO = 0;
&CONTR_ACCOUNT = " ";
&CONTR_MMC_TIPO_AJUST = " ";
&CONTR_MMC_OBS_AJUST = " ";
&CONTR_SHIPTO_ID = " ";
&CONTR_MMC_ISSUE_QTY = &CONTR_QTY_NF_BRL * - 1;
If All(&CONTR_SOL_ID) And
&TEMP = "X" Then
SQLExec("update sysadm.ps_mmc_te_sol_hdr set mmc_te_sol_status='
5' where setid= :1 and mmc_te_sol_id=:2", &CONTR_SOL_SETID, &CONTR_SOL_ID);
&TEMP = "Y";
End-If;

GRAVA_CONTROLE_MAT_TERC(&CONTR_MMC_TE_SOL_BUS_UN, &CONTR_MMC_TE_SOL
_NF_ID, &CONTR_MMC_TE_SOL_LN_NF, &CONTR_MMC_TE_SOL_NF_FORN, &CONTR_MMC_TE_SOL_SE
_FORN, &CONTR_INV_ITEM_ID, &CONTR_DESCR, &CONTR_VENDOR_ID, &CONTR_NF_BRL_DATE, &
CONTR_TRANSACTION_GROUP, &CONTR_TRANSACTION_DATE, &CONTR_TAX_CLASS_BRL, &CONTR_T
OF_PBL, &CONTR_SOURCE_BUS_UNIT, &CONTR_ORDER_NO, &CONTR_ORDER_INT_LINE_NO, &CONT
R_BUSINESS_UNIT, &CONTR_NF_BRL_ID, &CONTR_NF_BRL_LINE_NUM, &CONTR_SHIP_TO_CUST_I
D, &CONTR_ACCOUNT, &CONTR_MMC_TIPO_AJUST, &CONTR_OPRID, &CONTR_UNIT_OF_MEASURE,
&CONTR_MMC_OBS_AJUST, &CONTR_MMC_ISSUE_QTY, &CONTR_QTY_NF_BRL, &CONTR_UNIT_PRICE
, &CONTR_MERCHANDISE_AMT, &CONTR_SHIPTO_ID);
End-While;
End-If;

End-If;
End-If;
*/
/************************* MMCB.AT2946.EN **************************************
*******/
/************************************* mmcb.sds4613.eo *************************
************/

If CONFIRMED_FLAG = "Y" Then


SEL = "Y";
/*1. Confere a somatoria das linhas de distribuio por linha de NF */
&LINHASNIVEL1 = ActiveRowCount(Record.NF_HDR_BBL_VW3);
For &I = 1 To &LINHASNIVEL1
/*** Resolve NFs derivadas - Operaes Fiscais ***/
If nf_derived_generate(NF_HDR_BBL_VW3.NF_BRL_ID, NF_HDR_BBL_VW3.BUSINESS_U
NIT, " ", " ", " ", " ", " ") Then
End-If;
&LINHASNIVEL2 = ActiveRowCount(Record.NF_HDR_BBL_VW3, &I, Record.NF_LN_BBL
_VW);
For &I2 = 1 To &LINHASNIVEL2
&LINHANOTA = FetchValue(Record.NF_HDR_BBL_VW3, &I, Record.NF_LN_BBL_VW,
&I2, NF_LN_BBL_VW.NF_BRL_LINE_NUM);
SQLExec("Select SUM(MONETARY_AMOUNT) from PS_NF_LN_BRL LINHA, PS_BRL_DI
STRIB_LN DISTR where LINHA.BUSINESS_UNIT = :1 and LINHA.NF_BRL_ID = :2 and LINHA
.NF_BRL_LINE_NUM = :3 and LINHA.BUSINESS_UNIT = DISTR.BUSINESS_UNIT and LINHA.NF
_BRL_ID = DISTR.NF_BRL_ID and LINHA.NF_BRL_LINE_NUM = DISTR.NF_BRL_LINE_NUM", NF
_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &LINHANOTA, &SUMLANC);
If &SUMLANC <> 0 Then
SQLExec("UPDATE PS_BRL_DISTRIB_LN SET ERROR_FLAG = 'D' where BUSIN
ESS_UNIT = :1 and NF_BRL_ID = :2 and NF_BRL_LINE_NUM = :3", NF_HDR_BBL_VW3.BUSIN
ESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &LINHANOTA);
End-If;
End-For;
End-For;
/********************* MMCB.sds3884.sn *********************/
If %PanelGroup = PanelGroup.NF_CNFM_BBL Then
&existente = "N";
SQLExec("SELECT 'Y' FROM SYSADM.PS_MMC_HDR_COMIS WHERE BUSINESS_UNIT = :1
AND NF_BRL_ID = :2", BUSINESS_UNIT, NF_BRL_ID, &existente);
If &existente <> "Y" Then
SQLExec("SELECT MMC_COMISSAO FROM SYSADM.PS_MMC_NF_COMISS WHERE BUSINES
S_UNIT = :1 AND NF_BRL_ID = :2", BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &comis
sao);
&operador = %OperatorId;
If &comissao > 0 Then
SQLExec("SELECT NF_BRL, NF_BRL_SERIES, SHIP_TO_CUST_ID FROM SYSADM.P
S_NF_HDR_BBL_FS WHERE BUSINESS_UNIT = :1 AND NF_BRL_ID = :2", BUSINESS_UNIT, NF_
HDR_BBL_VW3.NF_BRL_ID, &nf, &serie, &cliente);
SQLExec("INSERT INTO SYSADM.PS_MMC_HDR_COMIS(BUSINESS_UNIT, NF_BRL_I
D, NF_BRL, NF_BRL_SERIES, SHIP_TO_CUST_ID, MMC_COMISSAO, MMC_STATUS_COMIS, OPRID
_ENTERED_BY, OPRID_LAST_UPDT, DATETIME_STAMP) VALUES (:1, :2, :3, :4, :5, :6, :7
, :8, :9, %DATETIMEIN(:10))", BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &nf, &ser
ie, &cliente, &comissao, "PEND", &operador, " ", %Datetime);
End-If;
End-If;
End-If;

/********************* MMCB.sds3884.en *********************/


/*2. Muda o status do NF_HDR_BRL.NF_STATUS_BBL para 'CNFM' (Confirmed)*/
&W_DATE = %Date;
SQLExec("update PS_NF_HDR_BRL set NF_STATUS_BBL = 'CNFM', NF_CONF_DT_BBL = %D
ATEIN(:3), ACCOUNTING_DT = %DATEIN(:4) WHERE BUSINESS_UNIT = :1 and NF_BRL_ID =
:2", NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &W_DATE, NF_HDR_BBL
_VW3.NF_ISSUE_DT_BBL);
SQLExec("UPDATE PS_BRL_DISTRIB_LN SET ACCOUNTING_DT = %DATEIN(:4) where BUS
INESS_UNIT = :1 and NF_BRL_ID = :2 and NF_BRL_LINE_NUM = :3", NF_HDR_BBL_VW3.BUS
INESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &LINHANOTA, NF_HDR_BBL_VW3.NF_ISSUE_DT_BBL
);
/*3. Muda o status RMNEIO_LINE_BBL.INF_PRC_STATUS_BBL para 'I' (Invoiced)*/
SQLExec("update PS_RMNEIO_LINE_BBL set INF_PRC_STATUS_BBL = 'I' WHERE EXISTS
(SELECT 1 FROM PS_NF_LN_BRL LIN WHERE LIN.BUSINESS_UNIT = :1 and LIN.NF_BRL_ID =
:2 and LIN.BUSINESS_UNIT = PS_RMNEIO_LINE_BBL.BUSINESS_UNIT_BI and LIN.NF_BRL_
ID = PS_RMNEIO_LINE_BBL.NF_BRL_ID and LIN.NF_BRL_LINE_NUM = PS_RMNEIO_LINE_BBL.N
F_BRL_LINE_NUM)", NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID);
/*4. Caso todas as linhas do romaneio estejam 'I' mudar o RMNEIO_STATUS_BBL
para 'SHP'(Shipped)*/
SQLExec("SELECT 'Falta Linhas serem assinaladas' FROM PS_NF_HDR_BRL NFHD, PS_
RMNEIO_HDR_BBL ROHD, PS_RMNEIO_LINE_BBL ROLI WHERE NFHD.BUSINESS_UNIT = :1 and N
FHD.NF_BRL_ID = :2 and NFHD.BUSINESS_UNIT_IN = ROHD.BUSINESS_UNIT and NFHD.RMNEI
O_ID_BBL
= ROHD.RMNEIO_ID_BBL and ROHD.BUSINESS_UNIT
= ROLI.BUSINESS_UNIT
and ROHD.RMNEIO_ID_BBL
= ROLI.RMNEIO_ID_BBL and ROLI.INF_PRC_STATUS_BBL <> 'I
' ", NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &FLAG);
If None(&FLAG) Then
SQLExec("update PS_RMNEIO_HDR_BBL SET RMNEIO_STATUS_BBL = 'SHP' WHERE EXIS
TS (SELECT 1 FROM PS_NF_HDR_BRL NFHD WHERE NFHD.BUSINESS_UNIT = :1 AND NFHD.NF_B
RL_ID = :2 AND NFHD.BUSINESS_UNIT_IN = PS_RMNEIO_HDR_BBL.BUSINESS_UNIT AND NFHD.
RMNEIO_ID_BBL = PS_RMNEIO_HDR_BBL.RMNEIO_ID_BBL)", NF_HDR_BBL_VW3.BUSINESS_UNIT,
NF_HDR_BBL_VW3.NF_BRL_ID);
End-If;
/*5. Atualiza o BILLING_STATUS da PS_SHIP_INF_INV com 'B' caso todos os roman
eios estejam com INF_PRC_STATUS_BBL = Invoiced */
&D = "D";
&I = "I";
/* &SELECT1 = " UPDATE PS_SHIP_INF_INV SET IN_USE_BI_BBL = " | "'" | &D | "
', PSSH_COMPLETE = 'N', DEPLETE_INV_FLG = 'Y' " | */
&SELECT1 = " UPDATE PS_SHIP_INF_INV SET IN_USE_BI_BBL = " | "'" | &D | "', PS
SH_COMPLETE = 'N' " | " WHERE NOT EXISTS (SELECT 1 FROM PS_RMNEIO_LINE_BBL ROLI
WHERE ROLI.BUSINESS_UNIT = PS_SHIP_INF_INV.BUSINESS_UNIT and ROLI.DEMAND_SOURCE
= PS_SHIP_INF_INV.DEMAND_SOURCE and ROLI.SOURCE_BUS_UNIT = PS_SHIP_INF_INV.SOURC
E_BUS_UNIT";
&SELECTV = " and ROLI.ORDER_NO = PS_SHIP_INF_INV.ORDER_NO and ROLI.ORDER_INT_
LINE_NO = PS_SHIP_INF_INV.ORDER_INT_LINE_NO and ROLI.SCHED_LINE_NO = PS_SHIP_INF
_INV.SCHED_LINE_NO and ROLI.INV_ITEM_ID = PS_SHIP_INF_INV.INV_ITEM_ID and ROLI.D
EMAND_LINE_NO = PS_SHIP_INF_INV.DEMAND_LINE_NO and ROLI.INF_PRC_STATUS_BBL <>" |
"'" | &I | "'" | ")";
&SELECT2 = " and EXISTS (SELECT 1 FROM PS_RMNEIO_LINE_BBL ROLI2 WHERE ROLI2.B
USINESS_UNIT =PS_SHIP_INF_INV.BUSINESS_UNIT and ROLI2.DEMAND_SOURCE = PS_SHIP_IN
F_INV.DEMAND_SOURCE and ROLI2.SOURCE_BUS_UNIT = PS_SHIP_INF_INV.SOURCE_BUS_UNIT
and ROLI2.ORDER_NO = PS_SHIP_INF_INV.ORDER_NO and ";
&SELECTX = "ROLI2.ORDER_INT_LINE_NO = PS_SHIP_INF_INV.ORDER_INT_LINE_NO and R
OLI2.SCHED_LINE_NO = PS_SHIP_INF_INV.SCHED_LINE_NO and ROLI2.INV_ITEM_ID = PS_SH
IP_INF_INV.INV_ITEM_ID";
&SELECT3 = " and ROLI2.DEMAND_LINE_NO = PS_SHIP_INF_INV.DEMAND_LINE_NO and RO
LI2.BUSINESS_UNIT_BI = :1 and ROLI2.NF_BRL_ID = :2 ) and PS_SHIP_INF_INV.QTY_SHI
PPED_CONV = (SELECT SUM(RMNEIO_LIN_QTY_BBL) FROM PS_RMNEIO_LINE_BBL ROLI3 WHERE
ROLI3.BUSINESS_UNIT = PS_SHIP_INF_INV.BUSINESS_UNIT and ROLI3.DEMAND_SOURCE = PS

_SHIP_INF_INV.DEMAND_SOURCE and ROLI3.SOURCE_BUS_UNIT = PS_SHIP_INF_INV.SOURCE_B


US_UNIT and ROLI3.ORDER_NO = PS_SHIP_INF_INV.ORDER_NO and ROLI3.ORDER_INT_LINE_N
O = PS_SHIP_INF_INV.ORDER_INT_LINE_NO and ROLI3.SCHED_LINE_NO = PS_SHIP_INF_INV.
SCHED_LINE_NO and ROLI3.INV_ITEM_ID = PS_SHIP_INF_INV.INV_ITEM_ID and ROLI3.DEMA
ND_LINE_NO = PS_SHIP_INF_INV.DEMAND_LINE_NO) ";
/**************************** mmcb.sds2736.so ****************************/
/* &SELECT4 = &SELECT1 | &SELECTV | &SELECT2 | &SELECTX | &SELECT3;
*/
/**************************** mmcb.sds2736.eo ****************************/
/**************************** mmcb.sds2736.sn ****************************/
/**************************** mmcb.hd147325.so ****************************/
/* &SELECTT = " AND 'X' NOT IN (SELECT 'X' FROM SYSADM.PS_TRANSACTION_INV T
WHERE T.BUSINESS_UNIT = PS_SHIP_INF_INV.BUSINESS_UNIT AND T.INV_ITEM_ID = PS_SH
IP_INF_INV.INV_ITEM_ID AND T.DT_TIMESTAMP >= PS_SHIP_INF_INV.SHIP_DATE - 30 AND
T.SHIP_ID = PS_SHIP_INF_INV.SHIP_ID) "; */
/**************************** mmcb.hd147325.eo ****************************/
/**************************** mmcb.hd147325.sn ****************************/
&SELECTT = " AND 'X' NOT IN (SELECT 'X' FROM SYSADM.PS_TRANSACTION_INV T WHER
E T.BUSINESS_UNIT = PS_SHIP_INF_INV.BUSINESS_UNIT AND T.INV_ITEM_ID = PS_SHIP_IN
F_INV.INV_ITEM_ID AND T.SOURCE_BUS_UNIT = PS_SHIP_INF_INV.SOURCE_BUS_UNIT AND T.
ORDER_NO = PS_SHIP_INF_INV.ORDER_NO AND T.ORDER_INT_LINE_NO = PS_SHIP_INF_INV.OR
DER_INT_LINE_NO AND T.SCHED_LINE_NO = PS_SHIP_INF_INV.SCHED_LINE_NO AND T.DEMAND
_LINE_NO = PS_SHIP_INF_INV.DEMAND_LINE_NO AND T.DT_TIMESTAMP >= PS_SHIP_INF_INV.
SHIP_DATE - 30 AND T.SHIP_ID = PS_SHIP_INF_INV.SHIP_ID)";
/**************************** mmcb.hd147325.en ****************************/
&SELECT4 = &SELECT1 | &SELECTV | &SELECT2 | &SELECTX | &SELECT3 | &SELECTT;
/**************************** mmcb.sds2736.en ****************************/
SQLExec(&SELECT4, NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID);
Gray(CONFIRMED_FLAG);
/****************************************************************************
***********************************************
Fabiano Cunha - MMC - 05/10/2006 - mmcb.AT1831 - Alterar o flag do embarque para
que o mesmo possa ser reduzido.
********************************************************************************
********************************************/
&SQL_DEMAND = CreateSQL("select B.business_unit,b.demand_source,b.source_bus_
unit, b.order_no, b.order_int_line_no, b.sched_line_no, b.inv_item_id, b.demand_
line_no FROM SYSADM.PS_MMC_NF_RELC_DEV A, SYSADM.PS_SHIP_INV_NF_BRL B WHERE A.BU
SINESS_UNIT_BI = :1 AND A.MMC_NF_bRL_ID_BI = :2 AND B.BUSINESS_UNIT_PO = A.BUSIN
ESS_UNIT AND B.NF_BRL_ID
= A.NF_BRL_ID AND B.DEMAND_SOURCE = 'RT' order b
y B.business_unit,b.demand_source,b.source_bus_unit, b.order_no, b.order_int_lin
e_no, b.sched_line_no, b.inv_item_id, b.demand_line_no", NF_HDR_BBL_VW3.BUSINESS
_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID);
While &SQL_DEMAND.Fetch(&business_unit, &demand_source, &source_bus_unit, &or
der_no, &order_int_line_no, &ched_line_no, &inv_item_id, &demand_line_no)
SQLExec("UPDATE sysadm.ps_ship_inf_inv SET PSSH_COMPLETE = 'N' where busin
ess_unit = :1 AND DEMAND_SOURCE = :2 AND SOURCE_BUS_UNIT = :3 AND ORDER_NO = :
4 and order_int_line_no =:5 and sched_line_no = :6 and inv_item_id = :7 and dem
and_line_no = :8 and PSSH_RUN_STATUS = '1' and PSSH_COMPLETE = 'Y'", &business_u
nit, &demand_source, &source_bus_unit, &order_no, &order_int_line_no, &ched_line
_no, &inv_item_id, &demand_line_no);

End-While;
&SQL_DEMAND.Close();
End-If;

/************************* mmcb.at2323.sn *************************************


*******/
If %Page = Page.NF_CNFM_BBL Then
&TE_CONFIRMED_FLAG = CONFIRMED_FLAG;
&TE_NF_BRL_ID = NF_HDR_BBL_VW3.NF_BRL_ID;
If &TE_CONFIRMED_FLAG = "Y" Then

SQLExec("select sh.setid, sh.mmc_te_sol_id, %dateout(sh.order_date), sh.so


urce_bus_unit,sh.order_no,sl.inv_item_id, to_number(to_char(sh.order_date,'MM'))
mes_baixa, sh.mmc_data_limite from sysadm.ps_mmc_te_sol_hdr sh, sysadm.ps_mmc_
te_sol_ln sl where sh.setid = sl.setid and sh.mmc_te_sol_id = sl.mmc_te_sol_id a
nd sh.order_no in ( select distinct order_no from sysadm.ps_rmneio_line_bbl r w
here r.business_unit = sh.source_bus_unit and r.nf_brl_id = :1 ) and mmc_te_sol_
status='4' and rownum = 1 ", &TE_NF_BRL_ID, &v_setid, &v_mmc_te_sol_id, &v_order
_date, &v_source_bus_unit, &v_order_no, &v_item_verifica, &MES_BAIXA, &V_MMC_DAT
A_LIMITE);
/********************************************** mmcb.hd54903.sn **********
*************************************/
If None(&v_mmc_te_sol_id) Then
SQLExec("select sh.setid, sh.mmc_te_sol_id, %dateout(sh.order_date), sh
.source_bus_unit,sh.order_no,sl.inv_item_id, to_number(to_char(sh.order_date,'MM
')) mes_baixa, sh.mmc_data_limite from sysadm.ps_mmc_te_sol_hdr sh, sysadm.ps_m
mc_te_sol_ln sl where sh.setid = sl.setid and sh.mmc_te_sol_id = sl.mmc_te_sol_i
d and sl.order_no in ( select distinct order_no from sysadm.ps_rmneio_line_bbl
r where r.business_unit = sh.source_bus_unit and r.nf_brl_id = :1 ) and mmc_te_s
ol_status='4' and rownum = 1 ", &TE_NF_BRL_ID, &v_setid, &v_mmc_te_sol_id, &v_o
rder_date, &v_source_bus_unit, &v_order_no, &v_item_verifica, &MES_BAIXA, &V_MMC
_DATA_LIMITE);
End-If;
/********************************************** mmcb.hd54903.en **********
*************************************/
/********************************************** mmcb.hd56098.sn **********
*************************************/
If None(&v_mmc_te_sol_id) Then
SQLExec("SELECT 'Y' FROM SYSADM.PS_NF_LN_BRL NL, SYSADM.PS_MMC_TE_TOF_T
YPE TT WHERE NL.BUSINESS_UNIT = :1 AND NL.NF_BRL_ID = :2 AND NL.TOF_PBL = TT.TOF
_PBL AND TT.MMC_CNTRL_TERC = 'Y' AND ROWNUM = 1", NF_HDR_BBL_VW3.BUSINESS_UNIT,

NF_HDR_BBL_VW3.NF_BRL_ID, &TOF_TERCEIRO);
SQLExec(" SELECT 'Y' FROM SYSADM.PS_RMNEIO_LINE_BBL WHERE (BUSINESS_UNI
T, RMNEIO_ID_BBL) IN (SELECT BUSINESS_UNIT_IN, RMNEIO_ID_BBL FROM SYSADM.PS_NF_H
DR_BRL WHERE BUSINESS_UNIT = :1 AND NF_BRL_ID = :2 ) AND ORDER_NO LIKE 'MSE%' AN
D ROWNUM = 1 ", NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &V_NF_TE
RCEIRO_ERRO);
If All(&TOF_TERCEIRO) And
&V_NF_TERCEIRO_ERRO = "Y" Then
Error ("Nota Fiscal Terceiro ID: " | NF_HDR_BBL_VW3.NF_BRL_ID | " se
m Solicitao Identificada. - Verifique Operaes Fiscais!");
End-If;
End-If;
/********************************************** mmcb.hd56098.en **********
*************************************/

&MES_ATUAL = Month(%Date);
If All(&v_mmc_te_sol_id) Then
/* chc.sn */
SQLExec("SELECT 'E' FROM SYSADM.PS_RMNEIO_LINE_BBL RL WHERE RL.BUSINESS
_UNIT_BI = :1 AND RL.NF_BRL_ID = :2 AND 'X' NOT IN ( SELECT 'X' FROM SYSADM.PS_
MMC_TE_SOL_LN SL WHERE SL.ORDER_NO = RL.ORDER_NO AND SL.INV_ITEM_ID = RL.INV_ITE
M_ID AND SL.QTY = RL.RMNEIO_LIN_QTY_BBL AND SL.ORDER_INT_LINE_NO = RL.ORDER_INT_
LINE_NO ) UNION SELECT 'E' FROM SYSADM.PS_MMC_TE_SOL_LN SL WHERE SL.SETID = :3
AND SL.MMC_TE_SOL_ID = :4 AND 'X' NOT IN ( SELECT 'X' FROM SYSADM.PS_RMNEIO_LIN
E_BBL RL WHERE RL.BUSINESS_UNIT_BI = :5 AND RL.NF_BRL_ID = :6 AND SL.ORDER_NO =
RL.ORDER_NO AND SL.INV_ITEM_ID = RL.INV_ITEM_ID AND SL.QTY = RL.RMNEIO_LIN_QTY_B
BL AND SL.ORDER_INT_LINE_NO = RL.ORDER_INT_LINE_NO )", NF_HDR_BBL_VW3.BUSINESS_U
NIT, NF_HDR_BBL_VW3.NF_BRL_ID, &v_setid, &v_mmc_te_sol_id, NF_HDR_BBL_VW3.BUSINE
SS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &existe_erro_sol_nf);
If None(&existe_erro_sol_nf) Then
/* chc.en */
If &MES_BAIXA <> &MES_ATUAL Then
/*
WinMessage("Error: O MSR de nmero: " | &v_order_no |
" pertence ao ms " | &MES_BAIXA);*/
End-If;
/*------------------------------------------------------------ Verifica Operao fiscal da NF controla terceiro.
-------------------------------------------------------------*/
SQLExec("select tof_pbl from sysadm.ps_nf_ln_brl where business_unit
=:1 and nf_brl_id=:2 and nf_brl_line_num=1 ", NF_HDR_BBL_VW3.BUSINESS_UNIT, &TE_
NF_BRL_ID, &v_tof_pbl);
SQLExec("select a.mmc_cntrl_terc,a.mmc_stock_un from sysadm.ps_mmc_t
e_tof_type a where a.tof_pbl = :1 and a.effdt = (select max(a_ed.effdt) from sys
adm.ps_mmc_te_tof_type a_ed where a.tof_pbl = a_ed.tof_pbl and a_ed.effdt <= sys
date)", &v_tof_pbl, &v_mmc_cntrl_terc, &v_mmc_stock_un);

If &v_mmc_cntrl_terc = "Y" Then


/*------------------------------------------------------------ Verifica se a Solicitao Requisio Reduzida, se no feita a
reduo
-------------------------------------------------------------*/
SQLExec("select ship_id from ps_transaction_inv where business_un
it=:1 and dt_timestamp>=%datetimein(:2) -1 and inv_item_id=:3 and order_no=:4 an
d rownum = 1", &v_source_bus_unit, &v_order_date, &v_item_verifica, &v_order_no,
&v_ship_id);
If None(&v_ship_id) Then
SQLExec("select distinct ship_id from sysadm.ps_ship_inf_inv w
here business_unit=:1 and order_no=:2", &v_source_bus_unit, &v_order_no, &v_ship
id_baixa);
REDUCAO_ESTOQUE(&v_source_bus_unit, &v_shipid_baixa)
End-If;
/*|||||||||||||||||||||||||||||||||||||||||||||
|| VERIRICA SE SOLICITAO TERCEIROS TEM RETORNO.
|| SE A SOLICITAO TERCEIROS NO TIVER RETORNO NO
|| CRIA A CONTROLE ESTOQUE TERCEIROS.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
If &V_MMC_DATA_LIMITE > 0 Then
&cmdSQL = CreateSQL("select sh.setid,sh.mmc_te_sol_id, sl.line
_nbr,sh.order_date,sh.source_bus_unit,sh.order_no, sl.order_int_line_no, sl.inv_
item_id,sh.business_unit_bi, sl.nf_brl_line_num from sysadm.ps_mmc_te_sol_hdr s
h, sysadm.ps_mmc_te_sol_ln sl where sh.setid = sl.setid and sh.mmc_te_sol_id = s
l.mmc_te_sol_id and sh.setid=:1 and sh.mmc_te_sol_id =:2 and mmc_te_sol_status='
4'", &v_setid, &v_mmc_te_sol_id);
&REC_MMC_TE_TRANSAC = CreateRecord(Record.MMC_TE_TRANSAC);
While &cmdSQL.fetch(&VAR_SETID, &VAR_MMC_TE_SOL_ID, &VAR_LINE_
NBR, &VAR_ORDER_DATE, &VAR_SOURCE_BUS_UNIT, &VAR_ORDER_NO, &VAR_ORDER_INT_LINE_N
O, &VAR_INV_ITEM_ID, &VAR_BUSINESS_UNIT_BI, &VAR_NF_BRL_LINE_NUM)
SQLExec("select business_unit, inv_item_id, %datetimeout(dt
_timestamp), seq_nbr, %datetimeout(dt_timestamp+1/86400),unit_measure_std,qty,de
ptid, distrib_type,transaction_group from sysadm.ps_transaction_inv where busine
ss_unit=:1 and dt_timestamp >= %datetimein(:2) -1 and inv_item_id=:3 and order_n
o=:4 and order_int_line_no=:5", &VAR_SOURCE_BUS_UNIT, &VAR_ORDER_DATE, &VAR_INV_
ITEM_ID, &VAR_ORDER_NO, &VAR_ORDER_INT_LINE_NO, &TRAN_BUSINESS_UNIT, &TRAN_INV_I
TEM_ID, &TRAN_DT_TIMESTAMP, &TRAN_SEQ_NBR, &TRAN_DT_TIMESTAMP_IN, &TRAN_UNIT_MEA
SURE_STD, &TRAN_QTY, &TRAN_DEPTID, &TRAN_DISTRIB_TYPE, &TRAN_TRANSACTION_GROUP);
SQLExec("select config_code from sysadm.ps_ship_inf_inv whe
re business_unit=:1 and order_no=:2 and order_int_line_no=:3", &TRAN_BUSINESS_UN
IT, &TRAN_INV_ITEM_ID, &VAR_ORDER_INT_LINE_NO, &CONFIG_CODE_BAIXA);

/*|||||||||||||||||||||||||||||||||||||||||||||
|| Criando entrada na Unidade Estoque Terceiros.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
&P_BUSINESS_UNIT = &v_mmc_stock_un;
&P_STAGED_DATE = Date3(1900, 1, 1);
&P_INV_LOT_ID = "NONE";
/*&P_INV_ITEM_ID = &TRAN_INV_ITEM_ID; mmcb.hd239977.lo*/
&P_INV_ITEM_ID = &VAR_INV_ITEM_ID; /*mmcb.hd239977.ln*/
&P_SERIAL_ID = "NONE";

SQLExec("select 'Y' from sysadm.ps_bu_items_inv where busin


ess_unit=:1 and inv_item_id =:2 ", &v_mmc_stock_un, &P_INV_ITEM_ID, &EXISTE_BU_I
TEM_INV);
If &EXISTE_BU_ITEM_INV <> "Y" Then
Error ("No existe parametrizao Unidade Negocio: " | &v_mmc_
stock_un | " para Item: " | &P_INV_ITEM_ID);
End-If;
/*SQLExec(" select storage_area,stor_level_1, stor_level_2,
stor_level_3, stor_level_4 from sysadm.ps_default_loc_inv where business_unit=:
1 and inv_item_id=:2 ", &v_mmc_stock_un, &TRAN_INV_ITEM_ID, &TRAN_STORAGE_AREA,
&TRAN_STOR_LEVEL_1, &TRAN_STOR_LEVEL_2, &TRAN_STOR_LEVEL_3, &TRAN_STOR_LEVEL_4);
mmcb.hd239977.lo */
SQLExec(" select storage_area,stor_level_1, stor_level_2, s
tor_level_3, stor_level_4 from sysadm.ps_default_loc_inv where business_unit=:1
and inv_item_id=:2 ", &v_mmc_stock_un, &P_INV_ITEM_ID, &TRAN_STORAGE_AREA, &TRAN
_STOR_LEVEL_1, &TRAN_STOR_LEVEL_2, &TRAN_STOR_LEVEL_3, &TRAN_STOR_LEVEL_4); /*mm
cb.hd239977.ln*/
If None(&TRAN_STORAGE_AREA) Or
None(&TRAN_STOR_LEVEL_1) Or
None(&TRAN_STOR_LEVEL_2) Or
None(&TRAN_STOR_LEVEL_3) Or
None(&TRAN_STOR_LEVEL_4) Then
/*Error ("No existe local de expedio padro na Unidade Tercei
ro: " | &v_mmc_stock_un | " para o Item: " | &TRAN_INV_ITEM_ID | " "); mmcb.hd
239977.lo*/
Error ("No existe local de expedio padro na Unidade Terceiro
: " | &v_mmc_stock_un | " para o Item: " | &P_INV_ITEM_ID | " "); /*mmcb.hd23997
7.ln*/
End-If;
&P_STORAGE_AREA = &TRAN_STORAGE_AREA;
&P_STOR_LEVEL_1 = &TRAN_STOR_LEVEL_1;
&P_STOR_LEVEL_2 = &TRAN_STOR_LEVEL_2;
&P_STOR_LEVEL_3 = &TRAN_STOR_LEVEL_3;
&P_STOR_LEVEL_4 = &TRAN_STOR_LEVEL_4;
&P_CONTAINER_ID = " ";
&P_UNIT_OF_MEASURE = &TRAN_UNIT_MEASURE_STD;
&P_QTY = &TRAN_QTY;
&P_DEPTO = &TRAN_DEPTID;
/**********************************************************
********
&P_DISTRIB_TYPE = &TRAN_DISTRIB_TYPE;
******************************************************************/
&P_DISTRIB_TYPE = "TERCEIROS";
&P_DT_TIMESTAMP = &TRAN_DT_TIMESTAMP_IN;
&P_BUSINESS_UNIT_RECV = &v_mmc_stock_un;
&P_RECEIVER_ID = String(&VAR_MMC_TE_SOL_ID);
&P_RECV_LN_NBR = &VAR_LINE_NBR;
&P_RECV_SHIP_SEQ_NBR = 0;

&P_SOURCE_BUS_UNIT = &VAR_SOURCE_BUS_UNIT;
&P_ORDER_NO = &VAR_ORDER_NO;
&P_ORDER_INT_LINE_NO = &VAR_ORDER_INT_LINE_NO;
&P_PARAMETRO_OPCIONAL = "USA_CUSTO_UNIDADE_ORIGEM";
/*******---------------------------***********
Pegando custo Unidade Baixa para ser uzado unidade Entrada.
*******---------------------------***********/
/*&CUSTO_UN_ESTOQUE = BUSCA_CUSTO_ITEM(&TRAN_BUSINESS_UNIT,
&TRAN_INV_ITEM_ID, &TRAN_DT_TIMESTAMP, &CONFIG_CODE_BAIXA); mmcb.hd239977.ln
*/
&CUSTO_UN_ESTOQUE = BUSCA_CUSTO_ITEM(&v_mmc_stock_un, &P_IN
V_ITEM_ID, &TRAN_DT_TIMESTAMP, &CONFIG_CODE_BAIXA); /*mmcb.hd239977.ln*/
/*******---------------------------***********
FIM Pegando custo Unidade Baixa para ser uzado unidade Entrada.
*******---------------------------***********/
/*
ENTRADA_ESTOQUE(&P_BUSINESS_UNIT, &P_ST
AGED_DATE, &P_INV_LOT_ID, &P_INV_ITEM_ID, &P_SERIAL_ID, &P_STORAGE_AREA, &P_STOR
_LEVEL_1, &P_STOR_LEVEL_2, &P_STOR_LEVEL_3, &P_STOR_LEVEL_4, &P_CONTAINER_ID, &P
_UNIT_OF_MEASURE, &P_QTY, &P_DEPTO, &P_DISTRIB_TYPE, &P_DT_TIMESTAMP, &P_BUSINES
S_UNIT_RECV, &P_RECEIVER_ID, &P_RECV_LN_NBR, &P_RECV_SHIP_SEQ_NBR, &P_SOURCE_BUS
_UNIT, &P_ORDER_NO, &P_ORDER_INT_LINE_NO, &P_CUSTO, &P_CONFIG_CODE); */
ENTRADA_ESTOQUE(&P_BUSINESS_UNIT, &P_STAGED_DATE, &P_INV_LO
T_ID, &P_INV_ITEM_ID, &P_SERIAL_ID, &P_STORAGE_AREA, &P_STOR_LEVEL_1, &P_STOR_LE
VEL_2, &P_STOR_LEVEL_3, &P_STOR_LEVEL_4, &P_CONTAINER_ID, &P_UNIT_OF_MEASURE, &P
_QTY, &P_DEPTO, &P_DISTRIB_TYPE, &P_DT_TIMESTAMP, &P_BUSINESS_UNIT_RECV, &P_RECE
IVER_ID, &P_RECV_LN_NBR, &P_RECV_SHIP_SEQ_NBR, &P_SOURCE_BUS_UNIT, &P_ORDER_NO,
&P_ORDER_INT_LINE_NO, &CUSTO_UN_ESTOQUE, &P_INV_LOT_ID, &P_PARAMETRO_OPCIONAL);
/*|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||||||||||||||
|| FIM Criando entrada na Unidade Estoque Terceiros.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||*/
SQLExec("select business_unit, %datetimeout(dt_timestamp),
seq_nbr, transaction_group from sysadm.ps_transaction_inv where business_unit=:1
and dt_timestamp >= %datetimein(:2) -1 and inv_item_id=:3 and receiver_id=:4 an
d recv_ln_nbr =:5", &v_mmc_stock_un, &P_DT_TIMESTAMP, &P_INV_ITEM_ID, &P_RECEIVE
R_ID, &P_RECV_LN_NBR, &TRAN_020_BUSINESS_UNIT, &TRAN_020_DT_TIMESTAMP, &TRAN_020
_SEQ_NBR, &TRAN_020_TRANSACTION_GROUP);
If None(&TRAN_020_DT_TIMESTAMP) Or
None(&TRAN_020_SEQ_NBR) Then
Error ("No foi possivel encontrar Transao Terceiros.");
End-If;
If &VAR_LINE_NBR = 0 Then
Error ("Linha documento fiscal esta com o valor zerado."
);
End-If;
&REC_MMC_TE_TRANSAC.SETID.VALUE = &VAR_SETID;
&REC_MMC_TE_TRANSAC.MMC_TE_SOL_ID.VALUE = &VAR_MMC_TE_SOL_I
D;
&REC_MMC_TE_TRANSAC.LINE_NBR.VALUE = &VAR_LINE_NBR;
&REC_MMC_TE_TRANSAC.TRANSACTION_GROUP.VALUE = &TRAN_TRANSAC

TION_GROUP;
&REC_MMC_TE_TRANSAC.BUSINESS_UNIT_BI.VALUE = NF_HDR_BBL_VW3
.BUSINESS_UNIT;
&REC_MMC_TE_TRANSAC.NF_BRL_ID.VALUE = &TE_NF_BRL_ID;
&REC_MMC_TE_TRANSAC.NF_BRL_LINE_NUM.VALUE = &VAR_NF_BRL_LIN
E_NUM;
&REC_MMC_TE_TRANSAC.BUSINESS_UNIT.VALUE = &TRAN_BUSINESS_UN
IT;
&REC_MMC_TE_TRANSAC.INV_ITEM_ID.VALUE = &TRAN_INV_ITEM_ID;
&REC_MMC_TE_TRANSAC.DT_TIMESTAMP.VALUE = &TRAN_DT_TIMESTAMP
;
&REC_MMC_TE_TRANSAC.SEQ_NBR.VALUE = &TRAN_SEQ_NBR;
&REC_MMC_TE_TRANSAC.BUSINESS_UNIT_TO.VALUE = &TRAN_020_BUSI
NESS_UNIT;
&REC_MMC_TE_TRANSAC.DT_TIMESTAMP_TO.VALUE = &TRAN_020_DT_TI
MESTAMP;
&REC_MMC_TE_TRANSAC.SEQ_NBR_TO.VALUE = &TRAN_020_SEQ_NBR;
&REC_MMC_TE_TRANSAC.MMC_TRAN_GROUP.VALUE = &TRAN_020_TRANSA
CTION_GROUP;
&REC_MMC_TE_TRANSAC.Insert();
End-While;
SQLExec("update sysadm.ps_mmc_te_sol_hdr set mmc_te_sol_status
='5', business_unit_bi = :1, nf_brl_id = :2, nf_brl_date = (select nh.nf_brl_dat
e from sysadm.ps_nf_hdr_brl nh where nh.business_unit = :3 and nh.nf_brl_id = :4
) where setid=:5 and mmc_te_sol_id=:6", NF_HDR_BBL_VW3.BUSINESS_UNIT, &TE_NF_BRL
_ID, NF_HDR_BBL_VW3.BUSINESS_UNIT, &TE_NF_BRL_ID, &v_setid, &v_mmc_te_sol_id);
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||
|| Criando saldo Estoque Terceiros.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||*/
&cmdNfSQL = CreateSQL("select a.business_unit, a.nf_brl_id, a.
nf_brl, a.nf_brl_series, a.ship_to_cust_id, a.address_seq_num, a.irtax_brl_amt,
b.nf_brl_line_num, b.itm_setid, b.inv_item_id, b.qty_nf_brl, b.icmstax_brl_amt,
b.ipitax_brl_amt, b.pistax_brl_amt, b.cofinstax_brl_amt, b.isstax_brl_amt from s
ysadm.ps_nf_hdr_brl a, sysadm.ps_nf_ln_brl b where a.business_unit = b.business_
unit and a.nf_brl_id = b.nf_brl_id and a.business_unit =:1 and a.nf_brl_id =:
2 ", NF_HDR_BBL_VW3.BUSINESS_UNIT, &TE_NF_BRL_ID);
While &cmdNfSQL.fetch(&V_NF_BUSINESS_UNIT, &V_NF_NF_BRL_ID, &V
_NF_NF_BRL, &V_NF_NF_BRL_SERIES, &V_NF_SHIP_TO_CUST_ID, &V_NF_ADDRESS_SEQ_NUM, &
V_NF_IRTAX_BRL_AMT, &V_NF_NF_BRL_LINE_NUM, &V_NF_ITM_SETID, &V_NF_INV_ITEM_ID, &
V_NF_QTY_NF_BRL, &V_NF_ICMSTAX_BRL_AMT, &V_NF_IPITAX_BRL_AMT, &V_NF_PISTAX_BRL_A
MT, &V_NF_COFINSTAX_BRL_AMT, &V_NF_ISSTAX_BRL_AMT)
SQLExec("SELECT CV.VENDOR_ID, CV.ADDRESS1_VNDR FROM SYSADM.
PS_NF_HDR_BRL NH, SYSADM.PS_MMC_TE_CUST_VND CV WHERE NH.BUSINESS_UNIT = :1 AND N
H.NF_BRL_ID = :2 AND NH.SHIP_TO_CUST_ID = CV.CUST_ID AND NH.ADDRESS_SEQ_NUM = CV
.ADDRESS_SEQ_NUM", NF_HDR_BBL_VW3.BUSINESS_UNIT, &TE_NF_BRL_ID, &V_NF_SHIP_TO_CU
ST_ID, &V_NF_ADDRESS_SEQ_NUM);
&N_BUSINESS_UNIT = &V_NF_BUSINESS_UNIT;
&N_NF_BRL_ID = &V_NF_NF_BRL_ID;
&N_NF_BRL = &V_NF_NF_BRL;
&N_NF_BRL_SERIES = &V_NF_NF_BRL_SERIES;

/*&N_VENDOR_ID = &CLIENT_VENDORID;*/
&N_VENDOR_ID = &V_NF_SHIP_TO_CUST_ID;
&N_ADDRESS_SEQ_NUM = &V_NF_ADDRESS_SEQ_NUM;
&N_IRTAX_BRL_AMT = &V_NF_IRTAX_BRL_AMT;
&N_MMC_IR_SALDO = &V_NF_IRTAX_BRL_AMT;
&N_NF_BRL_LINE_NUM = &V_NF_NF_BRL_LINE_NUM;
&N_INV_ITEM_ID = &V_NF_INV_ITEM_ID;
&N_INV_LOT_ID = "NONE";
&N_SERIAL_ID = "NONE";
&N_QTY = &V_NF_QTY_NF_BRL;
&N_QTY_AVAILABLE = &V_NF_QTY_NF_BRL;
&N_ICMSTAX_BRL_AMT = &V_NF_ICMSTAX_BRL_AMT;
&N_MMC_ICMS_SALDO = &V_NF_ICMSTAX_BRL_AMT;
&N_IPITAX_BRL_AMT = &V_NF_IPITAX_BRL_AMT;
&N_MMC_IPI_SALDO = &V_NF_IPITAX_BRL_AMT;
&N_PISTAX_BRL_AMT = &V_NF_PISTAX_BRL_AMT;
&N_MMC_PIS_SALDO = &V_NF_PISTAX_BRL_AMT;
&N_COFINSTAX_BRL_AMT = &V_NF_COFINSTAX_BRL_AMT;
&N_MMC_COFINS_SALDO = &V_NF_COFINSTAX_BRL_AMT;
&N_ISSTAX_BRL_AMT = &V_NF_ISSTAX_BRL_AMT;
&N_MMC_ISS_SALDO = &V_NF_ISSTAX_BRL_AMT;

GRAVA_SALDO_NF_TERCEIRO(&N_BUSINESS_UNIT, &N_NF_BRL_ID, &N_


NF_BRL, &N_NF_BRL_SERIES, &N_VENDOR_ID, &N_ADDRESS_SEQ_NUM, &N_IRTAX_BRL_AMT, &N
_MMC_IR_SALDO, &N_NF_BRL_LINE_NUM, &N_INV_ITEM_ID, &N_INV_LOT_ID, &N_SERIAL_ID,
&N_QTY, &N_QTY_AVAILABLE, &N_ICMSTAX_BRL_AMT, &N_MMC_ICMS_SALDO, &N_IPITAX_BRL_A
MT, &N_MMC_IPI_SALDO, &N_PISTAX_BRL_AMT, &N_MMC_PIS_SALDO, &N_COFINSTAX_BRL_AMT,
&N_MMC_COFINS_SALDO, &N_ISSTAX_BRL_AMT, &N_MMC_ISS_SALDO);
End-While;
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||
|| FIM Criando saldo Estoque Terceiros.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||*/
End-If;
/* IF &V_MMC_DATA_LIMITE > 0 THEN */
/* Else
Error ("Existe uma divergencia Codigo Operao Fiscal"); */
End-If;
/* &v_mmc_cntrl_terc */
/* chc.sn */
End-If;
/* If None(&existe_erro_sol_nf) */
/* chc.en */
End-If;
/* If All(&v_mmc_te_sol_id) */
End-If;
/* If CONFIRMED_FLAG = "Y" */

/* End-For; */
End-If;
/* %Page = Page.NF_CNFM_BBL Then*/

/************************************* mmcb.sds5105.sn *************************


************/
/*Atualiza o status das solicitaes eletrnicas de "Em Ordem" para "Faturada"*/
If %Component = "NF_CNFM_BBL" And
CONFIRMED_FLAG = "Y" Then
/*Recupera o SetId Geral*/
&SETID = BUSCA_SETID();
/*Atualiza pelo nmero da NF*/
&UPDATE = "";
&UPDATE = &UPDATE | "UPDATE SYSADM.PS_MMC_TE_SOL_HDR SET MMC_TE_SOL_STATUS =
'5' ";
&UPDATE = &UPDATE | "WHERE MMC_TE_SOL_STATUS = '4' ";
&UPDATE = &UPDATE | "AND ( SETID ";
&UPDATE = &UPDATE | "
, MMC_TE_SOL_ID) = ( ";
&UPDATE = &UPDATE | "
SELECT SETID ";
&UPDATE = &UPDATE | "
,
MMC_TE_SOL_ID ";
&UPDATE = &UPDATE | "
FROM SYSADM.PS_MMC_TE_SOL_LN
";
&UPDATE = &UPDATE | "
WHERE SETID
= :1
";
&UPDATE = &UPDATE | "
AND BUSINESS_UNIT_BI = :2
";
&UPDATE = &UPDATE | "
AND NF_BRL_ID
= :3
";
&UPDATE = &UPDATE | "
AND ROWNUM
= 1 "
;
&UPDATE = &UPDATE | "
) ";
SQLExec(&UPDATE, &SETID, NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_
ID);
/*Atualiza pelo nmero da ordem*/
&UPDATE = "";
&UPDATE = &UPDATE | "UPDATE SYSADM.PS_MMC_TE_SOL_HDR SET MMC_TE_SOL_STATUS =
'5' ";
&UPDATE = &UPDATE | "WHERE MMC_TE_SOL_STATUS = '4' ";
&UPDATE = &UPDATE | "AND ( SETID ";
&UPDATE = &UPDATE | "
, MMC_TE_SOL_ID) = ( ";
&UPDATE = &UPDATE | "
SELECT SHD.SETID ";
&UPDATE = &UPDATE | "
,
SHD.MMC_TE_SOL_ID ";
&UPDATE = &UPDATE | "
FROM SYSADM.PS_MMC_TE_SOL_HD
R SHD ";
&UPDATE = &UPDATE | "
,
SYSADM.PS_MMC_TE_SOL_LN
SLN ";
&UPDATE = &UPDATE | "
,
SYSADM.PS_RMNEIO_LINE_B
BL RLB ";
&UPDATE = &UPDATE | "
WHERE SHD.SETID
= :1 ";
&UPDATE = &UPDATE | "
AND SHD.MMC_TE_SOL_STATUS
= '4' ";
&UPDATE = &UPDATE | "
AND SLN.SETID
= SHD.SETID ";
&UPDATE = &UPDATE | "
AND SLN.MMC_TE_SOL_ID

= SHD.MMC_TE_SOL_ID ";
&UPDATE = &UPDATE | "
AND
= SHD.SOURCE_BUS_UNIT ";
&UPDATE = &UPDATE | "
AND
= SLN.ORDER_NO ";
&UPDATE = &UPDATE | "
AND
= SLN.ORDER_INT_LINE_NO ";
&UPDATE = &UPDATE | "
AND
= :2 ";
&UPDATE = &UPDATE | "
AND
= :3 ";
&UPDATE = &UPDATE | "
AND
= 1 ";
&UPDATE = &UPDATE | "
) ";
SQLExec(&UPDATE, &SETID, NF_HDR_BBL_VW3.BUSINESS_UNIT,
ID);

RLB.SOURCE_BUS_UNIT
RLB.ORDER_NO
RLB.ORDER_INT_LINE_NO
RLB.BUSINESS_UNIT_BI
RLB.NF_BRL_ID
ROWNUM
NF_HDR_BBL_VW3.NF_BRL_

End-If;
/************************************* mmcb.sds5105.en *************************
************/

/************************* mmcb.at2323.en *************************************


*******/
/*** Jeison Caldas - 23/01/08 - Ativ.2440 - Controle de transferncia de Ativos Inicio ***/
If %Component = "NF_CNFM_BBL" And
CONFIRMED_FLAG = "Y" Then
SQLExec("SELECT IN_OUT_CD_BBL FROM SYSADM.PS_NF_HDR_BBL_FS WHERE BUSINESS_UNI
T = :1 AND NF_BRL_ID = :2", NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_
ID, &IN_OUT_CD_BBL);
If &IN_OUT_CD_BBL = "O" Then
REM Jeison Caldas - 26.11.09 - SDS 3085 - Acrescentado select abaixo para
buscar quantidade de linhas da nota - L.N.;
SQLExec("SELECT MAX(NF_BRL_LINE_NUM) FROM SYSADM.PS_NF_LN_BBL_FS WHERE BUS
INESS_UNIT = :1 AND NF_BRL_ID = :2", NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW
3.NF_BRL_ID, &ROWS);
For &LN = 1 To &ROWS
SQLExec("SELECT A.ASSET_ID, C.MMC_TIPO_TRANSF_AM, BH.SHIP_TO_CUST_ID, B
H.NF_BRL, BH.NF_BRL_SERIES, BH.LT_GRP_ID_BBL FROM PS_MMC_FAT_ITM_ATI A, PS_NF_HD
R_BBL_FS BH, PS_NF_LN_BBL_FS B, PS_MMC_ATIVO_OFISC C WHERE A.BUSINESS_UNIT = BH
.BUSINESS_UNIT AND A.NF_BRL_ID = BH.NF_BRL_ID AND A.NF_BRL_LINE_NUM = B.NF_BRL_L
INE_NUM AND B.BUSINESS_UNIT = BH.BUSINESS_UNIT AND B.NF_BRL_ID = BH.NF_BRL_ID A
ND B.TOF_PBL = C.TOF_PBL AND C.MMC_MOVIMENT_ATIVO = 'Y' AND C.EFFDT = (SELECT MA
X(D_ED.EFFDT) FROM PS_MMC_ATIVO_OFISC D_ED WHERE D_ED.TOF_PBL = C.TOF_PBL AND D
_ED.EFFDT <= SYSDATE) AND A.BUSINESS_UNIT = :1 AND A.NF_BRL_ID = :2 AND B.NF_BRL
_LINE_NUM = :3", NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &LN, &A
SSET_ID, &TIPO_MOV, &LOCATION, &NF_BRL, &SERIE_NF, &IDGRUPO);
REM SOLICITADO PELO BORGES EM 23.02.10 PARA MOVIMENTAO INTERNA NO GERAR NE
NHUM TRATAMENTO, J QUE SER FEITO NO RECEBIMENTO DA NOTA FISCAL;
If &TIPO_MOV <> "I" Then

/************************** mmcb.sds4689.so ************************


**/
/*

&BU = BU_SETID("COCT1");

*/
/************************** mmcb.sds4689.eo ************************
**/
/************************** mmcb.sds4689.sn ************************
**/
SQLExec("SELECT BUSINESS_UNIT_GL FROM SYSADM.PS_BUS_UNIT_TBL_BI WHER
E BUSINESS_UNIT = :1", NF_HDR_BBL_VW3.BUSINESS_UNIT, &BU);
/************************** mmcb.sds4689.en ************************
**/
&DATA = %Date;
&OPRID = %OperatorId;
&EXISTE_ATI = "N";
SQLExec("SELECT 'Y' FROM PS_ASSET_LOCATION WHERE BUSINESS_UNIT = :1
AND ASSET_ID = :2 AND DOCUMENT_ID = :3", &BU, &ASSET_ID, &NF_BRL, &EXISTE_ATI);
If &EXISTE_ATI <> "Y" Then
If All(&ASSET_ID) Then
REM MOVIMENTAO NAS TABELAS DO ATIVO;
SQLExec("SELECT MAX(EFFSEQ + 1) FROM PS_ASSET_LOCATION WHERE B
USINESS_UNIT = :1 AND ASSET_ID = :2", &BU, &ASSET_ID, &EFFSEQ);
SQLExec("INSERT INTO PS_ASSET_LOCATION (BUSINESS_UNIT, ASSET_I
D, EFFDT, EFFSEQ, LOCATION, DOCUMENT_ID, AUTH_STATUS, AUTHORIZATION_NAME) VALUES
(:1,:2, %DATEIN(:3), :4,:5,:6,:7,:8)", &BU, &ASSET_ID, &DATA, &EFFSEQ, &LOCATION
, &NF_BRL, " ", " ");

/****************************** mmcb.sds3686.sn **************


****************/
SQLExec("INSERT INTO PS_MMC_ASSET_LOC (BUSINESS_UNIT, ASSET_ID
, EFFDT, EFFSEQ, BUSINESS_UNIT_BI, NF_BRL_ID, NF_BRL_LINE_NUM) VALUES(:1,:2, %DA
TEIN(:3), :4,:5,:6,:7)", &BU, &ASSET_ID, &DATA, &EFFSEQ, NF_HDR_BBL_VW3.BUSINESS
_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &LN);
/****************************** mmcb.sds3686.en **************
****************/

SQLExec("UPDATE PS_BOOK SET LAST_TRANS_DT = %datein(:3), LAST_


ACCOUNTING_DT = %datein(:3) WHERE BUSINESS_UNIT = :1 AND ASSET_ID = :2", &BU, &A
SSET_ID, &DATA);
REM MOVIMENTAO NAS TABELAS DO ATIVO;
SQLExec("SELECT SUBSTR(NAME1,1,30) FROM PS_CUSTOMER WHERE CUST
_ID = :1", &LOCATION, &CUSTODIAN);
SQLExec("SELECT MAX(EFFSEQ + 1) FROM PS_ASSET_CUSTODIAN WHERE
BUSINESS_UNIT = :1 AND ASSET_ID = :2", &BU, &ASSET_ID, &EFFSEQ);
&NF_BRL_CUSTODIAN = "NF." | &IDGRUPO | &NF_BRL | "-" | &SERIE_

NF;
SQLExec("INSERT INTO PS_ASSET_CUSTODIAN (BUSINESS_UNIT, ASSET_
ID, EFFDT, EFFSEQ, CUSTODIAN, EMPLID, OPERATING_UNIT, DEPTID, PROJECT_ID, OFFSIT
E_SW, AUTH_STATUS, AUTHORIZATION_NAME, AUTHORIZATION_DT) VALUES(:1,:2, %DATEIN(:
3),:4,:5,:6,:7,:8, :9, :10, :11, :12, %DATEIN(:13))", &BU, &ASSET_ID, &DATA, &EF
FSEQ, &CUSTODIAN, " ", " ", " ", " ", "Y", "A", &NF_BRL_CUSTODIAN, &DATA);

/****************************** mmcb.sds3686.sn **************


****************/
&SQL = CreateSQL("SELECT CHILD_ASSET_ID FROM SYSADM.PS_PRNT_CH
_VW_ABL WHERE BUSINESS_UNIT = :1 AND ASSET_ID = :2", &BU, &ASSET_ID);
While &SQL.Fetch(&V_CHILD_ASSET_ID)
SQLExec("SELECT MAX(EFFSEQ + 1) FROM PS_ASSET_LOCATION WHER
E BUSINESS_UNIT = :1 AND ASSET_ID = :2", &BU, &V_CHILD_ASSET_ID, &EFFSEQ);
SQLExec("INSERT INTO PS_ASSET_LOCATION (BUSINESS_UNIT, ASSE
T_ID, EFFDT, EFFSEQ, LOCATION, DOCUMENT_ID, AUTH_STATUS, AUTHORIZATION_NAME) VAL
UES(:1,:2, %DATEIN(:3), :4,:5,:6,:7,:8)", &BU, &V_CHILD_ASSET_ID, &DATA, &EFFSEQ
, &LOCATION, &NF_BRL, " ", " ");
SQLExec("INSERT INTO PS_MMC_ASSET_LOC (BUSINESS_UNIT, ASSET
_ID, EFFDT, EFFSEQ, BUSINESS_UNIT_BI, NF_BRL_ID, NF_BRL_LINE_NUM) VALUES(:1,:2,
%DATEIN(:3), :4,:5,:6,:7)", &BU, &V_CHILD_ASSET_ID, &DATA, &EFFSEQ, NF_HDR_BBL_V
W3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &LN);
End-While;
/****************************** mmcb.sds3686.en **************
****************/

End-If;
End-If;

/****************************** mmcb.sds3686.sn ********************


**********/
Else
/************************** mmcb.sds4689.so ************************
**/
/*

&BU = BU_SETID("COCT1");

*/
/************************** mmcb.sds4689.eo ************************
**/
/************************** mmcb.sds4689.sn ************************
**/
SQLExec("SELECT BUSINESS_UNIT_GL FROM SYSADM.PS_BUS_UNIT_TBL_BI WHER
E BUSINESS_UNIT = :1", NF_HDR_BBL_VW3.BUSINESS_UNIT, &BU);
/************************** mmcb.sds4689.en ************************
**/

&DATA = %Date;
&OPRID = %OperatorId;
&EXISTE_ATI = "N";
SQLExec("SELECT 'Y' FROM PS_ASSET_LOCATION WHERE BUSINESS_UNIT = :1
AND ASSET_ID = :2 AND DOCUMENT_ID = :3", &BU, &ASSET_ID, &NF_BRL, &EXISTE_ATI);
If &EXISTE_ATI <> "Y" Then
If All(&ASSET_ID) Then
SQLExec("SELECT LOCATION FROM PS_ASSET_LOC_VW WHERE BUSINESS_U
NIT = :1 AND ASSET_ID = :2", &BU, &ASSET_ID, &LOCATION_ATUAL);
SQLExec("SELECT MAX(EFFSEQ + 1) FROM PS_ASSET_LOCATION WHERE B
USINESS_UNIT = :1 AND ASSET_ID = :2", &BU, &ASSET_ID, &EFFSEQ);
SQLExec("INSERT INTO PS_ASSET_LOCATION (BUSINESS_UNIT, ASSET_I
D, EFFDT, EFFSEQ, LOCATION, DOCUMENT_ID, AUTH_STATUS, AUTHORIZATION_NAME) VALUES
(:1,:2, %DATEIN(:3), :4,:5,:6,:7,:8)", &BU, &ASSET_ID, &DATA, &EFFSEQ, &LOCATION
_ATUAL, &NF_BRL, " ", " ");
SQLExec("INSERT INTO PS_MMC_ASSET_LOC (BUSINESS_UNIT, ASSET_ID
, EFFDT, EFFSEQ, BUSINESS_UNIT_BI, NF_BRL_ID, NF_BRL_LINE_NUM) VALUES(:1,:2, %DA
TEIN(:3), :4,:5,:6,:7)", &BU, &ASSET_ID, &DATA, &EFFSEQ, NF_HDR_BBL_VW3.BUSINESS
_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &LN);
SQLExec("UPDATE PS_BOOK SET LAST_TRANS_DT = %datein(:3), LAST_
ACCOUNTING_DT = %datein(:3) WHERE BUSINESS_UNIT = :1 AND ASSET_ID = :2", &BU, &A
SSET_ID, &DATA);
&SQL = CreateSQL("SELECT CHILD_ASSET_ID FROM SYSADM.PS_PRNT_CH
_VW_ABL WHERE BUSINESS_UNIT = :1 AND ASSET_ID = :2", &BU, &ASSET_ID);
While &SQL.Fetch(&V_CHILD_ASSET_ID)
SQLExec("SELECT MAX(EFFSEQ + 1) FROM PS_ASSET_LOCATION WHER
E BUSINESS_UNIT = :1 AND ASSET_ID = :2", &BU, &V_CHILD_ASSET_ID, &EFFSEQ);
SQLExec("INSERT INTO PS_ASSET_LOCATION (BUSINESS_UNIT, ASSE
T_ID, EFFDT, EFFSEQ, LOCATION, DOCUMENT_ID, AUTH_STATUS, AUTHORIZATION_NAME) VAL
UES(:1,:2, %DATEIN(:3), :4,:5,:6,:7,:8)", &BU, &V_CHILD_ASSET_ID, &DATA, &EFFSEQ
, &LOCATION_ATUAL, &NF_BRL, " ", " ");
SQLExec("INSERT INTO PS_MMC_ASSET_LOC (BUSINESS_UNIT, ASSET
_ID, EFFDT, EFFSEQ, BUSINESS_UNIT_BI, NF_BRL_ID, NF_BRL_LINE_NUM) VALUES(:1,:2,
%DATEIN(:3), :4,:5,:6,:7)", &BU, &V_CHILD_ASSET_ID, &DATA, &EFFSEQ, NF_HDR_BBL_V
W3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &LN);
End-While;
End-If;
End-If;
/****************************** mmcb.sds3686.en ********************
**********/
End-If;

End-For;
/* Help Desk 49864 14/07/2008 - */
End-If;
End-If;
/* Help Desk 49864 14/07/2008 - */
/*** Jeison Caldas - 23/01/08 - Ativ.2440 - Controle de transferncia de Ativos Fim ***/
/************************* mmcb.at2617.sn *************************************
*******/
/*##############################################################################
#######
#
I N I C I O R E M E S S A R A L L Y
#
################################################################################
######*/
If CONFIRMED_FLAG = "Y" Then
If All(MMC_RALLY_WRK.MMC_RALLY_ID) Then
SQLExec("select count(business_unit) from sysadm.ps_MMC_IN_RALLYPAR where
setid =:1 and mmc_rally_id=:2 ", MMC_RALLY_WRK.SETID, MMC_RALLY_WRK.MMC_RALLY_I
D, &COUNT_RM_PARAM);
If &COUNT_RM_PARAM = 0 Then
Error ("Erro Retorno Rally: No e possivel fazer remessa de Rally sem par
ametrizao. Para solucinar o problema faa rarametrizao no caminho: Home > Menu MMC > M
enu MMC > Rally > Parametrizao Remessa Rally ");
End-If;
End-If;
&SQL = "
&SQL = &SQL
&SQL = &SQL
&SQL = &SQL
D | "'";
&SQL = &SQL
_UNIT | "'";

| "
| "
| "
| "

SELECT ";
A.LT_GRP_ID_BBL ";
FROM SYSADM.PS_NF_HDR_BRL A ";
WHERE A.NF_BRL_ID
= '" | NF_HDR_BBL_VW3.NF_BRL_I
AND A.BUSINESS_UNIT

= '" | NF_HDR_BBL_VW3.BUSINESS

SQLExec(&SQL, &VAR_LT_GRP_ID_BBL);
SQLExec("select 'Y' from sysadm.ps_mmc_in_rallypar where LT_GRP_ID_BBL =:1 an
d rownum = 1", &VAR_LT_GRP_ID_BBL, &RNF_RALLY);
If &RNF_RALLY = "Y" Then
If None(MMC_RALLY_WRK.SETID) Or
None(MMC_RALLY_WRK.MMC_RALLY_ID) Or
MMC_RALLY_WRK.MMC_RALLY_ID = 0 Then

Error ("Erro Remessa Rally: Grupo Operacao da NF: " | NF_HDR_BBL_VW3.NF


_BRL_ID | " de Remessa Rally, selecione o Rally Relativo a NF.");
Else
&VAR_RALLY_SETID = MMC_RALLY_WRK.SETID;
&VAR_RALLY_ID = MMC_RALLY_WRK.MMC_RALLY_ID;
End-If;
End-If;
If All(&VAR_RALLY_ID) And
&VAR_RALLY_ID > 0 Then
SQLExec("select count(*) from sysadm.ps_mmc_rally where eff_status ='A'",
&NUMERO_RALLY_ATIVO);
If &NUMERO_RALLY_ATIVO <> 1 Then
Error ("Erro Remessa Rally: Existe mais de uma Rally Ativo, acerte o ca
dastro e tente novamente.");
End-If;
CHECA_REMESSA_OPERACAO_PARAM(&VAR_RALLY_SETID, &VAR_RALLY_ID, NF_HDR_BBL_V
W3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &VAR_LT_GRP_ID_BBL);
/*|||||||||||||||||||||||||||||||||||||||||||||
|| INICIO: Reduo Estoque
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
&SQL3 = "
&SQL3 = &SQL3
&SQL3 = &SQL3
&SQL3 = &SQL3
&SQL3 = &SQL3
&SQL3 = &SQL3
&SQL3 = &SQL3
&SQL3 = &SQL3
INESS_UNIT | "' ";
&SQL3 = &SQL3
L_ID | "' ";
&SQL3 = &SQL3
&SQL3 = &SQL3
&SQL3 = &SQL3
;
&SQL3 = &SQL3
&SQL3 = &SQL3
";
&SQL3 = &SQL3
&SQL3 = &SQL3
&SQL3 = &SQL3
";
&SQL3 = &SQL3
&SQL3 = &SQL3
NO ";
&SQL3 = &SQL3
&SQL3 = &SQL3
&SQL3 = &SQL3

"
"
"
"
"
"
"

SELECT

DISTINCT C.BUSINESS_UNIT, ";


C.SHIP_ID ";
FROM SYSADM.PS_NF_HDR_BRL A, ";
SYSADM.PS_NF_LN_BRL B, ";
SYSADM.PS_RMNEIO_LINE_BBL C, ";
SYSADM.PS_DEMAND_PHYS_INV D, ";
SYSADM.PS_SHIP_INF_INV SHIP ";
WHERE B.BUSINESS_UNIT = '" | NF_HDR_BBL_VW3.BUS

| "

AND B.NF_BRL_ID = '" | NF_HDR_BBL_VW3.NF_BR

| "
| "
| "

AND A.BUSINESS_UNIT = B.BUSINESS_UNIT ";


AND A.NF_BRL_ID = B.NF_BRL_ID ";
AND C.BUSINESS_UNIT_BI = B.BUSINESS_UNIT "

| "
| "

AND C.NF_BRL_ID = B.NF_BRL_ID ";


AND C.NF_BRL_LINE_NUM = B.NF_BRL_LINE_NUM

| "
| "
| "

AND D.BUSINESS_UNIT = C.BUSINESS_UNIT ";


AND D.DEMAND_SOURCE = C.DEMAND_SOURCE ";
AND D.SOURCE_BUS_UNIT = C.SOURCE_BUS_UNIT

| "
| "

AND D.ORDER_NO = C.ORDER_NO ";


AND D.ORDER_INT_LINE_NO = C.ORDER_INT_LINE_

| "
| "
| "

AND D.SCHED_LINE_NO = C.SCHED_LINE_NO ";


AND D.INV_ITEM_ID = C.INV_ITEM_ID ";
AND D.DEMAND_LINE_NO = D.DEMAND_LINE_NO

|
|
|
|
|
|
|

";
&SQL3
SS_UNIT
&SQL3
_SOURCE
&SQL3
_BUS_UNIT
&SQL3
NO
&SQL3
INT_LINE_NO
&SQL3
LINE_NO
&SQL3
EM_ID
&SQL3
_LINE_NO

= &SQL3
";
= &SQL3
";
= &SQL3
";
= &SQL3
";
= &SQL3
";
= &SQL3
";
= &SQL3
";
= &SQL3
";

| "

AND SHIP.BUSINESS_UNIT

D.BUSINE

| "

AND SHIP.DEMAND_SOURCE

D.DEMAND

| "

AND SHIP.SOURCE_BUS_UNIT

D.SOURCE

| "

AND SHIP.ORDER_NO

D.ORDER_

| "

AND SHIP.ORDER_INT_LINE_NO

D.ORDER_

| "

AND SHIP.SCHED_LINE_NO

D.SCHED_

| "

AND SHIP.INV_ITEM_ID

D.INV_IT

| "

AND SHIP.DEMAND_LINE_NO

D.DEMAND

&cmdSQL3 = CreateSQL(&SQL3);
While &cmdSQL3.fetch(&BAIXA_BUSINESS_UNIT, &BAIXA_SHIP_ID)
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
SS_UNIT | "' ";
&SQL_UPDATE
";
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
";
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
V TRAN ";
&SQL_UPDATE
&SQL_UPDATE
";
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
O, ";
&SQL_UPDATE
";
&SQL_UPDATE

=
=
=
=
=

"
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE

|
|
|
|

UPDATE SYSADM.PS_SHIP_INF_INV ";


" SET SHIPPED_FLAG
= 'Y'
";
"
, PSSH_COMPLETE
= 'N' ";
"
, PSSH_RUN_STATUS
= '1' ";
" WHERE BUSINESS_UNIT= '" | &BAIXA_BUSINE

= &SQL_UPDATE | "

AND

SHIP_ID= '" | &BAIXA_SHIP_ID | "'

=
=
=
=
=
=
=
=
=
=
=
=
=

&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE

|
|
|
|
|
|
|
|
|
|
|
|
|

" AND ( ";


"
BUSINESS_UNIT, ";
"
ORDER_NO, ";
"
ORDER_INT_LINE_NO, ";
"
SCHED_LINE_NO, ";
"
INV_ITEM_ID, ";
"
DEMAND_LINE_NO ";
"
) ";
" NOT IN ";
"
( ";
"
SELECT TRAN.BUSINESS_UNIT, ";
"
TRAN.ORDER_NO, ";
"
TRAN.ORDER_INT_LINE_NO,

=
=
=
=

&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE
&SQL_UPDATE

|
|
|
|

"
"
"
"

= &SQL_UPDATE | "
= &SQL_UPDATE | "

TRAN.SCHED_LINE_NO, ";
TRAN.INV_ITEM_ID, ";
TRAN.DEMAND_LINE_NO ";
FROM SYSADM.PS_TRANSACTION_IN
WHERE ( ";
TRAN.BUSINESS_UNIT,

= &SQL_UPDATE | "
= &SQL_UPDATE | "
= &SQL_UPDATE | "

TRAN.INV_ITEM_ID, ";
TRAN.ORDER_NO, ";
TRAN.ORDER_INT_LINE_N

= &SQL_UPDATE | "

TRAN.SCHED_LINE_NO,

= &SQL_UPDATE | "

TRAN.DEMAND_LINE_NO "

;
&SQL_UPDATE = &SQL_UPDATE | "
&SQL_UPDATE = &SQL_UPDATE | "
&SQL_UPDATE = &SQL_UPDATE | "
&SQL_UPDATE = &SQL_UPDATE | "
S_UNIT, ";
&SQL_UPDATE = &SQL_UPDATE | "
M_ID, ";
&SQL_UPDATE = &SQL_UPDATE | "
O, ";
&SQL_UPDATE = &SQL_UPDATE | "
NT_LINE_NO, ";
&SQL_UPDATE = &SQL_UPDATE | "
INE_NO, ";
&SQL_UPDATE = &SQL_UPDATE | "
LINE_NO ";
&SQL_UPDATE = &SQL_UPDATE | "
IP_INF_INV SHIP ";
&SQL_UPDATE = &SQL_UPDATE | "
S_UNIT= '" | &BAIXA_BUSINESS_UNIT | "' ";
&SQL_UPDATE = &SQL_UPDATE | "
= '" | &BAIXA_SHIP_ID | "' ";
&SQL_UPDATE = &SQL_UPDATE | "
S_UNIT
= TRAN.BUSINESS_UNIT ";
&SQL_UPDATE = &SQL_UPDATE | "
M_ID
= TRAN.INV_ITEM_ID ";
&SQL_UPDATE = &SQL_UPDATE | "
O
= TRAN.ORDER_NO ";
&SQL_UPDATE = &SQL_UPDATE | "
NT_LINE_NO = TRAN.ORDER_INT_LINE_NO ";
&SQL_UPDATE = &SQL_UPDATE | "
INE_NO
= TRAN.SCHED_LINE_NO ";
&SQL_UPDATE = &SQL_UPDATE | "
LINE_NO
= TRAN.DEMAND_LINE_NO ";
&SQL_UPDATE = &SQL_UPDATE | "
&SQL_UPDATE = &SQL_UPDATE | "

) ";
IN ";
( ";
SELECT SHIP.BUSINES
SHIP.INV_ITE
SHIP.ORDER_N
SHIP.ORDER_I
SHIP.SCHED_L
SHIP.DEMAND_
FROM SYSADM.PS_SH
WHERE SHIP.BUSINES
AND SHIP.SHIP_ID
AND SHIP.BUSINES
AND SHIP.INV_ITE
AND SHIP.ORDER_N
AND SHIP.ORDER_I
AND SHIP.SCHED_L
AND SHIP.DEMAND_
) ";
)

";

SQLExec(&SQL_UPDATE);
SQLExec("SELECT DISTINCT SHIP_ID FROM SYSADM.PS_SHIP_INF_INV WHERE BUSI
NESS_UNIT=:1 AND SHIP_ID=:2 AND SHIPPED_FLAG='Y' AND CANCEL_FLAG = 'N' AND PSSH_
COMPLETE = 'N' AND PSSH_RUN_STATUS = '1'", &BAIXA_BUSINESS_UNIT, &BAIXA_SHIP_ID,
&SHIPID_VALIDO);
If All(&SHIPID_VALIDO) Then
REDUCAO_ESTOQUE(&BAIXA_BUSINESS_UNIT, &BAIXA_SHIP_ID);
End-If;
End-While;
/*|||||||||||||||||||||||||||||||||||||||||||||
|| FIM: Reduo Estoque
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/*|||||||||||||||||||||||||||||||||||||||||||||
|| Criando entrada Estoque Rally.

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/

&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
SS_UNIT | "'
&SQL1 =
| "' ";
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
";
&SQL1 =
&SQL1 =
O ";
&SQL1 =
&SQL1 =
&SQL1 =
&SQL1 =
_LINE_NUM

"
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
";
&SQL1

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"

SELECT B.BUSINESS_UNIT,
";
B.NF_BRL_ID,
";
C.BUSINESS_UNIT,
";
B.NF_BRL_LINE_NUM,
";
B.INV_ITEM_ID,
";
B.UNIT_OF_MEASURE,
";
B.QTY_NF_BRL,
";
SHIP.DISTRIB_TYPE,
";
SHIP.BUSINESS_UNIT,
";
SHIP.ORDER_NO,
";
SHIP.ORDER_INT_LINE_NO,
";
SHIP.SCHED_LINE_NO,
";
SHIP.DEMAND_LINE_NO,
";
B.TOF_PBL
";
FROM SYSADM.PS_NF_HDR_BRL A,
";
SYSADM.PS_NF_LN_BRL B,
";
SYSADM.PS_RMNEIO_LINE_BBL C, ";
SYSADM.PS_SHIP_INF_INV SHIP ";
WHERE B.BUSINESS_UNIT = '" | NF_HDR_BBL_VW3.BUSINE

| "

AND B.NF_BRL_ID = '" | NF_HDR_BBL_VW3.NF_BRL_ID

&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1
&SQL1

|
|
|
|
|
|
|
|

AND
AND
AND
AND
AND
AND
AND
AND

"
"
"
"
"
"
"
"

A.BUSINESS_UNIT = B.BUSINESS_UNIT ";


A.NF_BRL_ID = B.NF_BRL_ID ";
C.BUSINESS_UNIT_BI = B.BUSINESS_UNIT ";
C.NF_BRL_ID = B.NF_BRL_ID ";
C.NF_BRL_LINE_NUM = B.NF_BRL_LINE_NUM ";
SHIP.BUSINESS_UNIT = C.BUSINESS_UNIT ";
SHIP.DEMAND_SOURCE = C.DEMAND_SOURCE ";
SHIP.SOURCE_BUS_UNIT = C.SOURCE_BUS_UNIT

&SQL1 | "
&SQL1 | "

AND SHIP.ORDER_NO = C.ORDER_NO ";


AND SHIP.ORDER_INT_LINE_NO = C.ORDER_INT_LINE_N

&SQL1
&SQL1
&SQL1
&SQL1
";

AND SHIP.SCHED_LINE_NO = C.SCHED_LINE_NO


";
AND SHIP.INV_ITEM_ID = C.INV_ITEM_ID
";
AND SHIP.DEMAND_LINE_NO = C.DEMAND_LINE_NO ";
ORDER BY B.BUSINESS_UNIT, B.NF_BRL_ID, B.NF_BRL

|
|
|
|

"
"
"
"

&cmdSQL = CreateSQL(&SQL1);
While &cmdSQL.fetch(&VR_BUSINESS_UNIT, &VR_NF_BRL_ID, &VR_BUSINESS_UNIT_IN
, &VR_NF_BRL_LINE_NUM, &VR_INV_ITEM_ID, &VR_UNIT_OF_MEASURE, &VR_QTY_NF_BRL, &VR
_DISTRIB_TYPE, &VR_BUSINESS_UNIT_BAIXA, &VR_ORDER_NO, &VR_ORDER_INT_LINE_NO, &VR
_SCHED_LINE_NO, &VR_DEMAND_LINE_NO, &VR_TOF_PBL)
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

=
=
=
=
=
=
=

"";
" select ";
&SQL | "
&SQL | "
&SQL | "
&SQL | "
&SQL | "

business_unit, ";
storage_area, ";
stor_level_1, ";
stor_level_2, ";
stor_level_3, ";

&SQL
&SQL
&SQL
&SQL
&SQL

=
=
=
=
=

&SQL
&SQL
&SQL
&SQL
&SQL

|
|
|
|
|

"
stor_level_4,
";
"
DISTRIB_TYPE
";
"
from sysadm.ps_mmc_rally r , ";
"
sysadm.ps_mmc_in_rallypar inpar ";
" where r.setid
= '" | &VAR_RALLY_SETI

&SQL
&SQL
&SQL
&SQL
BBL | "'";
&SQL
;

=
=
=
=

&SQL
&SQL
&SQL
&SQL

|
|
|
|

"
"
"
"

D | "'";

= &SQL | "

and
and
and
and

r.mmc_rally_id
inpar.setid
inpar.mmc_rally_id
inpar.lt_grp_id_bbl

and inpar.tof_pbl

=
=
=
=

" | &VAR_RALLY_ID;
r.setid ";
r.mmc_rally_id ";
'" | &VAR_LT_GRP_ID_

= '" | &VR_TOF_PBL | "'"

SQLExec(&SQL, &VIN_BUSINESS_UNIT, &VIN_STORAGE_AREA, &VIN_STOR_LEVEL_1,


&VIN_STOR_LEVEL_2, &VIN_STOR_LEVEL_3, &VIN_STOR_LEVEL_4, &VIN_DISTRIB_TYPE);
If None(&VIN_BUSINESS_UNIT) Or
None(&VIN_STORAGE_AREA) Or
None(&VIN_STOR_LEVEL_1) Or
None(&VIN_STOR_LEVEL_2) Or
None(&VIN_STOR_LEVEL_3) Or
None(&VIN_STOR_LEVEL_4) Then
Error ("Erro Remessa Rally: No existe estoque parametrizado para Grup
o: " | &VAR_LT_GRP_ID_BBL | " OF: " | &VR_TOF_PBL);
End-If;
/* TRAVA PARA NO DEIXAR ENVIAR RALLY PARA UNIDADE DE ESTOQUE ORIGEM E DE
STINO */
SQLExec(" SELECT BUSINESS_UNIT_IN FROM SYSADM.PS_NF_HDR_BBL_FS WHERE BU
SINESS_UNIT = :1 AND NF_BRL_ID = :2 ", NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_
VW3.NF_BRL_ID, &BUSINESS_UNIT_IN_ORIGEM);
If All(&BUSINESS_UNIT_IN_ORIGEM) And
(&BUSINESS_UNIT_IN_ORIGEM = &VIN_BUSINESS_UNIT) Then
Error ("Erro: No possvel fazer remessa de Rally quando as unidade de e
stoque de origem e destino so iguais. Unidade de estoque: " | &VIN_BUSINESS_UNIT
| ".");
End-If;
&P_BUSINESS_UNIT = &VIN_BUSINESS_UNIT;
&P_STAGED_DATE = Date3(1900, 1, 1);
&P_INV_ITEM_ID = &VR_INV_ITEM_ID;
SQLExec("select 'Y' from sysadm.ps_bu_items_inv where business_unit=:1
and inv_item_id =:2 ", &VIN_BUSINESS_UNIT, &VR_INV_ITEM_ID, &EXISTE_BU_ITEM_INV)
;
If &EXISTE_BU_ITEM_INV <> "Y" Then
Error ("Erro Remessa Rally: No existe parametrizao Unidade Negocio: " |
&VIN_BUSINESS_UNIT | " para Item: " | &VR_INV_ITEM_ID);
End-If;
&P_STORAGE_AREA = &VIN_STORAGE_AREA;
&P_STOR_LEVEL_1 = &VIN_STOR_LEVEL_1;
&P_STOR_LEVEL_2 = &VIN_STOR_LEVEL_2;

&P_STOR_LEVEL_3 = &VIN_STOR_LEVEL_3;
&P_STOR_LEVEL_4 = &VIN_STOR_LEVEL_4;
SQLExec("select 'Y' from sysadm.ps_master_item_tbl where setid= ( SELEC
T SYSADM.MMC_PK_PU.FC_BUSCA_SETID FROM DUAL ) and inv_item_id=:1 and unit_measur
e_std=:2", &VR_INV_ITEM_ID, &VR_UNIT_OF_MEASURE, &FLG_UM_PADRAO);
If &FLG_UM_PADRAO <> "Y" Then
Error ("Erro Remessa Rally: UM NF: " | &VR_UNIT_OF_MEASURE | " difer
ente Unidade Medida padro do Item: " | &VR_INV_ITEM_ID);
End-If;
&P_UNIT_OF_MEASURE = &VR_UNIT_OF_MEASURE;
&P_QTY = &VR_QTY_NF_BRL;
&P_DEPTO = " ";
&P_DISTRIB_TYPE = &VIN_DISTRIB_TYPE;
&P_DT_TIMESTAMP = %Datetime;
&P_BUSINESS_UNIT_RECV = &VR_BUSINESS_UNIT;
&P_RECEIVER_ID = &VR_NF_BRL_ID;
&P_RECV_LN_NBR = &VR_NF_BRL_LINE_NUM;
&P_RECV_SHIP_SEQ_NBR = 0;
&P_SOURCE_BUS_UNIT = &VR_BUSINESS_UNIT;
&P_ORDER_NO = &VR_ORDER_NO;
&P_ORDER_INT_LINE_NO = &VR_ORDER_INT_LINE_NO;
/*******---------------------------***********
Pegando custo Unidade Baixa para ser uzado unidade Entrada.
*******---------------------------***********/
SQLExec("SELECT %DateTimeOut(DT_TIMESTAMP), INV_LOT_ID, SERIAL_ID, CONT
AINER_ID, seq_nbr from sysadm.PS_TRANSACTION_INV WHERE BUSINESS_UNIT=:1 AND INV_
ITEM_ID=:2 AND ORDER_NO=:3 AND ORDER_INT_LINE_NO=:4 AND SCHED_LINE_NO=:5 AND DEM
AND_LINE_NO=:6 ", &VR_BUSINESS_UNIT_BAIXA, &P_INV_ITEM_ID, &VR_ORDER_NO, &VR_ORD
ER_INT_LINE_NO, &VR_SCHED_LINE_NO, &VR_DEMAND_LINE_NO, &TRAN_DT_TIMESTAMP, &TRAN
_INV_LOT_ID, &TRAN_SERIAL_ID, &TRAN_CONTAINER_ID, &TRAN_SEQ_NBR);;
SQLExec("select config_code from sysadm.ps_ship_inf_inv where business_
unit=:1 and order_no=:2 and order_int_line_no=:3", &VR_BUSINESS_UNIT_BAIXA, &VR_
ORDER_NO, &VR_ORDER_INT_LINE_NO, &CONFIG_CODE_BAIXA);
If None(&TRAN_DT_TIMESTAMP) Then
Error ("Erro Remessa Rally: No foi possivel encontrar Baixa estoque U
N: " | &VR_BUSINESS_UNIT_BAIXA | ", " | &P_INV_ITEM_ID | " ," | &VR_ORDER_NO | "
, " | &VR_ORDER_INT_LINE_NO);
End-If;
&CUSTO_UN_ESTOQUE = BUSCA_CUSTO_ITEM(&VR_BUSINESS_UNIT_BAIXA, &P_INV_IT
EM_ID, &TRAN_DT_TIMESTAMP, &CONFIG_CODE_BAIXA);
/*******---------------------------***********
FIM Pegando custo Unidade Baixa para ser uzado unidade Entrada.
*******---------------------------***********/
&P_INV_LOT_ID = &TRAN_INV_LOT_ID;
&P_SERIAL_ID = &TRAN_SERIAL_ID;
&P_CONTAINER_ID = &TRAN_CONTAINER_ID;
&P_PARAMETRO_OPCIONAL = "USA_CUSTO_UNIDADE_ORIGEM";

SQLExec("SELECT DT_TIMESTAMP, SEQ_NBR FROM SYSADM.PS_TRANSACTION_INV WH


ERE BUSINESS_UNIT=:1 AND INV_ITEM_ID=:2 AND TRANSACTION_GROUP='020' AND RECEIVER
_ID=:3 AND RECV_LN_NBR=:4", &P_BUSINESS_UNIT, &P_INV_ITEM_ID, &P_RECEIVER_ID, &P
_RECV_LN_NBR, &ERRO_T_DT_TIMESTAMP, &ERRO_T_SEQ_NBR);
If All(&ERRO_T_DT_TIMESTAMP) Then
Error ("Erro Remessa Rally: J existe transao de Estoque para Esta NF: "
| &P_BUSINESS_UNIT | ", " | &P_INV_ITEM_ID | ", " | ", " | &ERRO_T_DT_TIMESTAMP
| ", " | &ERRO_T_SEQ_NBR);
End-If;
ENTRADA_ESTOQUE(&P_BUSINESS_UNIT, &P_STAGED_DATE, &P_INV_LOT_ID, &P_INV
_ITEM_ID, &P_SERIAL_ID, &P_STORAGE_AREA, &P_STOR_LEVEL_1, &P_STOR_LEVEL_2, &P_ST
OR_LEVEL_3, &P_STOR_LEVEL_4, &P_CONTAINER_ID, &P_UNIT_OF_MEASURE, &P_QTY, &P_DEP
TO, &P_DISTRIB_TYPE, &P_DT_TIMESTAMP, &P_BUSINESS_UNIT_RECV, &P_RECEIVER_ID, &P_
RECV_LN_NBR, &P_RECV_SHIP_SEQ_NBR, &P_SOURCE_BUS_UNIT, &P_ORDER_NO, &P_ORDER_INT
_LINE_NO, &P_CUSTO, &P_CONFIG_CODE, &P_PARAMETRO_OPCIONAL);
/*|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||
|| FIM Criando entrada Estoque Rally.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||*/
/*|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||
|| INICIO Criando Transao tabela MMC_TE_TRANSAC.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||*/
SQLExec(" select %datetimeout(dt_timestamp), seq_nbr from sysadm.ps_tra
nsaction_inv where business_unit=:1 and dt_timestamp >= SYSDATE -1 and dt_timest
amp <= SYSDATE +1 and inv_item_id=:2 and receiver_id=:3 and recv_ln_nbr =:4 and
transaction_group='020'", &P_BUSINESS_UNIT, &P_INV_ITEM_ID, &VR_NF_BRL_ID, &VR_N
F_BRL_LINE_NUM, &TRAN_020_DT_TIMESTAMP, &TRAN_020_SEQ_NBR);
If None(&TRAN_020_DT_TIMESTAMP) Or
None(&TRAN_020_SEQ_NBR) Then
Error ("Erro Retorno Rally: No foi possivel encontrar Transao Estoque "
| &VR_NF_BRL_ID | "-" | &VR_NF_BRL_LINE_NUM | "-" | &P_INV_ITEM_ID | "-" | &P_B
USINESS_UNIT);
End-If;

&TT_BUSINESS_UNIT_BI = &VR_BUSINESS_UNIT;
&TT_NF_BRL_ID = &VR_NF_BRL_ID;
&TT_NF_BRL_LINE_NUM = &VR_NF_BRL_LINE_NUM;
&TT_MMC_TE_OPERACAO = "101";
&TT_SETID = " ";
&TT_MMC_TE_SOL_ID = 0;
&TT_LINE_NBR = 0;
&TT_BUSINESS_UNIT = &VR_BUSINESS_UNIT_BAIXA;
&TT_INV_ITEM_ID = &VR_INV_ITEM_ID;
&TT_DT_TIMESTAMP = &TRAN_DT_TIMESTAMP;
&TT_SEQ_NBR = &TRAN_SEQ_NBR;
&TT_TRANSACTION_GROUP = "030";
&TT_BUSINESS_UNIT_TO = &P_BUSINESS_UNIT;
&TT_DT_TIMESTAMP_TO = &TRAN_020_DT_TIMESTAMP;

&TT_SEQ_NBR_TO = &TRAN_020_SEQ_NBR;
&TT_MMC_TRAN_GROUP = "020";
&TT_MMC_UN_ORIGEM = " ";
&TT_MMC_NF_ID_ORIGEM = " ";
&TT_MMC_NF_LINE_ORIGEM = 0;
GRAVA_MMC_TE_TRANSAC(&TT_BUSINESS_UNIT_BI, &TT_NF_BRL_ID, &TT_NF_BRL_LI
NE_NUM, &TT_MMC_TE_OPERACAO, &TT_SETID, &TT_MMC_TE_SOL_ID, &TT_LINE_NBR, &TT_BUS
INESS_UNIT, &TT_INV_ITEM_ID, &TT_DT_TIMESTAMP, &TT_SEQ_NBR, &TT_TRANSACTION_GROU
P, &TT_BUSINESS_UNIT_TO, &TT_DT_TIMESTAMP_TO, &TT_SEQ_NBR_TO, &TT_MMC_TRAN_GROUP
, &TT_MMC_UN_ORIGEM, &TT_MMC_NF_ID_ORIGEM, &TT_MMC_NF_LINE_ORIGEM);
/*|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||
|| FIM Criando Transao tabela MMC_TE_TRANSAC.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||*/
/*|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||
|| INICIO Gravando Tabelas Linhs NF Rally.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||*/
&P_SETID = &VAR_RALLY_SETID;
&P_MMC_RALLY_ID = &VAR_RALLY_ID;
&P_BUSINESS_UNIT = &VR_BUSINESS_UNIT;
&P_NF_BRL_ID = &VR_NF_BRL_ID;
&P_NF_BRL_LINE_NUM = &VR_NF_BRL_LINE_NUM;
&P_SEQ_NBR = 1;
&P_MMC_UN_ORIGEM = " ";
&P_MMC_NF_ID_ORIGEM = " ";
&P_MMC_NF_LINE_ORIGEM = 0;
GRAVA_SALDO_LN_RALLY(&P_SETID, &P_MMC_RALLY_ID, &P_BUSINESS_UNIT, &P_NF
_BRL_ID, &P_NF_BRL_LINE_NUM, &P_SEQ_NBR, &P_MMC_UN_ORIGEM, &P_MMC_NF_ID_ORIGEM,
&P_MMC_NF_LINE_ORIGEM);
/*|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||
|| FIM Gravando Tabelas Linhas NF Rally.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||*/
End-While;
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||
|| INICIO Gravando Tabelas Cabealho NF Rally.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||*/

&P_SETID = &VAR_RALLY_SETID;
&P_MMC_RALLY_ID = &VAR_RALLY_ID;

&P_BUSINESS_UNIT = NF_HDR_BBL_VW3.BUSINESS_UNIT;
&P_NF_BRL_ID = NF_HDR_BBL_VW3.NF_BRL_ID;
&P_NF_BRL_STATUS = "F";
GRAVA_SALDO_H_RALLY(&P_SETID, &P_MMC_RALLY_ID, &P_BUSINESS_UNIT, &P_NF_BRL
_ID, &P_NF_BRL_STATUS);
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||
|| FIM Gravando Tabelas Cabealho NF Rally.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||*/
/************************* mmcb.sds2720.sn ******************************
**************/
GRAVA_DISTRIB_TYPE_REMESSA(&VAR_RALLY_SETID, &VAR_RALLY_ID, NF_HDR_BBL_VW3
.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID);
/************************* mmcb.sds2720.en ******************************
**************/

End-If; /* If All(&VAR_RALLY_ID) And &VAR_RALLY_ID > 0 Then */


End-If; /* If CONFIRMED_FLAG = "Y" Then */

/*##############################################################################
#######
#
F I M R E M E S S A R A L L Y
#
################################################################################
######*/
/************************************* mmcb.at2617.en *************************
************/

/************************************* mmcb.sds2618.sn *************************


************/
/*##############################################################################
#######
#
I N I C I O R E T O R N O R A L L Y
#
################################################################################
######*/
If CONFIRMED_FLAG = "Y" Then
If All(MMC_RALLY_WRK.MMC_RALLY_ID) Then
SQLExec("select count(business_unit) from sysadm.ps_MMC_RT_RALLYPAR where
setid =:1 and mmc_rally_id=:2 ", MMC_RALLY_WRK.SETID, MMC_RALLY_WRK.MMC_RALLY_I
D, &COUNT_RM_PARAM);

If &COUNT_RM_PARAM = 0 Then
Error ("Erro Retorno Rally: No e possivel fazer retorno Rally sem parame
trizao. Para solucinar o problema faa rarametrizao no caminho: Home > Menu MMC > Menu
MMC > Rally > Parametrizao Retorno Rally ");
End-If;
End-If;

&VAR_GRUPO_OF = "";
&SQL = "";
&SQL = "
&SQL = &SQL
&SQL = &SQL
&SQL = &SQL
D | "'";
&SQL = &SQL
_UNIT | "'";

| "
| "
| "
| "

SELECT ";
A.LT_GRP_ID_BBL ";
FROM SYSADM.PS_NF_HDR_BRL A ";
WHERE A.NF_BRL_ID
= '" | NF_HDR_BBL_VW3.NF_BRL_I
AND A.BUSINESS_UNIT

= '" | NF_HDR_BBL_VW3.BUSINESS

SQLExec(&SQL, &VAR_GRUPO_OF);
&RNF_RALLY = "";
SQLExec("select 'Y' from sysadm.ps_mmc_rt_rallypar where LT_GRP_ID_BBL =:1 an
d rownum = 1", &VAR_LT_GRP_ID_BBL, &RNF_RALLY);
If &RNF_RALLY = "Y" Then
If None(MMC_RALLY_WRK.SETID) Or
None(MMC_RALLY_WRK.MMC_RALLY_ID) Or
MMC_RALLY_WRK.MMC_RALLY_ID = 0 Then
Error ("Erro Retorno Rally: Grupo Operacao da NF: " | NF_HDR_BBL_VW3.NF
_BRL_ID | " de Remessa Rally, selecione o Rally Relativo a NF.");
Else
&VAR_RT_RALLY_SETID = MMC_RALLY_WRK.SETID;
&VAR_RT_RALLY_ID = MMC_RALLY_WRK.MMC_RALLY_ID;
End-If;
End-If;
If All(&VAR_RT_RALLY_ID) And
&VAR_RT_RALLY_ID > 0 Then
SQLExec("select count(*) from sysadm.ps_mmc_rally where eff_status ='A'",
&NUMERO_RT_RALLY_ATIVO);
If &NUMERO_RT_RALLY_ATIVO <> 1 Then
Error ("Existe mais de uma Rally Ativo, acerte o cadastro e tente novam
ente.");
End-If;

CHECA_RETORNO_OPERACAO_PARAM(&VAR_RT_RALLY_SETID, &VAR_RT_RALLY_ID, NF_HDR


_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &VAR_GRUPO_OF);
&SQL = "";
&SQL = " select ";
&SQL = &SQL | "
b.business_unit, ";
&SQL = &SQL | "
b.nf_brl_id, ";
&SQL = &SQL | "
b.nf_brl_line_num, ";
&SQL = &SQL | "
b.inv_item_id, ";
&SQL = &SQL | "
b.qty_nf_brl, ";
&SQL = &SQL | "
b.unit_of_measure, ";
&SQL = &SQL | "
rtpar.business_unit, ";
&SQL = &SQL | "
rtpar.storage_area, ";
&SQL = &SQL | "
rtpar.stor_level_1, ";
&SQL = &SQL | "
rtpar.stor_level_2, ";
&SQL = &SQL | "
rtpar.stor_level_3, ";
&SQL = &SQL | "
rtpar.stor_level_4, ";
&SQL = &SQL | "
rtpar.distrib_type, ";
&SQL = &SQL | "
ROUND ( b.unit_amt_bse_bbl ";
&SQL = &SQL | "
+ (b.ipitax_brl_amt / b.qty_nf_brl) ";
&SQL = &SQL | "
- (b.pis_amt_bbl / b.qty_nf_brl) ";
&SQL = &SQL | "
- (b.cofins_amt_bbl / b.qty_nf_brl) ";
&SQL = &SQL | "
- (b.ipitax_brl_rcvry / b.qty_nf_brl) ";
&SQL = &SQL | "
- (b.icmstax_brl_rcvry / b.qty_nf_brl) ";
&SQL = &SQL | "
- (b.dscnt_amt / b.qty_nf_brl), ";
&SQL = &SQL | "
4 ";
&SQL = &SQL | "
) custo_entrada ";
&SQL = &SQL | " from sysadm.ps_nf_hdr_brl a, ";
&SQL = &SQL | "
sysadm.ps_nf_ln_brl b, ";
&SQL = &SQL | "
sysadm.ps_mmc_rt_rallypar rtpar ";
&SQL = &SQL | " where b.business_unit
= '" | NF_HDR_BBL_VW3.BU
SINESS_UNIT | "'";
&SQL = &SQL | " and b.nf_brl_id
= '" | NF_HDR_BBL_VW3.NF
_BRL_ID | "'";
&SQL = &SQL | " and a.business_unit
= b.business_unit ";
&SQL = &SQL | " and a.nf_brl_id
= b.nf_brl_id ";
&SQL = &SQL | "
and rtpar.setid
= '" | &VAR_RT_RALLY_S
ETID | "'";
&SQL = &SQL | "
and rtpar.mmc_rally_id
= " | &VAR_RT_RALLY_I
D;
&SQL = &SQL | "
and rtpar.lt_grp_id_bbl
= a.lt_grp_id_bbl ";
&SQL = &SQL | "
and rtpar.tof_pbl
= b.tof_pbl ";
&cmdSQL = CreateSQL(&SQL);
While &cmdSQL.Fetch(&VAR_NF_BU, &VAR_NF_ID, &VAR_NF_LN, &VAR_NF_ITEM, &VAR
_NF_QUANTIDADE, &VAR_UM_NF, &VAR_UN_ENTRADA, &VAR_AREA_ENTRADA, &VAR_L1_ENTRADA,
&VAR_L2_ENTRADA, &VAR_L3_ENTRADA, &VAR_L4_ENTRADA, &VAR_DISTRIB_ENTRADA, &VAR_C
USTO_ENTRADA)
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

=
=
=
=
=
=
=

"";
"
&SQL
&SQL
&SQL
&SQL
&SQL

select
|
|
|
|
|

"
"
"
"
"

";
rmpar.business_unit
rmpar.storage_area,
rmpar.stor_level_1,
rmpar.stor_level_2,
rmpar.stor_level_3,

un_baixa, ";
";
";
";
";

&SQL =
&SQL =
&SQL =
&SQL =
&SQL =
&SQL =
&SQL =
&SQL =
&SQL =
&SQL =
Y_SETID | "'";
&SQL =
_ID;
&SQL =
"'";
&SQL =
"'";
&SQL =
&SQL =
";
&SQL =
";
&SQL =
";
&SQL =
";
&SQL =
it ";
&SQL =
";
&SQL =
rea
";
&SQL =
l_1
";
&SQL =
2
";
&SQL =
l_3
";
&SQL =
l_4
";

&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

|
|
|
|
|
|
|
|
|
|

"
"
"
"
"
"
"
"
"
"

rmpar.stor_level_4, ";
rmpar.distrib_type , ";
ph.qty-ph.qty_reserved qtd_disponivel, ";
ph.serial_id, ";
ph.inv_lot_id ";
from
";
sysadm.ps_mmc_rrm_s_vw srm , ";
sysadm.ps_mmc_in_rallypar rmpar, ";
sysadm.ps_physical_inv ph ";
where srm.setid
= '" | &VAR_RT_RALL

&SQL | "

and srm.mmc_rally_id

= " | &VAR_RT_RALLY

&SQL | "

and srm.mmc_un_origem

= '" | &VAR_NF_BU |

&SQL | "

and srm.mmc_nf_id_origem

= '" | &VAR_NF_ID |

&SQL | "
&SQL | "

and srm.mmc_nf_line_origem
and rmpar.setid

= " | &VAR_NF_LN;
= srm.setid

&SQL | "

and rmpar.mmc_rally_id

= srm.mmc_rally_id

&SQL | "

and rmpar.lt_grp_id_bbl

= srm.lt_grp_id_bbl

&SQL | "

and rmpar.tof_pbl

= srm.tof_pbl

&SQL | "

and ph.business_unit

= rmpar.business_un

&SQL | "

and ph.inv_item_id

= srm.inv_item_id

&SQL | "

and ph.storage_area

= rmpar.storage_a

&SQL | "

and ph.stor_level_1

= rmpar.stor_leve

&SQL | "

and ph.stor_level_2

= rmpar.stor_level_

&SQL | "

and ph.stor_level_3

= rmpar.stor_leve

&SQL | "

and ph.stor_level_4

= rmpar.stor_leve

SQLExec(&SQL, &V_UN_BAIXA, &V_AREA_BAIXA, &V_L1_BAIXA, &V_L2_BAIXA, &V_


L3_BAIXA, &V_L4_BAIXA, &V_DISTRIB_BAIXA, &V_QTD_DISPONIVEL, &V_SERIAL_ID, &V_INV
_LOT_ID);
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|| INICIO ROTINA BAIXA ESTOQUE.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/

If &VAR_NF_QUANTIDADE > &V_QTD_DISPONIVEL Then


Error (" Erro: No e possivel fazer baixa NF: " | &VAR_NF_BU | "-" | &
VAR_NF | "-" | &VAR_NF_ID | "-" | &VAR_NF_LN | " - " | &VAR_NF_ITEM | " , Quanti
dade: " | &VAR_NF_QUANTIDADE | ". Por que o endereo: " | &V_UN_BAIXA | "-" | &V_A
REA_BAIXA | "-" | &V_L1_BAIXA | "-" | &V_L2_BAIXA | "-" | &V_L3_BAIXA | "-" | &V

_L4_BAIXA | ", posui apenas a Quantidade: " | &V_QTD_DISPONIVEL);


End-If;
SQLExec("select 'Y' from sysadm.ps_bu_items_inv where business_unit=:1
and inv_item_id =:2 ", &V_UN_BAIXA, &VAR_NF_ITEM, &EXISTE_RT_BU_ITEM_INV);
If &EXISTE_RT_BU_ITEM_INV <> "Y" Then
Error ("Erro Retorno Rally: No existe parametrizao Unidade Negocio: " |
&V_UN_BAIXA | " para Item: " | &VAR_NF_ITEM);
End-If;
SQLExec("select 'Y' from sysadm.ps_master_item_tbl where setid= ( SELEC
T SYSADM.MMC_PK_PU.FC_BUSCA_SETID FROM DUAL ) and inv_item_id=:1 and unit_measur
e_std=:2", &VAR_NF_ITEM, &VAR_UM_NF, &FLG_RT_UM_PADRAO);
If &FLG_RT_UM_PADRAO <> "Y" Then
Error ("Erro Retorno Rally: UM NF: " | &VR_UNIT_OF_MEASURE | " difer
ente Unidade Medida padro do Item: " | &VR_INV_ITEM_ID);
End-If;
&B_BUSINESS_UNIT = &V_UN_BAIXA;
&B_INV_ITEM_ID = &VAR_NF_ITEM;
&B_INV_LOT_ID = &V_INV_LOT_ID;
&B_QTD = &VAR_NF_QUANTIDADE;
&B_UNIT_OF_MEASURE = &VAR_UM_NF;
&B_SERIAL_ID = &V_SERIAL_ID;
&B_DT_TIMESTAMP = %Datetime;
&B_ORDER_NO = &VAR_NF_ID;
&B_ORDER_INT_LINE_NO = &VAR_NF_LN;
&B_TRANSACTION_DATE = %Date;
&B_STORAGE_AREA = &V_AREA_BAIXA;
&B_STOR_LEVEL_1 = &V_L1_BAIXA;
&B_STOR_LEVEL_2 = &V_L2_BAIXA;
&B_STOR_LEVEL_3 = &V_L3_BAIXA;
&B_STOR_LEVEL_4 = &V_L4_BAIXA;
&B_DEPTID = " ";
&B_DISTRIB_TYPE = &V_DISTRIB_BAIXA;
&B_SHIP_ID = " ";
&B_SOURCE_BUS_UNIT = &VAR_NF_BU;
BAIXA_ESTOQUE(&B_BUSINESS_UNIT, &B_INV_ITEM_ID, &B_INV_LOT_ID, &B_QTD,
&B_UNIT_OF_MEASURE, &B_SERIAL_ID, &B_DT_TIMESTAMP, &B_ORDER_NO, &B_ORDER_INT_LIN
E_NO, &B_TRANSACTION_DATE, &B_STORAGE_AREA, &B_STOR_LEVEL_1, &B_STOR_LEVEL_2, &B
_STOR_LEVEL_3, &B_STOR_LEVEL_4, &B_DEPTID, &B_DISTRIB_TYPE, &B_SHIP_ID, &B_SOURC
E_BUS_UNIT);
SQLExec("select %DateTimeOut(dt_timestamp), seq_nbr from sysadm.ps_tra
nsaction_inv where business_unit = :1 and inv_item_id= :2 and dt_timestamp >= SY
SDATE -1 and dt_timestamp <= SYSDATE +1 and order_no=:3 and order_int_line_no =:
4 and transaction_group='030' ", &B_BUSINESS_UNIT, &B_INV_ITEM_ID, &B_ORDER_NO,
&B_ORDER_INT_LINE_NO, &TRANSAC_030_DT_TIMESTAMP, &TRANSAC_030_SEQ_NBR);
If None(&TRANSAC_030_DT_TIMESTAMP) Or
None(&TRANSAC_030_SEQ_NBR) Then
Error ("Retorno Rally Erro: No Possivel encontar Transao 030 para:" | &
B_BUSINESS_UNIT | "-" | &B_INV_ITEM_ID | "-" | &B_ORDER_NO | "-" | &B_ORDER_INT_
LINE_NO);
End-If;

/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|| FIM ROTINA BAIXA ESTOQUE.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|| INICIO ROTINA ENTRADA ESTOQUE.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
SQLExec("select 'Y' from sysadm.ps_bu_items_inv where business_unit=:1
and inv_item_id =:2 ", &VAR_UN_ENTRADA, &VAR_NF_ITEM, &EXISTE_RT_BU_ITEM_INV1);
If &EXISTE_RT_BU_ITEM_INV1 <> "Y" Then
Error ("Erro Retorno Rally: No existe parametrizao Unidade Negocio: " |
&VAR_UN_ENTRADA | " para Item: " | &VAR_NF_ITEM);
End-If;
&P_BUSINESS_UNIT = &VAR_UN_ENTRADA;
&P_STAGED_DATE = Date3(1900, 1, 1);
&P_INV_LOT_ID = &V_INV_LOT_ID;
&P_INV_ITEM_ID = &VAR_NF_ITEM;
&P_SERIAL_ID = &V_SERIAL_ID;
If None(&VAR_L1_ENTRADA) Or
&VAR_L1_ENTRADA = " " Or
&VAR_L1_ENTRADA = "" Then
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

=
=
=
=
=
=
=
=
=
=

"";
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL
&SQL

|
|
|
|
|
|
|
|
|

" select ";


"
storage_area, ";
"
stor_level_1, ";
"
stor_level_2, ";
"
stor_level_3, ";
"
stor_level_4 ";
" from sysadm.ps_default_loc_inv ";
" where business_unit ='" | &VAR_UN_ENTRADA | "' ";
"
and inv_item_id = '" | &VAR_NF_ITEM | "' ";

SQLExec(&SQL, &P_STORAGE_AREA, &P_STOR_LEVEL_1, &P_STOR_LEVEL_2, &P_


STOR_LEVEL_3, &P_STOR_LEVEL_4);
Else
&P_STORAGE_AREA
&P_STOR_LEVEL_1
&P_STOR_LEVEL_2
&P_STOR_LEVEL_3
&P_STOR_LEVEL_4
End-If;

=
=
=
=
=

&VAR_AREA_ENTRADA;
&VAR_L1_ENTRADA;
&VAR_L2_ENTRADA;
&VAR_L3_ENTRADA;
&VAR_L4_ENTRADA;

If None(&P_STORAGE_AREA) Or
None(&P_STOR_LEVEL_1) Or
None(&P_STOR_LEVEL_2) Or
None(&P_STOR_LEVEL_3) Or
None(&P_STOR_LEVEL_4) Then
Error ("Erro Retorno Rally: No foi encontra Endereo para entrda estoqu
e NF: " | &VAR_NF_BU | "-" | &VAR_NF_ID | "-" | &VAR_NF_LN | "-" | &VAR_NF_ITEM)
;

End-If;
&P_CONTAINER_ID = " ";
&P_UNIT_OF_MEASURE = &VAR_UM_NF;
&P_QTY = &VAR_NF_QUANTIDADE;
&P_DEPTO = " ";
&P_DISTRIB_TYPE = &VAR_DISTRIB_ENTRADA;
&P_DT_TIMESTAMP = %Datetime;
&P_BUSINESS_UNIT_RECV = &VAR_NF_BU;
&P_RECEIVER_ID = &VAR_NF_ID;
&P_RECV_LN_NBR = &VAR_NF_LN;
&P_RECV_SHIP_SEQ_NBR = 0;
&P_SOURCE_BUS_UNIT = &VAR_NF_BU;
&P_ORDER_NO = &VAR_NF_ID;
&P_ORDER_INT_LINE_NO = &VAR_NF_LN;
&P_CUSTO = &VAR_CUSTO_ENTRADA;
&P_PARAMETRO_OPCIONAL = "USA_CUSTO_UNIDADE_ORIGEM";
If &P_CUSTO <= 0 Then
Error (" Erro Retorno Rally: No foi possivel encontrar custo para NF:
" | &VAR_NF_BU | "-" | &VAR_NF_ID | "-" | &VAR_NF_LN | "-" | &VAR_NF_ITEM);
End-If;
&P_CONFIG_CODE = &V_INV_LOT_ID;
ENTRADA_ESTOQUE(&P_BUSINESS_UNIT, &P_STAGED_DATE, &P_INV_LOT_ID, &P_INV
_ITEM_ID, &P_SERIAL_ID, &P_STORAGE_AREA, &P_STOR_LEVEL_1, &P_STOR_LEVEL_2, &P_ST
OR_LEVEL_3, &P_STOR_LEVEL_4, &P_CONTAINER_ID, &P_UNIT_OF_MEASURE, &P_QTY, &P_DEP
TO, &P_DISTRIB_TYPE, &P_DT_TIMESTAMP, &P_BUSINESS_UNIT_RECV, &P_RECEIVER_ID, &P_
RECV_LN_NBR, &P_RECV_SHIP_SEQ_NBR, &P_SOURCE_BUS_UNIT, &P_ORDER_NO, &P_ORDER_INT
_LINE_NO, &P_CUSTO, &P_CONFIG_CODE, &P_PARAMETRO_OPCIONAL);
SQLExec("select %DateTimeOut(dt_timestamp), seq_nbr from sysadm.ps_tra
nsaction_inv where business_unit = :1 and inv_item_id= :2 and dt_timestamp >= SY
SDATE -1 and dt_timestamp <= SYSDATE +1 and receiver_id=:3 and recv_ln_nbr =:4 a
nd transaction_group='020' ", &P_BUSINESS_UNIT, &P_INV_ITEM_ID, &P_RECEIVER_ID,
&P_RECV_LN_NBR, &TRANSAC_020_DT_TIMESTAMP, &TRANSAC_020_SEQ_NBR);
If None(&TRANSAC_020_DT_TIMESTAMP) Or
None(&TRANSAC_020_SEQ_NBR) Then
Error ("Retorno Rally Erro: No Possivel encontar Transao 020 para:" | &
P_BUSINESS_UNIT | "-" | &P_INV_ITEM_ID | "-" | &P_RECEIVER_ID | "-" | &P_RECV_LN
_NBR);
End-If;

/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|| FIM ROTINA ENTRADA ESTOQUE.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/*|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||
|| INICIO Criando Transao tabela MMC_TE_TRANSAC.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||*/

&TT_BUSINESS_UNIT_BI = &VAR_NF_BU;
&TT_NF_BRL_ID = &VAR_NF_ID;
&TT_NF_BRL_LINE_NUM = &VAR_NF_LN;
&TT_MMC_TE_OPERACAO = "101";
&TT_SETID = " ";
&TT_MMC_TE_SOL_ID = 0;
&TT_LINE_NBR = 0;
&TT_BUSINESS_UNIT = &V_UN_BAIXA;
&TT_INV_ITEM_ID = &B_INV_ITEM_ID;
&TT_DT_TIMESTAMP = &TRANSAC_030_DT_TIMESTAMP;
&TT_SEQ_NBR = &TRANSAC_030_SEQ_NBR;
&TT_TRANSACTION_GROUP = "030";
&TT_BUSINESS_UNIT_TO = &VAR_UN_ENTRADA;
&TT_DT_TIMESTAMP_TO = &TRANSAC_020_DT_TIMESTAMP;
&TT_SEQ_NBR_TO = &TRANSAC_020_SEQ_NBR;
&TT_MMC_TRAN_GROUP = "020";
&TT_MMC_UN_ORIGEM = " ";
&TT_MMC_NF_ID_ORIGEM = " ";
&TT_MMC_NF_LINE_ORIGEM = 0;
GRAVA_MMC_TE_TRANSAC(&TT_BUSINESS_UNIT_BI, &TT_NF_BRL_ID, &TT_NF_BRL_LI
NE_NUM, &TT_MMC_TE_OPERACAO, &TT_SETID, &TT_MMC_TE_SOL_ID, &TT_LINE_NBR, &TT_BUS
INESS_UNIT, &TT_INV_ITEM_ID, &TT_DT_TIMESTAMP, &TT_SEQ_NBR, &TT_TRANSACTION_GROU
P, &TT_BUSINESS_UNIT_TO, &TT_DT_TIMESTAMP_TO, &TT_SEQ_NBR_TO, &TT_MMC_TRAN_GROUP
, &TT_MMC_UN_ORIGEM, &TT_MMC_NF_ID_ORIGEM, &TT_MMC_NF_LINE_ORIGEM);
/*|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||
|| FIM Criando Transao tabela MMC_TE_TRANSAC.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||*/
End-While;
&cmdSQL.Close();
End-If; /* If All(&VAR_RT_RALLY_ID) And &VAR_RT_RALLY_ID > 0 Then */
End-If; /* If CONFIRMED_FLAG = "Y" Then */
/*##############################################################################
#######
#
F I M R E T O R N O R A L L Y
#
################################################################################
######*/
/************************************* mmcb.sds2618.en *************************
************/

/************************************ mmc.sds5222.sn ***************************


*************/
If %Component = Component.NF_CNFM_BBL Then

If CONFIRMED_FLAG = "Y" Then


&sqlPar = fncMontaSQLParamEDI("A");
SQLExec(&sqlPar, NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &
fazEDI, &business_unit_to, &tableHDR, &tableLN);
If &fazEDI = "Y" Then
/* Busca CNPJ do Emitente */
&cnpjEmit = fncBuscaCnpjEDI(BUSINESS_UNIT);
If All(&cnpjEmit) Then
&statusEDI = fncGetStausEDI(&tableHDR, &business_unit_to, &cnpjEmit,
NF_HDR_BBL_VW3.NF_BRL, NF_HDR_BBL_VW3.NF_BRL_SERIES, NF_HDR_BBL_VW3.NF_ISSUE_DT
_BBL);
If &statusEDI = "" Or
None(&statusEDI) Then
/* Insere cabealho */
&ins1 = "";
&ins1 = &ins1 | " INSERT INTO SYSADM.PS_" | &tableHDR;
&ins1 = &ins1 | " SELECT '" | &business_unit_to | "'
AS BUSINE
SS_UNIT ";
&ins1 = &ins1 | "

, '" | &cnpjEmit | "'

AS CGC_BR

&ins1 = &ins1 | "

, 'NF'

AS NF_BRL

&ins1 = &ins1 | "

, '" | NF_HDR_BBL_VW3.NF_BRL | "' AS NF_BR

L ";
_TYPE ";
L ";
&ins1 = &ins1
S NF_BRL_SERIES ";
&ins1 = &ins1
&ins1 = &ins1
BBL | "') AS NF_BRL_DATE ";
&ins1 = &ins1
&ins1 = &ins1
&ins1 = &ins1
&ins1 = &ins1
ED_BSE_BBL ";
&ins1 = &ins1
_BSE_BBL ";
&ins1 = &ins1
&ins1 = &ins1
&ins1 = &ins1
&ins1 = &ins1
&ins1 = &ins1
RL_BSS ";
&ins1 = &ins1
&ins1 = &ins1
&ins1 = &ins1
&ins1 = &ins1
&ins1 = &ins1
&ins1 = &ins1
&ins1 = &ins1
&ins1 = &ins1
&ins1 = &ins1
&ins1 = &ins1
&ins1 = &ins1
&ins1 = &ins1

| "

, '" | NF_HDR_BBL_VW3.NF_BRL_SERIES | "' A

| "
| "

, CFO_BRL_CD ";
, %DateIn('" | NF_HDR_BBL_VW3.NF_ISSUE_DT_

|
|
|
|

,
,
,
,

"
"
"
"

GROSS_AMT_BSE ";
ICMSSUB_BRL_AMT ";
ICMSTAX_BRL_AMT ";
0

AS ICMSST_R

| "

, 0

AS ICMS_RED

|
|
|
|
|

"
"
"
"
"

,
,
,
,
,

IPITAX_BRL_AMT ";
PISTAX_BRL_AMT ";
COFINSTAX_BRL_AMT ";
ICMSTAX_BRL_BSS ";
0

AS IPITAX_B

|
|
|
|
|
|
|
|
|
|
|
|

"
"
"
"
"
"
"
"
"
"
"
"

,
,
,
,
,
,
,
,
,
,
,
,

PIS_BSS_AMT_BBL ";
COFINS_BSS_AMT_BBL ";
FREIGHT_AMT ";
INSURANCE_BRL_AMT ";
OTHEREXP_BRL_AMT ";
DSCNT_AMT ";
ISSTAX_BRL_AMT ";
IRTAX_BRL_AMT ";
INSS_BRL_RETENTION ";
COFINS_BRL_RETENT ";
PIS_BRL_RETENT ";
CSLL_BRL_RETENT ";

&ins1 = &ins1 | "


&ins1 = &ins1 | "

, ICMSTAX_BRL_RETENT ";
, 'N'

AS PROCESS_

&ins1 = &ins1 | "

, 0

AS PROCESS_

&ins1 = &ins1 | "

, SYSDATE

AS DT_TIMES

FLAG ";
INSTANCE ";
TAMP ";
&ins1 = &ins1 | " FROM SYSADM.PS_NF_HDR_BRL A ";
&ins1 = &ins1 | " WHERE A.BUSINESS_UNIT = :1 ";
&ins1 = &ins1 | "
AND A.NF_BRL_ID
= :2 ";
SQLExec(&ins1, NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BR
L_ID);
&ins2 = "";
&ins2 = &ins2 | " INSERT INTO SYSADM.PS_" | &tableLN;
&ins2 = &ins2 | " SELECT '" | &business_unit_to | "'

AS BUSIN

&ins2 = &ins2 | "

, '" | &cnpjEmit | "'

AS CGC_B

&ins2 = &ins2 | "

, 'NF'

AS NF_BR

&ins2 = &ins2 | "

, '" | NF_HDR_BBL_VW3.NF_BRL | "' AS NF_BR

ESS_UNIT ";
RL ";
L_TYPE ";
L ";
&ins2 = &ins2 | "
, '" | NF_HDR_BBL_VW3.NF_BRL_SERIES | "' A
S NF_BRL_SERIES ";
&ins2 = &ins2 | "
, A.NF_BRL_LINE_NUM
";
&ins2 = &ins2 | "
, NVL( ( SELECT CASE WHEN LENGTH(MT.NF_BR
L) = 9 THEN SUBSTR(MT.NF_BRL , 4,6 ) ELSE LPAD(MT.NF_BRL,6,'0') END
NF_B
RL FROM SYSADM.PS_MMC_TE_CONTR_MT MT WHERE MT.TRANSACTION_GROUP = '030' AND MT.B
USINESS_UNIT_BI = A.BUSINESS_UNIT AND MT.MMC_NF_BRL_ID_OUT = A.NF_BRL_ID AND MT.
MMC_LINE_NUM_OUT = A.NF_BRL_LINE_NUM AND ROWNUM = 1 ), ' ' ) AS MMC_REMESSA_BRL
";
&ins2 = &ins2 | "
, NVL( ( SELECT MT.NF_BRL_SERIES
FRO
M SYSADM.PS_MMC_TE_CONTR_MT MT WHERE MT.TRANSACTION_GROUP = '030' AND MT.BUSINES
S_UNIT_BI = A.BUSINESS_UNIT AND MT.MMC_NF_BRL_ID_OUT = A.NF_BRL_ID AND MT.MMC_LI
NE_NUM_OUT = A.NF_BRL_LINE_NUM AND ROWNUM = 1 ), ' ' ) AS NF_BRL_SERIES_PO ";
&ins2 = &ins2 | "
, PO_ID ";
&ins2 = &ins2 | "
, INV_ITEM_ID ";
&ins2 = &ins2 | "
, QTY_NF_BRL ";
&ins2 = &ins2 | "
, DECODE(UNIT_PRICE, 0, MERCH_AMT_BSE/QTY_
NF_BRL, UNIT_PRICE) AS UNIT_PRICE";
&ins2 = &ins2 | "
, MERCH_AMT_BSE ";
&ins2 = &ins2 | "
, TAX_CLASS_BRL ";
&ins2 = &ins2 | "
, ICMSSUB_BRL_AMT ";
&ins2 = &ins2 | "
, ICMSTAX_BRL_AMT ";
&ins2 = &ins2 | "
, ICMSST_RED_BSE_BBL ";
&ins2 = &ins2 | "
, ICMS_RED_BSE_BBL ";
&ins2 = &ins2 | "
, IPITAX_BRL_AMT ";
&ins2 = &ins2 | "
, PISTAX_BRL_AMT ";
&ins2 = &ins2 | "
, COFINSTAX_BRL_AMT ";
&ins2 = &ins2 | "
, ICMSTAX_BRL_BSS ";
&ins2 = &ins2 | "
, IPITAX_BRL_BSS ";
&ins2 = &ins2 | "
, PIS_BSS_AMT_BBL ";
&ins2 = &ins2 | "
, COFINS_BSS_AMT_BBL ";
&ins2 = &ins2 | "
, FREIGHT_AMT ";
&ins2 = &ins2 | "
, INSURANCE_BRL_AMT ";
&ins2 = &ins2 | "
, OTHEREXP_BRL_AMT ";
&ins2 = &ins2 | "
, DSCNT_AMT ";
&ins2 = &ins2 | "
, ISSTAX_BRL_AMT ";

&ins2 = &ins2 | "


, 0
AS IRTAX_BRL_AMT ";
&ins2 = &ins2 | "
, 0
AS INSS_BRL_RETENTION ";
&ins2 = &ins2 | "
, 0
AS COFINS_BRL_RETENT ";
&ins2 = &ins2 | "
, 0
AS PIS_BRL_RETENT ";
&ins2 = &ins2 | "
, 0
AS CSLL_BRL_RETENT ";
&ins2 = &ins2 | "
, 0
AS ICMSTAX_BRL_RETENT ";
&ins2 = &ins2 | "
, 'N' AS PROCESS_FLAG
";
&ins2 = &ins2 | "
, 0
AS PROCESS_INSTANCE ";
&ins2 = &ins2 | " FROM SYSADM.PS_NF_LN_BRL A";
&ins2 = &ins2 | " WHERE A.BUSINESS_UNIT = :1 ";
&ins2 = &ins2 | "
AND A.NF_BRL_ID
= :2 ";
SQLExec(&ins2, NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BR
L_ID);
End-If;
End-If;
End-If;
End-If;
End-If;
/************************************ mmc.sds5222.en ***************************
*************/
[NF_CNFM_BBL_WRK.CONFIRMED_FLAG.SavePreChange]
/*******************************************************************************
*******
Wagner Sorio - MMC - 25/02/2008 mmcb.hd44425 - Customizao para enviar para fundo g
arantidor
Documentos Fiscais iguais com series diferentes.
********************************************************************************
********/
/* BRLOC - BI - HAT - 14/09/01 - Chamada dos Paineis de estoque automaticamente
- Begin */
Declare Function call_pages_inv PeopleCode FUNCLIB_OF.FLOW_FLG_BBL FieldFormula;
If CONFIRMED_FLAG = "Y" Then
/*Nova Era - MMC_BI003_NE - 03/03/2006 - Begin*/
&SETID = GetSetId("BUSINESS_UNIT", BUSINESS_UNIT, "MMC_CUST_CONCES", "");
SQLExec("SELECT A.TOF_PBL , B.ALIQ_CONTR_MMC FROM PS_NF_LN_BBL_FS A , PS_CAD_
OPERAC_MMC B WHERE A.BUSINESS_UNIT = B.BUSINESS_UNIT AND A.TOF_PBL = B.TOF_PBL A
ND B.EFF_STATUS = 'A' AND B.EFFDT = (SELECT MAX(C.EFFDT) FROM PS_CAD_OPERAC_MMC
C WHERE B.BUSINESS_UNIT = C.BUSINESS_UNIT AND B.TOF_PBL = C.TOF_PBL) AND A.BUSIN
ESS_UNIT = :1 AND A.NF_BRL_ID = :2", NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW
3.NF_BRL_ID, &TOF, &ALIQUOTA);
If All(&ALIQUOTA) Then
SQLExec("SELECT ALIQ_CONTR_MMC FROM PS_MMC_CUST_CONCES WHERE SETID = :1 AN
D CUST_ID = :2", &SETID, NF_HDR_BBL_VW3.SHIP_TO_CUST_ID, &ALIQUOTA1);
If All(&ALIQUOTA1) Then
&ALIQUOTA = &ALIQUOTA1
End-If;
/* Nova Era - Felipe Carneiro - 07/06/2006 - Incio */

/* Verifica se nota j foi inserida para no gerar duplicidade */


/************************************** mmcb.hd44425.so ******************
**********************************/
/*
SQLExec("SELECT 'X' FROM PS_LN_CONTRIB_MMC WHERE BUSINESS_UNIT=:1
AND CUST_ID=:2 AND TIPO_TRANSACAO_MMC='NF' AND NF_BRL=:3 ", NF_HDR_BBL_VW3.BUSIN
ESS_UNIT, NF_HDR_BBL_VW3.SHIP_TO_CUST_ID, NF_HDR_BBL_VW3.NF_BRL,NF_HDR_BBL_VW3.N
F_BRL_ID, &EXISTE_NOTA); */
/************************************** mmcb.hd44425.lo ******************
**********************************/
/************************************** mmcb.hd44425.sn ******************
**********************************/
SQLExec("SELECT 'X' FROM PS_LN_CONTRIB_MMC WHERE BUSINESS_UNIT=:1 AND CUST
_ID=:2 AND TIPO_TRANSACAO_MMC='NF' AND INVOICE_ID=:3 ", NF_HDR_BBL_VW3.BUSINESS
_UNIT, NF_HDR_BBL_VW3.SHIP_TO_CUST_ID, NF_HDR_BBL_VW3.NF_BRL_ID, &EXISTE_NOTA);
/************************************** mmcb.hd44425.en ******************
**********************************/
If None(&EXISTE_NOTA) Then
/* Nova Era - Felipe Carneiro - 07/06/2006 - Fim */
SQLExec("SELECT MAX(SEQ_NBR) + 1 FROM PS_LN_CONTRIB_MMC WHERE BUSINESS_
UNIT = :1 AND CUST_ID = :2", NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.SHIP_T
O_CUST_ID, &SEQ_LAST_NBR);
&AMOUNT = (&ALIQUOTA / 100) * NF_HDR_BBL_VW3.GROSS_AMT_BSE;
If All(&SEQ_LAST_NBR) Then
SQLExec("INSERT INTO PS_LN_CONTRIB_MMC(BUSINESS_UNIT, CUST_ID, SEQ_N
BR, NF_BRL, TIPO_TRANSACAO_MMC, GROSS_AMT_BSE, ALIQ_CONTR_MMC, AMOUNT_2, MMC_DAT
E_CM, VENDOR_ID, VNDR_LOC, ADDRESS_SEQ_NUM, PYMNT_TERMS_CD, ACCOUNTING_DT, INVO
ICE_ID, EF_LOC_BRL, ACCOUNT, VOUCHER_ID, BUSINESS_UNIT_AP, BANK_CD, BANK_ACCT_KE
Y,PYMNT_METHOD, DEPTID, PROJECT_ID, PRODUCT, TIPO_PAGTO, MMC_BANK_CD, MMC_BRANCH
_ID, MMC_BRANCH_CHK_DIG, MMC_BANK_ACCT_NUM, MMC_CHECK_DIGIT) VALUES (:1, :2, :3,
:4, :5, :6, :7, :8, to_date(sysdate), :9, :10, :11, :12, to_date(sysdate), :13,
:14, :15, :16, :17, :18, :19, :20, :21, :22, :23, :24, :25, :26, :27, :28, :29)
", NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.SHIP_TO_CUST_ID, &SEQ_LAST_NBR,
NF_HDR_BBL_VW3.NF_BRL, "NF", NF_HDR_BBL_VW3.GROSS_AMT_BSE, &ALIQUOTA, &AMOUNT, "
", " ", 0, "FUNDO", NF_HDR_BBL_VW3.NF_BRL_ID, "CATALO", "211727", "NEXT", "MMCSA
", "356", "356", "CHK", "322", " ", " ", "DOC", " ", " ", " ", " ", " ");
/*RLM - 10-06-06 INICIO */
Else
SQLExec("INSERT INTO PS_LN_CONTRIB_MMC(BUSINESS_UNIT, CUST_ID, SEQ_N
BR, NF_BRL, TIPO_TRANSACAO_MMC, GROSS_AMT_BSE, ALIQ_CONTR_MMC, AMOUNT_2, MMC_DAT
E_CM, VENDOR_ID, VNDR_LOC, ADDRESS_SEQ_NUM, PYMNT_TERMS_CD, ACCOUNTING_DT, INVO
ICE_ID, EF_LOC_BRL, ACCOUNT, VOUCHER_ID, BUSINESS_UNIT_AP, BANK_CD, BANK_ACCT_KE
Y,PYMNT_METHOD, DEPTID, PROJECT_ID, PRODUCT, TIPO_PAGTO, MMC_BANK_CD, MMC_BRANCH
_ID, MMC_BRANCH_CHK_DIG, MMC_BANK_ACCT_NUM, MMC_CHECK_DIGIT) VALUES (:1, :2, :3,
:4, :5, :6, :7, :8, to_date(sysdate), :9, :10, :11, :12, to_date(sysdate), :13,
:14, :15, :16, :17, :18, :19, :20, :21, :22, :23, :24, :25, :26, :27, :28, :29)
", NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.SHIP_TO_CUST_ID, 1, NF_HDR_BBL_V
W3.NF_BRL, "NF", NF_HDR_BBL_VW3.GROSS_AMT_BSE, &ALIQUOTA, &AMOUNT, " ", " ", 0,
"FUNDO", NF_HDR_BBL_VW3.NF_BRL_ID, "CATALO", "211727", "NEXT", "MMCSA", "356", "3
56", "CHK", "322", " ", " ", "DOC", " ", " ", " ", " ", " ");

/*RLM - 10-06-06 FIM */


End-If;
End-If;
End-If;
/*Nova Era - MMC_BI003_NE - 03/03/2006 - End*/
SEL = "Y";
&LINHASNIVEL1 = ActiveRowCount(Record.NF_HDR_BBL_VW3);
For &I = 1 To &LINHASNIVEL1
If call_pages_inv(NF_HDR_BBL_VW3.NF_BRL_ID, NF_HDR_BBL_VW3.BUSINESS_UNIT)
Then
End-If;
End-For;
/*ASL - Antonio Csar S. Luna - HQS Consulting - 09/06/2006 - Inicio*/
SQLExec("SELECT A.BUSINESS_UNIT, A.NF_BRL_ID, C.INV_FLG FROM PS_MMC_NF_RELC_D
EV A, PS_NF_LN_BRL B, PS_RTV_LN C WHERE A.BUSINESS_UNIT = B.BUSINESS_UNIT AND A.
NF_BRL_ID = B.NF_BRL_ID AND B.BUSINESS_UNIT = C.BUSINESS_UNIT AND B.RTV_ID = C.R
TV_ID AND B.RTV_LN_NBR = C.RTV_LN_NBR AND BUSINESS_UNIT_BI = :1 AND A.MMC_NF_BRL
_ID_BI = :2", NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_HDR_BBL_VW3.NF_BRL_ID, &BU_PO, &
NF_PO, &FLAGNF);
If All(&BU_PO) Then
SQLExec("UPDATE PS_NF_HDR_BRL SET NF_BRL = :1, NF_BRL_SERIES = :2 WHERE BU
SINESS_UNIT = :3 AND NF_BRL_ID = :4", NF_HDR_BBL_VW3.NF_BRL, NF_HDR_BBL_VW3.NF_
BRL_SERIES, &BU_PO, &NF_PO);
If &FLAGNF = "Y" Then
SQLExec("UPDATE PS_NF_HDR_BRL SET NF_BRL_STATUS = 'F' WHERE BUSINESS_UN
IT = :1 AND NF_BRL_ID = :2", &BU_PO, &NF_PO);
End-If;
End-If;
/*ASL - Antonio Csar S. Luna - HQS Consulting - 09/06/2006 - Fim*/
End-If;
/* BRLOC - BI - HAT - 14/09/01 - end */
[NF_CNFM_BBL_WRK.CONFIRM_ALL_BTN.FieldChange]
/* BRLBI_01 19/01/1999 Florival Athaide
Confirm all demand lines.
*/
&N = ActiveRowCount(Record.NF_HDR_BBL_VW3);
For &i = 1 To &N
&BU = FetchValue(Record.NF_HDR_BBL_VW3, &i, NF_HDR_BBL_VW3.BUSINESS_UNIT);
&NF = FetchValue(Record.NF_HDR_BBL_VW3, &i, NF_HDR_BBL_VW3.NF_BRL_ID);
&FLAG = FetchValue(Record.NF_HDR_BBL_VW3, &i, CONFIRMED_FLAG);
&SERIE_DOC_FISC = FetchValue(Record.NF_HDR_BBL_VW3, &i, NF_HDR_BBL_VW3.NF_BRL
_SERIES);
&X = NF_HDR_BBL_VW3.SHIP_TO_CUST_ID;
NF_HDR_BBL_VW3.SHIP_TO_CUST_ID = " ";
NF_HDR_BBL_VW3.SHIP_TO_CUST_ID = &X;

If All(&NF) And
(&FLAG <> "Y") Then
/*** JEISON CALDAS - 31/03/09 - INATIVADO POR SOLICITAO DO HD 65595 POR DARI
O - INICIO */
SQLExec("SELECT substr(CFO_BRL_CD, 1, 1) FROM SYSADM.PS_NF_HDR_BBL_FS WHER
E BUSINESS_UNIT = :1 AND NF_BRL_ID = :2", &BU, &NF, &CFO);
If &CFO = "7" Then
SQLExec("SELECT 'Y' FROM SYSADM.PS_MMC_NF_EXP_HDR WHERE BUSINESS_UNIT =
:1 AND NF_BRL_ID = :2", &BU, &NF, &SPED);
If All(&SPED) Then
UpdateValue(CONFIRMED_FLAG, &i, "Y");
Else
WinMessage("A NF de ID " | &NF | " no pode ser confirmada pois no h inf
ormaes de SPED.");
UpdateValue(CONFIRMED_FLAG, &i, "N");
End-If;
Else
UpdateValue(CONFIRMED_FLAG, &i, "Y");
End-If;
/*** JEISON CALDAS - 31/03/09 - INATIVADO POR SOLICITAO DO HD 65595 POR DARI
O - FIM*/
End-If;
/*** BRUNO VEROSA - MMC - mmc.sds4055 - 14/12/2011 - S.N. ***/
&FLAG = FetchValue(Record.NF_HDR_BBL_VW3, &i, CONFIRMED_FLAG);
SQLExec("SELECT 'Y' FROM SYSADM.PS_MMC_NFE_CH_ACES WHERE BUSINESS_UNIT = :1 A
ND NF_BRL_ID = :2", &BU, &NF, &STAT100);
If &FLAG = "Y" And
&STAT100 <> "Y"
&SERIE_DOC_FISC
&SERIE_DOC_FISC
&SERIE_DOC_FISC
&SERIE_DOC_FISC

And
<> "A" And
<> "D1" And
<> "0" And
<> "A1" Then

UpdateValue(CONFIRMED_FLAG, &i, "N");


WinMessage("A Nota Fiscal: " | &NF | " no obteve confirmao da Sefaz.");
End-If;
/*** BRUNO VEROSA - MMC - mmc.sds4055 - 14/12/2011 - E.N. ***/
End-For;
[NF_CNFM_BBL_WRK.LOG_IN.FieldChange]
/***
BRLOC-BI-HAT-NEW-BEGIN-14/09/2001
Descrio: Painel de informaes de transacoes do invantario ligada as operacoes fisca
is
***/
Evaluate %PanelGroup
When PanelGroup.NF_CNFM_BBL
&RET = DoModal(Page.NF_INV_LOG_BBL, MsgGetText(31000, 108, "Additional Data")
, - 1, - 1, 0);
End-Evaluate;
/***

BRLOC-BI-HAT-NEW-BEGIN-14/09/2001
***/
[NF_CNFM_BBL_WRK.NF_DTL_PB_BBL.FieldChange]
/* BRLBI_01 19/01/1999 Florival Athaide */
BUSINESS_UNIT = NF_HDR_BBL_VW3.BUSINESS_UNIT;
NF_BRL_ID = FetchValue(Record.NF_HDR_BBL_VW3, CurrentRowNumber(), NF_HDR_BBL_VW3
.NF_BRL_ID);
Transfer( True, MenuName."MANAGE_NF_BBL", BarName."INQUIRE", ItemName."NF_INQR_B
BL", Panel."NF_INQR_BBL", "U", NF_HDR_BBL_VW3.BUSINESS_UNIT, NF_BRL_ID);
[NF_CNFM_BBL_WRK.NO_UOM_TYPES.FieldChange]
/* BRLBI_01 19/01/1999 Florival Athaide
Confirm all demand lines.
*/
&N = ActiveRowCount(Record.NF_HDR_BBL_VW3);
For &I = 1 To &N
&NF = FetchValue(Record.NF_HDR_BBL_VW3, &I, NF_HDR_BBL_VW3.NF_BRL_ID);
&FLAG = FetchValue(Record.NF_HDR_BBL_VW3, &I, CONFIRMED_FLAG);
If All(&NF) And
(&FLAG = "Y") Then
UpdateValue(CONFIRMED_FLAG, &I, "N");
End-If;
End-For;
[NF_CNFM_BBL_WRK.REFRESH_BTN.FieldChange]
/* BRLBI_01 19/01/1999 Florival Athaide
Abre e executa a janela de seleo de registros
*/
&TITLE = MsgGetText(31000, 95, "Confirm NF Selection");
NF_BRL_ID = "";
NF_BRL_SERIES = "";
NF_BRL = "";
SetDefault(NF_ISSUE_DT_BBL);
SHIP_TO_CUST_ID = "";
CARRIER_ID = "";
VEHICLE_ID = "";
RMNEIO_ID_BBL = "";
REM NF_HDR_BBL_VW3.BUSINESS_UNIT = BUSINESS_UNIT;
&RETURNCODE = DoModal(Panel.NF_CNFM_BBL_SBP, &TITLE, - 1, - 1, 0);
If &RETURNCODE > 0 Then
/* Set the order by clause */
&ORDER_BY = "NF_BRL_ID, NF_BRL_SERIES, NF_BRL";
/* Retrieve demand order lines (demand_inv) and Populate Panel Scroll */
&WHERE = " ";
If All(NF_BRL_ID) Then
&WHERE = &WHERE | " and NF_BRL_ID='" | NF_BRL_ID | "'";
End-If;
If All(NF_BRL_SERIES) Then
&WHERE = &WHERE | " and NF_BRL_SERIES ='" | NF_BRL_SERIES | "'";
End-If;
If All(NF_BRL) Then
&WHERE = &WHERE | " and NF_BRL='" | NF_BRL | "'";
End-If;
If All(SHIP_TO_CUST_ID) Then
&WHERE = &WHERE | " and SHIP_TO_CUST_ID ='" | SHIP_TO_CUST_ID | "'";
End-If;

If All(NF_ISSUE_DT_BBL) Then
&WHERE = &WHERE | " and NF_ISSUE_DT_BBL = %datein('" | NF_ISSUE_DT_BBL | "
')";
End-If;
If All(RMNEIO_ID_BBL) Then
&WHERE = &WHERE | " and RMNEIO_ID_BBL ='" | RMNEIO_ID_BBL | "'";
End-If;
If All(CARRIER_ID) Then
&WHERE = &WHERE | " and CARRIER_ID='" | CARRIER_ID | "'";
End-If;
If All(VEHICLE_ID) Then
&WHERE = &WHERE | " and VEHICLE_ID='" | VEHICLE_ID | "'";
End-If;
/* Limpa todos os registros anteriores de todos os nveis ( 1 e 2)*/
&LINHASNIVEL1 = ActiveRowCount(Record.NF_HDR_BBL_VW3);
For &I = 1 To &LINHASNIVEL1
ScrollFlush(Record.NF_HDR_BBL_VW3, &LINHASNIVEL1, Record.NF_LN_BBL_VW);
End-For;
ScrollFlush(Record.NF_HDR_BBL_VW3);
ScrollSelect(1, Record.NF_HDR_BBL_VW3, Record.NF_HDR_BBL_VW3, "Where BUSINESS
_UNIT = :1 " | &WHERE | " order by " | &ORDER_BY, BUSINESS_UNIT);
For &I = 1 To ActiveRowCount(Record.NF_HDR_BBL_VW3)
UnGray(Record.NF_HDR_BBL_VW3, &I, CONFIRMED_FLAG);
&ID = FetchValue(Record.NF_HDR_BBL_VW3, &I, NF_HDR_BBL_VW3.NF_BRL_ID);
ScrollSelect(2, Record.NF_HDR_BBL_VW3, Record.NF_LN_BBL_VW, Record.NF_LN_B
BL_VW, "WHERE BUSINESS_UNIT = :1 AND NF_BRL_ID = :2", BUSINESS_UNIT, &ID);
End-For;
/* Make sure we got records back */
&V1 = FetchValue(Record.NF_HDR_BBL_VW3, 1, NF_HDR_BBL_VW3.NF_BRL_ID);
If None(&V1) Then
WinMessage(MsgGet(31000, 43, "Sorry, no NF's to confirm"), 48);
Gray(CONFIRM_ALL_BTN);
Gray(NO_UOM_TYPES);
/* No existe mais o campo LOAD_OPT_BTN na vrso 2000
Gray(PANELS2_INV_WRK.LOAD_OPT_BTN); */
Gray(Record.NF_HDR_BBL_VW3, 1, CONFIRMED_FLAG);
Else
UnGray(CONFIRM_ALL_BTN);
UnGray(NO_UOM_TYPES);
End-If;
End-If;

S-ar putea să vă placă și