CREATE OR REPLACE PROCEDURE SISCORP.PRC_VEN_GERAARQPALM (pPathArq CHAR)
--
IS
--
ExpFilePath VARCHAR2(100);
ExpFileName VARCHAR2(20);
ExpFile sys.UTL_FILE.FILE_TYPE;
vRepres VW_REPRES%ROWTYPE;
vNrSeqExec SGR_TMP_RELATORIO.NROSEQEXEC%TYPE;
--set long 10000
---------------------
-- P R O D U T O S -- arquivo unico
---------------------
CURSOR cProduto IS
SELECT value(mat).getCLOBVal() AS "XMLTYPE"
FROM table(XMLSequence(Cursor(
SELECT TRIM(LTRIM(RPAD(SUP_Material.CdMaterial,8))) ID_PRODUTO -- Código do produto
,TRIM(LTRIM(RPAD(SUP_Material.NoMaterial, 35))) NOME_PRODUTO -- Nome do material
,TRIM(LTRIM(RPAD(SUP_Material.CdMaterialFornec,15))) FORNECEDOR -- Referencia
,TRIM(LTRIM(RPAD(SUBSTR(SUP_MATERIAL.CDBARRAS,1,15),15))) CODIGO_BARRAS -- Código de Barra
,SUP_MATERIAL.VLRCUSTOATU PRECO_VENDA -- Preço de venda
,'0' PRECO_PROMOCAO -- Preço Promocional verificar com Vinix
,SUP_MATERIAL.PERCDESCMAX PECENTUAL_MAXIMO_DESCONTO -- Desconto máximo
,'0' QUANTIDADE_MINIMA_PROMOCAO -- Quantidade Mínima para promoção
,' ' MSG_ALTERACAO_PRECOS -- Mensagem Alteração de Preços.
FROM SUP_Material
WHERE TRUNC(SUP_Material.DtExclusao) = TO_DATE(FNC_PARAMETRO('SGR', 'DATENULL', 0), 'DD/MM/YYYY')
AND SUP_Material.CdMaterial <> 0
--AND SUP_MATERIAL.CDGRUPOMATERIAL LIKE '2%'
--and sup_material.cdmaterial = 36531
ORDER BY SUP_Material.CdMaterial))) mat;
--
rProduto cProduto%ROWTYPE;
---------------------
-- C L I E N T E --
---------------------
CURSOR cCliente IS
SELECT value(cli).getCLOBVal() AS "XMLTYPE"
FROM table(XMLSequence(Cursor(SELECT VW_Cliente.CdPessoaCli CODIGO_CLIENTE -- Codigo do cliente
,TRIM(LTRIM(RPAD(VW_Cliente.NoPessoaCli,35))) NOME -- Nome do cliente
,TRIM(LTRIM(RPAD(DECODE(VW_Cliente.NoFantasia ,NULL,'',VW_Cliente.NoFantasia),35))) FANTASIA -- Nome fantasia
,TRIM(LTRIM(RPAD(DECODE(SGR_ENDERECO.NoRua ,NULL,'',TRIM(SGR_Endereco.NoRua) || ', ' || TRIM(SGR_Endereco.NrEndereco)),35))) ENDERECO -- Endereço (rua)
,TRIM(LTRIM(RPAD(DECODE(SGR_Endereco.NoBairro ,NULL,'',TRIM(SGR_Endereco.NoBairro)),20 ))) BAIRRO -- Bairro
,TRIM(LTRIM(RPAD(DECODE(SGR_Endereco.NrCep ,NULL,'',TRIM(SGR_Endereco.NrCep)),10 ))) CEP -- CEP
,TRIM(LTRIM(RPAD(SGR_Cidade.noCidade,30))) CIDADE -- Cidade
,TRIM(LTRIM(RPAD(DECODE(FNC_FONE(VW_Cliente.CdPessoaCli, 0, FNC_PARAMETRO('SGR','CDTPFONE_COMERCIAL',0)),NULL,'',TRIM(FNC_FONE(VW_Cliente.CdPessoaCli, 0, FNC_PARAMETRO('SGR','CDTPFONE_COMERCIAL',0)))),15))) TELEFONE
,'000000000000000' CELULAR -- Celular
,TRIM(LTRIM(RPAD(VW_CLIENTE.txtEmail,50))) EMAIL -- Email
,RPAD(' ', 50) CONTATO -- Contato
,' ' TIPO_CREDITO -- Tipo de crédito
,VW_REPRES.CDPESSOAREPRES REPRESENTANTE -- Vendedor padrão
,FIN_CREDITO.VLRVENCIDO + VLRAVENCER DIVIDA -- Total da dívida
,' ' FORMA_PAGTO_PADRAO -- Forma de Pagamento Padrão
,0 TOLERANCIA_SALDO -- Tolerância Sobre Saldo (%)
,RPAD(' ', 4) ROTA -- Número da Rota / Carga
,0 ORDEM_DE_VISITA -- Ordem de visita
,0 PRAZO_DIAS -- Prazo Máximo em Dias para venda prazo
,VW_CLIENTE.FLGATIVO ATIVO_INATIVO -- Situação do Cliente Ativo, Inativo ( S, N )
,TRIM(RTRIM(SUBSTR(VW_CLIENTE.OBSERVACAO,75))) OBSERVACAO1_CLIENTE -- Observação 1 do Cliente
,'' OBSERVACAO2_CLIENTE -- Observação 2 do Cliente
FROM VW_Cliente
,SGR_Endereco
,SGR_Cidade
,VEN_CLIENTEREPRES
,VW_REPRES
,FIN_CREDITO
WHERE VW_Cliente.CdPessoaCli = SGR_Endereco.CdPessoa (+)
AND SGR_Endereco.CdCidade = SGR_Cidade.CdCidade
AND SGR_Endereco.FlgFiscal(+) = 'S'
AND VW_Cliente.FlgAtivo = 'S'
and VW_CLIENTE.CDPESSOACLI = VEN_CLIENTEREPRES.CDPESSOACLI (+)
and VEN_CLIENTEREPRES.CDPESSOAREPRES = VW_REPRES.CDPESSOAREPRES (+)
and FIN_CREDITO.CDGRPPESSOA = VW_REPRES.CDGRPPESSOA
ORDER BY VW_Cliente.CdPessoaCli))) cli;
--
rCliente cCliente%ROWTYPE;
-----------------------------------------
-- F O R M A D E P A G A M E N T O -- arquivo unico
-----------------------------------------
CURSOR cPagamento IS
SELECT value(tpg).getCLOBVal() AS "XMLTYPE"
FROM table(XMLSequence(Cursor(SELECT CDTIPOPAGTO CODIGO_TIPO_PAGTO -- Codigo
,LTRIM(RTRIM(SUBSTR(NOTIPOPAGTO,1,25))) DESC_TIPO_PAGTO -- Nome da Forma de Pagamento
,DECODE(FIN_TIPOPAGTO.FLGCONDPAGTO, 'N','A','P') TIPO_FORMA_PAGTO -- Tipo da forma (avista, a prazo) A/P
FROM FIN_TIPOPAGTO))) tpg;
--
rPagamento cPagamento%ROWTYPE;
-------------------------
-- D U P L I C A T A -- arquivo unico
-------------------------
-- personalizar a tag de entidade
CURSOR cDuplicata IS
SELECT value(dup).getCLOBVal() AS "XMLTYPE"
FROM table(XMLSequence(Cursor(SELECT
FIN_RFAT.DTEMIS DATA_EMISSAO -- Data de emissão da compra
, FIN_RFAT.CDPESSOACLI CODIGO_CLIENTE -- Código do Cliente
, FIN_RTIT.SLDTIT VALOR_DUPLICATA -- Saldo da Duplicata
, FIN_RTIT.VLRTIT VALOR_DUPLICATA --Valor da Duplicata
, FIN_RTIT.DTVENC VENCTO_DUPLICATA -- Data de Vencimento da Duplicata
, FIN_RTIT.NRTIT NUMERO_DUPLICATA -- Número da Duplicata
FROM FIN_RFAT, FIN_RTIT
WHERE FIN_RTIT.NRFAT = FIN_RFAT.NRFAT
AND FIN_RTIT.SLDTIT > 0 ))) dup;
--
rDuplicata cDuplicata%ROWTYPE;
--
BEGIN
--------------------------------------------------------------
DBMS_OUTPUT.PUT_LINE ('=====> Gerar o arquivo de PRODUTO ');
--------------------------------------------------------------
--
ExpFileName := 'produto.txt';
--
ExpFilePath := pPathArq;
--
IF NOT sys.UTL_FILE.IS_OPEN (ExpFile) THEN
--
ExpFile := sys.UTL_FILE.FOPEN (ExpFilePath, ExpFileName, 'w',9999);
--
END IF;
--
sys.UTL_FILE.PUT_LINE (ExpFile, '');
sys.UTL_FILE.PUT_LINE (ExpFile, '');
--
--
FOR rProduto IN cProduto LOOP
--
sys.UTL_FILE.PUT (ExpFile, REPLACE(rProduto.XMLTYPE,'ROW','PRODUTO'));
--
END LOOP;
sys.UTL_FILE.PUT (ExpFile, '');
--
--
IF sys.UTL_FILE.IS_OPEN (ExpFile) THEN
sys.UTL_FILE.FFLUSH (ExpFile);
sys.UTL_FILE.FCLOSE (ExpFile);
END IF;
--
---------------------------------------------------------------
DBMS_OUTPUT.PUT_LINE ('=====> Gerar o arquivo de CLIENTE ');
---------------------------------------------------------------
ExpFileName := 'cliente.txt';
--
ExpFilePath := pPathArq;
--
IF NOT sys.UTL_FILE.IS_OPEN (ExpFile) THEN
--
ExpFile := sys.UTL_FILE.FOPEN (ExpFilePath, ExpFileName, 'w',9999);
--
END IF;
--
sys.UTL_FILE.PUT_LINE (ExpFile, '');
sys.UTL_FILE.PUT_LINE (ExpFile, '');
--
--
FOR rCliente IN cCliente LOOP
--
sys.UTL_FILE.PUT (ExpFile, REPLACE(rCliente.XMLTYPE,'ROW','CLIENTE'));
--
END LOOP;
sys.UTL_FILE.PUT (ExpFile, '');
--
--
IF sys.UTL_FILE.IS_OPEN (ExpFile) THEN
sys.UTL_FILE.FFLUSH (ExpFile);
sys.UTL_FILE.FCLOSE (ExpFile);
END IF;
--
----------------------------------------------------------------------
DBMS_OUTPUT.PUT_LINE ('=====> Gerar o arquivo de FORMAS DE PAGAMENTO ');
----------------------------------------------------------------------
ExpFileName := 'pagamento.txt';
--
ExpFilePath := pPathArq;
--
IF NOT sys.UTL_FILE.IS_OPEN (ExpFile) THEN
--
ExpFile := sys.UTL_FILE.FOPEN (ExpFilePath, ExpFileName, 'w',9999);
--
END IF;
--
sys.UTL_FILE.PUT_LINE (ExpFile, '');
sys.UTL_FILE.PUT_LINE (ExpFile, '');
--
--
FOR rPagamento IN cPagamento LOOP
--
sys.UTL_FILE.PUT (ExpFile, REPLACE(rPagamento.XMLTYPE,'ROW','PAGAMENTO'));
--
END LOOP;
sys.UTL_FILE.PUT (ExpFile, '');
--
--
IF sys.UTL_FILE.IS_OPEN (ExpFile) THEN
sys.UTL_FILE.FFLUSH (ExpFile);
sys.UTL_FILE.FCLOSE (ExpFile);
END IF;
----------------------------------------------------------------------
DBMS_OUTPUT.PUT_LINE ('=====> Gerar o arquivo DUPLICATA ');
----------------------------------------------------------------------
ExpFileName := 'duplicata.txt';
--
ExpFilePath := pPathArq;
--
IF NOT sys.UTL_FILE.IS_OPEN (ExpFile) THEN
--
ExpFile := sys.UTL_FILE.FOPEN (ExpFilePath, ExpFileName, 'w',9999);
--
END IF;
--
sys.UTL_FILE.PUT_LINE (ExpFile, '');
sys.UTL_FILE.PUT_LINE (ExpFile, '');
--
--
FOR rDuplicata IN cDuplicata LOOP
--
sys.UTL_FILE.PUT (ExpFile, REPLACE(rDuplicata.XMLTYPE,'ROW','DUPLICATA'));
--
END LOOP;
sys.UTL_FILE.PUT (ExpFile, '');
--
--
IF sys.UTL_FILE.IS_OPEN (ExpFile) THEN
sys.UTL_FILE.FFLUSH (ExpFile);
sys.UTL_FILE.FCLOSE (ExpFile);
END IF;
----------------------------------------------------------*/
--
END PRC_VEN_GERAARQPALMVIVIANA;
/