(Obrigatório)
Definição da Regra de Negócio
Serão efetuadas as seguintes alterações para possibilitar a impressão de arquivo no formato CSV.
1 - Criação do campo "Gera arquivo CSV"
2 - Alterar o fin30064 para prever o novo campo no programa
2.1- Criar novo report, baseado no relatório analítico do fin30064 para geração do arquivo no formato CSV.
#--------------------------- IMPRESSÃO EXCEL
#----------------------------------------------------------------------#
#------------------------------#
REPORT fin30064_relat_excel(lr_relat)
#------------------------------#
DEFINE lr_relat RECORD
cod_empresa LIKE empresa.cod_empresa,
cod_empresa_orig LIKE emp_orig_destino.cod_empresa_orig,
cod_lin_prod DECIMAL(02,0),
cod_lin_recei DECIMAL(02,0),
cod_seg_merc DECIMAL(02,0),
cod_cla_uso DECIMAL(02,0),
cod_fornecedor LIKE ap.cod_fornecedor,
raz_social LIKE fornecedor.raz_social,
cod_lote_pgto LIKE ap.cod_lote_pgto,
num_ap LIKE ap.num_ap,
dat_entr LIKE ad_mestre.dat_rec_nf,
num_nf LIKE ap.num_nf,
num_duplicata LIKE ap.num_duplicata,
dat_vencto_s_desc LIKE ap.dat_vencto_s_desc,
dat_vencto_orig LIKE ap.dat_vencto_s_desc,
cod_portador LIKE ap.cod_portador,
cod_moeda LIKE ap.cod_moeda,
val_nom_ap LIKE ap.val_nom_ap,
val_ap_dat_pgto LIKE ap.val_ap_dat_pgto,
dat_pgto LIKE ap.dat_pgto,
docum_pgto_ext CHAR(004),
cod_tip_despesa LIKE tipo_despesa.cod_tip_despesa,
nom_tip_despesa LIKE tipo_despesa.nom_tip_despesa,
ies_lib_pgto_sup LIKE ap.ies_lib_pgto_sup,
num_docum_pgto LIKE ap.num_docum_pgto,
ies_docum_pgto LIKE ap.ies_docum_pgto,
num_ad LIKE ad_mestre.num_ad,
classif_financ LIKE cap_clas_fin_pagto.classif_financ,
quebra1 CHAR(100),
quebra2 CHAR(100),
quebra3 CHAR(100),
quebra4 DECIMAL(15,2),
inibe_transf CHAR(01),
dat_proposta LIKE ap.dat_proposta,
unidade_contabil_ap CHAR(06),
unidade_contabil_ad CHAR(06)
END RECORD
DEFINE l_ies_lib_suprim CHAR(03),
l_ies_pago CHAR(03),
l_ies_sel_aen CHAR(03),
l_cod_area CHAR(02),
l_cod_unid_contabil CHAR(06),
l_cod_aen CHAR(08),
l_den_aen CHAR(30),
l_fornecedor CHAR(500),
l_cod_banco CHAR(500),
l_cod_agen_bco CHAR(500),
l_cod_moeda CHAR(500),
l_cod_lote_pgto CHAR(500),
l_detalhe_excel CHAR(500),
l_last_row SMALLINT,
l_imp_cfor SMALLINT,
l_ja_pagou SMALLINT,
l_imp_aen SMALLINT,
l_first SMALLINT,
l_ind SMALLINT,
l_ind_moeda SMALLINT,
l_ind_uc SMALLINT,
l_den_moeda LIKE moeda.den_moeda_abrev,
l_ies_tipo_rel CHAR(10),
l_nom_tipo_despesa CHAR(30)
OUTPUT
LEFT MARGIN 0
TOP MARGIN 0
BOTTOM MARGIN 0
PAGE LENGTH m_length
ORDER EXTERNAL BY lr_relat.quebra1,
lr_relat.quebra2,
lr_relat.quebra3
FORMAT
FIRST PAGE HEADER
LET l_first = TRUE
ON EVERY ROW
IF l_first = TRUE THEN
LET l_first = FALSE
PRINT COLUMN 001, "AEN; DESCRIÇÃO AEN; EC; EO; @; AP; NF; DUPLIC; ÁREA; UNID CTBL; &; FORNECEDOR; RAZÃO SOCIAL; DESP; DESPESA; ENTRADA; VENCIMENTO; PROPOSTA; DOC; PGTO; *; MOEDA; VALOR; $; PAGAMENTO; TIPO DOCTO; PORT; #; CF; LP;"
END IF
LET l_detalhe_excel = NULL
WHENEVER ERROR CONTINUE
SELECT parametro_texto
INTO l_cod_area
FROM sup_par_fornecedor
WHERE empresa = "SE"
AND fornecedor = lr_relat.cod_fornecedor
AND parametro = "cod_area_fornec"
WHENEVER ERROR STOP
IF sqlca.sqlcode <> 0 THEN
IF sqlca.sqlcode <> 100 THEN
CALL log003_err_sql('LEITURA','SUP_PAR_FORNECEDOR')
END IF
LET l_cod_area = ""
END IF
IF l_imp_aen = TRUE THEN
IF m_ies_2_4 = "4" THEN
PRINT " "
WHENEVER ERROR CONTINUE
SELECT den_estr_linprod
INTO l_den_aen
FROM linha_prod
WHERE cod_lin_prod = lr_relat.cod_lin_prod
AND cod_lin_recei = lr_relat.cod_lin_recei
AND cod_seg_merc = lr_relat.cod_seg_merc
AND cod_cla_uso = lr_relat.cod_cla_uso
WHENEVER ERROR STOP
IF SQLCA.SQLCODE <> 0 THEN
LET l_den_aen = "ÁREA E LINHA 4 NÃO CADASTRADA"
END IF
LET l_cod_aen = lr_relat.cod_lin_prod USING "&&",
lr_relat.cod_lin_recei USING "&&",
lr_relat.cod_seg_merc USING "&&",
lr_relat.cod_cla_uso USING "&&"
LET l_imp_aen = FALSE
ELSE
PRINT " "
WHENEVER ERROR CONTINUE
SELECT den_estr_linprod
INTO l_den_aen
FROM linha_prod
WHERE cod_lin_prod = lr_relat.cod_lin_prod
AND cod_lin_recei = lr_relat.cod_lin_recei
AND cod_seg_merc = 0
AND cod_cla_uso = 0
WHENEVER ERROR STOP
IF SQLCA.SQLCODE <> 0 THEN
LET l_den_aen = "ÁREA E LINHA 2 NÃO CADASTRADA"
END IF
LET l_cod_aen = lr_relat.cod_lin_prod USING "&&",
lr_relat.cod_lin_recei USING "&&"
LET l_imp_aen = FALSE
END IF
#END IF
END IF
IF ma_tela[1].cod_aen IS NULL THEN
CALL fin30064_busca_tip_val(lr_relat.cod_empresa, lr_relat.num_ap, lr_relat.cod_tip_despesa)
ELSE
CALL fin30064_busca_tip_val_aen(lr_relat.num_ap, lr_relat.val_nom_ap,
lr_relat.num_ad, lr_relat.cod_empresa, lr_relat.cod_tip_despesa)
END IF
WHENEVER ERROR CONTINUE
SELECT den_moeda_abrev
INTO l_den_moeda
FROM moeda
WHERE moeda.cod_moeda = lr_relat.cod_moeda
WHENEVER ERROR STOP
IF sqlca.sqlcode <> 0 THEN
LET l_den_moeda = ""
END IF
IF mr_tela.classificacao = "2" OR
mr_tela.classificacao = "10" OR
mr_tela.classificacao = "5" OR
mr_tela.classificacao = "13" OR
mr_tela.classificacao = "6" OR
mr_tela.classificacao = "11" OR
mr_tela.classificacao = "14" OR
mr_tela.classificacao = "4" THEN
LET l_imp_cfor = TRUE
END IF
LET l_detalhe_excel = l_detalhe_excel CLIPPED,
l_cod_aen CLIPPED ,";",
l_den_aen CLIPPED ,";",
lr_relat.cod_empresa , ";",
lr_relat.cod_empresa_orig, ";"
IF lr_relat.dat_pgto IS NULL THEN
LET l_ies_pago = "NÃO"
ELSE
LET l_ies_pago = "SIM"
END IF
IF lr_relat.ies_lib_pgto_sup = "S" THEN
LET l_ies_lib_suprim = "S"
ELSE
LET l_ies_lib_suprim = "N"
END IF
LET l_detalhe_excel = l_detalhe_excel clipped,
lr_relat.inibe_transf, ";",
lr_relat.num_ap USING "#####&", ";",
lr_relat.num_nf, ";",
lr_relat.num_duplicata, ";",
l_cod_area, ";",
ma_unidade_contabil_ad[1].unid_ctbl, ";"
IF mr_tela.informacao = "S" THEN
CALL fin30064_busca_informacao_pgto_fornec(lr_relat.cod_fornecedor,lr_relat.cod_empresa)
RETURNING l_ja_pagou
IF l_ja_pagou > 0 THEN
LET l_detalhe_excel = l_detalhe_excel CLIPPED , "S",";"
ELSE
LET l_detalhe_excel = l_detalhe_excel CLIPPED , "N", ";"
END IF
ELSE
LET l_detalhe_excel = l_detalhe_excel CLIPPED , " ", ";"
END IF
# IF l_imp_cfor THEN
LET l_detalhe_excel = l_detalhe_excel CLIPPED,
lr_relat.cod_fornecedor CLIPPED , ";",
lr_relat.raz_social CLIPPED , ";" ;
# END IF
# IF mr_tela.classificacao = "9" THEN
LET l_imp_cfor = TRUE
# END IF
LET l_detalhe_excel = l_detalhe_excel CLIPPED,
lr_relat.cod_tip_despesa USING "####", ";",
lr_relat.nom_tip_despesa[1,16], ";",
lr_relat.dat_entr USING "DD/MM/YYYY", ";",
lr_relat.dat_vencto_s_desc USING "DD/MM/YYYY", ";",
lr_relat.dat_proposta USING "DD/MM/YYYY", ";",
lr_relat.num_docum_pgto USING "#######&", ";",
lr_relat.ies_docum_pgto, ";",
" ;",
l_den_moeda, ";",
lr_relat.val_nom_ap USING "#,###,###,###.##", ";",
l_ies_pago[1], ";",
lr_relat.dat_pgto USING "DD/MM/YYYY", ";",
lr_relat.docum_pgto_ext, ";",
lr_relat.cod_portador USING "&&&", ";",
l_ies_lib_suprim[1], ";",
lr_relat.classif_financ USING "&&", ";",
lr_relat.cod_lote_pgto USING "&&", ";"
CALL conout("detalhe_excel: "||l_detalhe_excel)
PRINT COLUMN 001, l_detalhe_excel
ON LAST ROW
LET l_last_row = TRUE
PAGE TRAILER
PRINT COLUMN 001, " "
END REPORT
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
[fin30064 – APs pagas e a Pagar] | [Alteração] | [Atualizações -> Acadêmico-> Tesouraria] | - |
| | | - |
| | | - |
Exemplo de Aplicação:
- Criar o campo “% Mínimo Espécie” (AAA_PERESP) onde o usuário informará o % que o aluno pagará em dinheiro. Esse % poderá ser alterado durante a negociação.
- Criar o campo “Referência Mínima para Cálculo” (AAA_REFCAL) onde o usuário informará um dos 4 valores disponíveis para pagamento das mensalidades como a referência mínima para calcular o débito total do aluno.
- Criar o parâmetro MV_ACPARNE que definirá se as informações de “% Mínimo Espécie” e “Referência Mínima para Cálculo” serão obrigatórias.
- O parâmetro MV_ACPARNE deve ter as seguintes opções: 1=Obrigatório e 2=Opcional. Deve ser inicializado como opcional>.
Tabelas Utilizadas
- SE2 – Cadastro de Contas a Pagar
- FI9 – Controle de Emissão de DARF>.