-----------------------#
DEFINE lr_return RECORD
status SMALLINT,
msg CHAR(300)
END RECORD
DEFINE lr_comp_orig,
lr_comp_dest RECORD
cod_item_compon LIKE estrut_grade.cod_item_compon,
cod_grade_comp_1 LIKE estrut_grade.cod_grade_comp_1,
cod_grade_comp_2 LIKE estrut_grade.cod_grade_comp_2,
cod_grade_comp_3 LIKE estrut_grade.cod_grade_comp_3,
cod_grade_comp_4 LIKE estrut_grade.cod_grade_comp_4,
cod_grade_comp_5 LIKE estrut_grade.cod_grade_comp_5
END RECORD
DEFINE la_item_pai ARRAY[100] OF RECORD
cod_item_pai LIKE estrut_grade.cod_item_pai,
cod_grade_1 LIKE estrut_grade.cod_grade_1,
cod_grade_2 LIKE estrut_grade.cod_grade_2,
cod_grade_3 LIKE estrut_grade.cod_grade_3,
cod_grade_4 LIKE estrut_grade.cod_grade_4,
cod_grade_5 LIKE estrut_grade.cod_grade_5,
qtd_necessaria LIKE estrut_grade.qtd_necessaria,
dat_validade_ini LIKE estrut_grade.dat_validade_ini,
dat_validade_fim LIKE estrut_grade.dat_validade_fim,
num_sequencia LIKE estrut_grade.num_sequencia
END RECORD
DEFINE l_justificativa CHAR(300),
l_acao CHAR(001),
l_altera_item CHAR(001)
DEFINE l_ind,
l_item_ind,
l_item_count SMALLINT
IF LOG_initApp("MANENG") > 0 THEN
LET lr_return.status = FALSE
LET lr_return.msg = "Usuário ",p_user CLIPPED," sem permissão para acessar a rotina."
RETURN lr_return
END IF
LET lr_comp_orig.cod_item_compon = _ADVPL_WfGetParameterValue("componentes","cod_item_compon_orig")
LET lr_comp_orig.cod_grade_comp_1 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_1_orig")
LET lr_comp_orig.cod_grade_comp_2 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_2_orig")
LET lr_comp_orig.cod_grade_comp_3 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_3_orig")
LET lr_comp_orig.cod_grade_comp_4 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_4_orig")
LET lr_comp_orig.cod_grade_comp_5 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_5_orig")
LET lr_comp_dest.cod_item_compon = _ADVPL_WfGetParameterValue("componentes","cod_item_compon_dest")
LET lr_comp_dest.cod_grade_comp_1 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_1_dest")
LET lr_comp_dest.cod_grade_comp_2 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_2_dest")
LET lr_comp_dest.cod_grade_comp_3 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_3_dest")
LET lr_comp_dest.cod_grade_comp_4 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_4_dest")
LET lr_comp_dest.cod_grade_comp_5 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_5_dest")
LET l_justificativa = _ADVPL_WfGetParameterValue("componentes","justificativa")
LET l_acao = _ADVPL_WfGetParameterValue("componentes","slct_acao")
#Verifica os códigos da grade de origem.
IF lr_comp_orig.cod_grade_comp_1 IS NULL THEN
LET lr_comp_orig.cod_grade_comp_1 = " "
END IF
IF lr_comp_orig.cod_grade_comp_2 IS NULL THEN
LET lr_comp_orig.cod_grade_comp_2 = " "
END IF
IF lr_comp_orig.cod_grade_comp_3 IS NULL THEN
LET lr_comp_orig.cod_grade_comp_3 = " "
END IF
IF lr_comp_orig.cod_grade_comp_4 IS NULL THEN
LET lr_comp_orig.cod_grade_comp_4 = " "
END IF
IF lr_comp_orig.cod_grade_comp_5 IS NULL THEN
LET lr_comp_orig.cod_grade_comp_5 = " "
END IF
#Verifica os códigos da grade de destino.
IF lr_comp_dest.cod_grade_comp_1 IS NULL THEN
LET lr_comp_dest.cod_grade_comp_1 = " "
END IF
IF lr_comp_dest.cod_grade_comp_2 IS NULL THEN
LET lr_comp_dest.cod_grade_comp_2 = " "
END IF
IF lr_comp_dest.cod_grade_comp_3 IS NULL THEN
LET lr_comp_dest.cod_grade_comp_3 = " "
END IF
IF lr_comp_dest.cod_grade_comp_4 IS NULL THEN
LET lr_comp_dest.cod_grade_comp_4 = " "
END IF
IF lr_comp_dest.cod_grade_comp_5 IS NULL THEN
LET lr_comp_dest.cod_grade_comp_5 = " "
END IF
LET l_item_ind = 0
LET l_item_count = _ADVPL_WfGetParameterLength("item_pai")
FOR l_ind = 1 TO l_item_count
LET l_altera_item = _ADVPL_WfGetParameterValue("item_pai","altera_item",l_ind)
IF l_altera_item = "S" THEN
LET l_item_ind = l_item_ind + 1
LET la_item_pai[l_item_ind].cod_item_pai = _ADVPL_WfGetParameterValue("item_pai","cod_item_pai",l_ind)
LET la_item_pai[l_item_ind].cod_grade_1 = _ADVPL_WfGetParameterValue("item_pai","cod_grade_1",l_ind)
LET la_item_pai[l_item_ind].cod_grade_2 = _ADVPL_WfGetParameterValue("item_pai","cod_grade_2",l_ind)
LET la_item_pai[l_item_ind].cod_grade_3 = _ADVPL_WfGetParameterValue("item_pai","cod_grade_3",l_ind)
LET la_item_pai[l_item_ind].cod_grade_4 = _ADVPL_WfGetParameterValue("item_pai","cod_grade_4",l_ind)
LET la_item_pai[l_item_ind].cod_grade_5 = _ADVPL_WfGetParameterValue("item_pai","cod_grade_5",l_ind)
LET la_item_pai[l_item_ind].qtd_necessaria = _ADVPL_WfGetParameterValue("item_pai","qtd_necessaria",l_ind)
LET la_item_pai[l_item_ind].dat_validade_ini = _ADVPL_WfGetParameterValue("item_pai","dat_validade_ini",l_ind)
LET la_item_pai[l_item_ind].dat_validade_fim = _ADVPL_WfGetParameterValue("item_pai","dat_validade_fim",l_ind)
LET la_item_pai[l_item_ind].num_sequencia = _ADVPL_WfGetParameterValue("item_pai","num_sequencia",l_ind)
#Verifica os códigos da grade do item pai.
IF la_item_pai[l_item_ind].cod_grade_1 IS NULL THEN
LET la_item_pai[l_item_ind].cod_grade_1 = " "
END IF
IF la_item_pai[l_item_ind].cod_grade_2 IS NULL THEN
LET la_item_pai[l_item_ind].cod_grade_2 = |