0% found this document useful (0 votes)
24 views5 pages

Transact BCP

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views5 pages

Transact BCP

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

USE [FORTESCUE]

GO
/****** Object: StoredProcedure [dbo].[SYP_PM_BCP] Script Date: 5/18/2023
6:00:20 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SYP_PM_BCP]
(
@NombrePago NVARCHAR(100),
@MetodoPago NVARCHAR(50)
)

AS
--------------------------------------------------------
/* VARIABLES A SOLICITAR*/
--DECLARE @NombrePago NVARCHAR(100)
--DECLARE @MetodoPago NVARCHAR(50)

--SET @NombrePago = 'Pago20131126'


--SET @MetodoPago = 'TELE_BCP_SOL'
--EXEC SYP_PM_BCP 'Wiz20150930n3', 'PMTXT_BCP_SOL'

--------------------------------------------------------
BEGIN
SET NOCOUNT ON

/* VARIABLES GENERALES*/
DECLARE @dtw_ruta_config varchar(500)
DECLARE @moneda nvarchar(3)
DECLARE @TIPO_CTA_PROV NVARCHAR(20) -- TIPO DE LA CTA DE LA EMPRESA

/* VARIABLES CABECERA PROVEEDORES */


DECLARE @TIPO_REG1 NVARCHAR(1) -- TIPO DE REGISTRO
DECLARE @NROREG_CAB NVARCHAR(6) -- CANT DE ABONOS DE LA PLANILLA
DECLARE @FECHA_CAB NVARCHAR(8) -- FECHA DEL PROCESO AAAAMMDD
DECLARE @TIPO_CTA_CARGO NVARCHAR(1) -- TIPO DE LA CTA DE CARGO
DECLARE @MONEDA_CAB NVARCHAR(4) -- MONEDA DE LA CTA DE CARGO
DECLARE @NUMERO_CTA_CARGO NVARCHAR(20) -- NÚMERO DE LA CTA DE CARGO
DECLARE @AUX_IMP_CAB2 NVARCHAR(17) -- MONTO TOTAL DE LA PLANILLA
DECLARE @REF_PLANILLA NVARCHAR(40) -- REFERENCIA DE LA PLANILLA
DECLARE @FLAG_EXO_ITF NVARCHAR(1) -- FLAG DE EXONERACION ITF FIJO 'S'
DECLARE @TOTALCONTROL_CAB NVARCHAR(15) -- TOTAL DE CONTROL CHECKSUM
/* VARIABLES DETALLE PROVEEDORES */
DECLARE @TIPO_REG2 NVARCHAR(1) -- TIPO DE REGISTRO
DECLARE @FLAG_IDC NVARCHAR(1) -- FLAG VALIDAR IDC
/* VARIABLES DETALLE DOCUMENTOS PROVEEDORES */
DECLARE @TIPO_REG3 NVARCHAR(1) -- TIPO DE REGISTRO

DECLARE @TOTALCONTROL_CAB1 Bigint

/* VARIABLES CABECERA PROVEEDORES */


SET @moneda = (SELECT SUBSTRING("MainCurncy",1,2) FROM OADM);
SET @TIPO_REG1='1'
SET @FECHA_CAB=(SELECT REPLACE(CONVERT(VARCHAR,"PmntDate",112),'/','')FROM OPWZ
WHERE "WizardName" = @NombrePago)
SET @TIPO_CTA_CARGO= (SELECT ISNULL(A.BankCtlKey,'C') FROM OPYM A WHERE
A.PayMethCod = @MetodoPago) --Se obtiene del Metodo de pago.
SET @MONEDA_CAB=CASE (SELECT SUBSTRING(ISNULL(CurrCode,''),1,2) FROM PYM1 WHERE
PymCode=@MetodoPago) WHEN @moneda THEN '0001' ELSE '1001' END
--SET @MONEDA_CAB=CASE (SELECT SUBSTRING(ISNULL(CurrCode,''),1,2) FROM PYM1 WHERE
PymCode=@MetodoPago) WHEN 'S/' THEN '0001' ELSE '1001' END
SET @NUMERO_CTA_CARGO = (SELECT REPLACE(REPLACE(DflAccount,'-',''),' ','') FROM
OPYM WHERE PayMethCod=@MetodoPago)
SET @REF_PLANILLA=SPACE(40)
SET @TIPO_CTA_PROV = (SELECT x.DflAccount FROM OPYM x WHERE
x.PayMethCod=@MetodoPago)

/* VARIABLES DETALLE PROVEEDORES */


SET @TIPO_REG2 = '2' --VALOR FIJO 2

-----------------------------------------------------------------------------------
------------------------------------------------------------
/* VARIABLES DETALLE DOCUMENTOS PROVEEDORES */
SET @TIPO_REG3 = '3' --VALOR FIJO 3
-----------------------------------------------------------------------------------
------------------------------------------------------------

/* DETALLE PROVEEDORES*/
--Cambio de Account de OCRB a Ref2 de PWZ3
SELECT '2'+
(CASE (select Top 1 isnull(Ref1, ' ') from pwz3 where IdEntry = t4.IdEntry and
CardCode = t4.CardCode)
when 'B' THEN
(case (SELECT A."Branch" FROM "OCRB" A WHERE A."CardCode"=
(T4."CardCode")
AND A."ControlKey"= (SELECT SUBSTRING("CurrCode",1,2) FROM
"PYM1" WHERE "PymCode" = @MetodoPago)
AND A."BankCode" =(SELECT B."BnkDflt" FROM "OPYM" B WHERE
B."PayMethCod"= @MetodoPago)
AND A.Account = (select Top 1 isnull(Ref2, ' ') from pwz3
where IdEntry = t4.IdEntry and CardCode = t4.CardCode))
when 'A' THEN 'A'
WHEN 'C' THEN 'C'
ELSE 'M' END)
when 'I' then 'B' else ' ' end ) +--as "TIPO CTA DE ABONO",

(CASE when (select Top 1 isnull(Ref1, ' ') from pwz3 where IdEntry = t4.IdEntry
and CardCode = t4.CardCode) ='G'
then ''
else REPLACE((select Top 1 isnull(Ref2, ' ') from pwz3 where IdEntry =
t4.IdEntry and CardCode = t4.CardCode),'-','') end )+
SPACE( 20-LEN(CASE when (select Top 1 isnull(Ref1, ' ') from pwz3 where IdEntry =
t4.IdEntry and CardCode = t4.CardCode) = 'G'
then ''
else REPLACE((select Top 1 isnull(Ref2, ' ') from pwz3 where IdEntry =
t4.IdEntry and CardCode = t4.CardCode),'-','') end ) ) +--as "CuentaAbono Prov",

(CASE when (select Top 1 isnull(Ref1, ' ') from pwz3 where IdEntry = t4.IdEntry
and CardCode = t4.CardCode) ='G'
then '2' else '1' end ) + --as "MODALIDAD DE PAGO",
CASE isnull(T3."U_SYP_BPTD",'6') WHEN '1' THEN '1'--'DNI'
WHEN '4' THEN '4'--'CE'
WHEN '6' THEN '6'--'RUC'
WHEN '7' THEN '7'--'PAS'
ELSE '6' END + --as "TIPO DE DOC DEL PROVEEDOR" ,
LEFT( T3."LicTradNum"+REPLICATE(' ', 12),12) + -- "NÚMERO DE DOC DEL PROVEEDOR",
SPACE(3)+-- "doc NIÑO",

LEFT(case when charindex('´',T4."CardName")>0 then REPLACE(T4."CardName",'´',' ')


when charindex('#',T4."CardName")>0 then REPLACE(T4."CardName",'#',' ')
when charindex('$',T4."CardName")>0 then REPLACE(T4."CardName",'$',' ')
when charindex('&',T4."CardName")>0 then REPLACE(T4."CardName",'&',' ')
when charindex('*',T4."CardName")>0 then REPLACE(T4."CardName",'*',' ')
when charindex('''',T4."CardName")>0 then REPLACE(T4."CardName",'''',' ')
else T4."CardName" end +REPLICATE(' ',75) ,75 ) +-- NOMBRE DEL PROVEEDOR

SPACE(40) + -- REF PARA EL BENEFICIARIO

LEFT(ISNULL(T3."E_Mail",'') + REPLICATE(' ', 20),20) + -- "REF.empresa",


(CASE (SELECT SUBSTRING(ISNULL(P."CurrCode",''),1,2) FROM PYM1 P WHERE P."PymCode"
= T4."PymMeth" ) WHEN @moneda THEN '0001' ELSE '1001' END) + -- "MONEDA_CAB",

RIGHT(REPLICATE('0', 17) + CAST(CAST(T4."InvPayAmnt" AS NUMERIC(14,2)) AS


NVARCHAR), 17) + -- "MONTO",

(CASE WHEN (SELECT TOP 1 ISNULL(P.U_SYP_IDC,'N') FROM OCRB P


WHERE T4."CardCode" = P."CardCode" AND P."BankCode" = T6."BnkDflt"
AND left(P."ControlKey", 2) = CASE left(T6."Branch", 2) WHEN @moneda
THEN @moneda ELSE left(T6."Branch", 2) END ) = 'N'
THEN 'N' ELSE 'S' END) as "LINEA",
T4."CardCode" AS "CODIGO",

--T4."InvPayAmnt" AS "IMPORTE",
CASE (CASE WHEN SUBSTRING("NumAtCard", 1, 2) = '01' THEN 'F'
WHEN SUBSTRING("NumAtCard", 1, 2) = '07' THEN 'N'
WHEN SUBSTRING("NumAtCard", 1, 2) = '08' THEN 'C' ELSE 'D' END) WHEN 'N' THEN
(T4."InvPayAmnt" * -1)
ELSE (T4."InvPayAmnt")END AS "IMPORTE",
4 AS "NIVEL",

--Cambio de Account de OCRB a Ref2 de PWZ3


CASE when (select Top 1 isnull(Ref2, ' ') from pwz3 where IdEntry = t4.IdEntry and
CardCode = t4.CardCode) = 'G'
then replace (T3."LicTradNum",'E','0') else
right( REPLACE((select Top 1 isnull(Ref2, ' ') from pwz3 where IdEntry
= t4.IdEntry and CardCode = t4.CardCode),'-',''),11) end AS "CUENTA",

ISNULL(CASE WHEN (SELECT A.U_SYP_TCUENTA FROM OCRG A WHERE A.GroupCode =


T3.GroupCode) = 'Y' THEN 'S' ELSE 'N' END , 'N') as "FLAG_EXO_ITF",
T4."DocNum" AS "DOCENTRY"
into #SYP_TLC_BCP
FROM PWZ3 T4 INNER JOIN OPWZ T0 ON (T4."IdEntry" = T0."IdNumber")
INNER JOIN PWZ2 T2 ON (T0."IdNumber" = T2."IdEntry")
INNER JOIN OCRD T3 ON (T4."CardCode" = T3."CardCode")
INNER JOIN OPYM T6 ON T4."PymMeth" = T6."PayMethCod"

WHERE T0."Status" = 'R' AND T0."Canceled" = 'N' AND T0."WizardName" = @NombrePago


--RECOMENDACIONES PENDIENTES, NO CANCELADA Y LA SELECCIONADA
AND T2."PymCode" = T4."PymMeth" AND T2."Checked" = 'Y' -- MEDIO DE PAGO
SELECCIONADO
AND T4."Checked" = 'Y' AND T4."PymMeth" = @MetodoPago -- DOCUMENTOS
SELECCIONADOS CON PAGO SELECCIONADO

---- modifica por problemas en duplicidad de items---


----ARMA LA CABECERA-----
INSERT INTO #SYP_TLC_BCP("CODIGO","LINEA","NIVEL", "CUENTA",
"IMPORTE","FLAG_EXO_ITF")
(SELECT "T"."CODIGO", LEFT("T"."LINEA",178),2, "T"."CUENTA",
CAST(SUM( "T"."IMPORTE" )AS NUMERIC(14,2)) as "dato",T."FLAG_EXO_ITF"
FROM "#SYP_TLC_BCP" as "T" WHERE "T"."NIVEL" = 4
GROUP BY "T"."CODIGO", LEFT("T"."LINEA",178), "T"."CUENTA",T."FLAG_EXO_ITF")

UPDATE #SYP_TLC_BCP
SET "LINEA" = LEFT("LINEA",178)+
RIGHT(REPLICATE('0', 17) + CAST(CAST("IMPORTE" AS NUMERIC(14,2)) AS NVARCHAR), 17)
+ -- "MONTO",
'S'
where "NIVEL" = 2

DELETE FROM #SYP_TLC_BCP WHERE "NIVEL" = 4

-----------------------------------------------------------------------------------
--------------------------------------------------------------
/* DETALLE DOCUMENTOS PROVEEDORES*/
INSERT INTO #SYP_TLC_BCP (LINEA,CODIGO,IMPORTE,NIVEL,DOCENTRY,FLAG_EXO_ITF)
SELECT
'3' + --TIPO_REG3
CASE WHEN SUBSTRING("NumAtCard", 1, 2) = '01' THEN 'F'
WHEN SUBSTRING("NumAtCard", 1, 2) = '07' THEN 'N'
WHEN SUBSTRING("NumAtCard", 1, 2) = '08' THEN 'C' ELSE 'D' END +--Tipo doc Pago
--LEFT(REPLACE(SUBSTRING(T0."NumAtCard",4,12),'-','')+REPLICATE('0', 15) , 15) +--
Numero Documento
--RIGHT('000000000' +
Ltrim(Rtrim(REPLACE(SUBSTRING(T0."NumAtCard",4,12),'-',''))),15)+
RIGHT(REPLICATE('0', 15) + RIGHT((REPLICATE('0',(SELECT A.U_SYP_SIZESER FROM
"@SYP_TPODOC" A WHERE A.U_SYP_TDTD = SUBSTRING(T0.NumAtCard,1,2))) +
CONVERT(nvarchar(4),REPLACE(SUBSTRING(T0.NumAtCard,4,(SELECT A.U_SYP_SIZESER FROM
"@SYP_TPODOC" A WHERE A.U_SYP_TDTD = SUBSTRING(T0.NumAtCard,1,2))),'-',''))),
(SELECT A.U_SYP_SIZESER FROM "@SYP_TPODOC" A WHERE A.U_SYP_TDTD =
SUBSTRING(T0.NumAtCard,1,2))) + RIGHT((REPLICATE('0',(SELECT A.U_SYP_SIZECOR FROM
"@SYP_TPODOC" A WHERE A.U_SYP_TDTD = SUBSTRING(T0.NumAtCard,1,2))) +
CONVERT(nvarchar(8),REPLACE(SUBSTRING(T0.NumAtCard,9,(SELECT A.U_SYP_SIZECOR FROM
"@SYP_TPODOC" A WHERE A.U_SYP_TDTD = SUBSTRING(T0.NumAtCard,1,2))),'-',''))),
(SELECT A.U_SYP_SIZECOR FROM "@SYP_TPODOC" A WHERE A.U_SYP_TDTD =
SUBSTRING(T0.NumAtCard,1,2))) ,15) +
CASE (CASE WHEN SUBSTRING("NumAtCard", 1, 2) = '01' THEN 'F'
WHEN SUBSTRING("NumAtCard", 1, 2) = '07' THEN 'N'
WHEN SUBSTRING("NumAtCard", 1, 2) = '08' THEN 'C' ELSE 'D' END) WHEN 'N' THEN
RIGHT(REPLICATE('0', 17) + CAST(CAST(abs(T0."InvPayAmnt" * -1) AS NUMERIC(14,2)) AS
NVARCHAR), 17)
ELSE RIGHT(REPLICATE('0', 17) + CAST(CAST(abs(T0."InvPayAmnt") AS NUMERIC(14,2))
AS NVARCHAR), 17) END as "LINEA",--monto
T0."CardCode",
CASE (CASE WHEN SUBSTRING("NumAtCard", 1, 2) = '01' THEN 'F'
WHEN SUBSTRING("NumAtCard", 1, 2) = '07' THEN 'N'
WHEN SUBSTRING("NumAtCard", 1, 2) = '08' THEN 'C' ELSE 'D' END) WHEN 'N' THEN
(T0."InvPayAmnt" * -1)
ELSE (T0."InvPayAmnt")END,
3 ,ISNULL(T0."TransId", T0."InvKey"),
ISNULL(CASE WHEN (SELECT A.U_SYP_TCUENTA FROM OCRG A WHERE A.GroupCode =
T2.GroupCode) = 'Y' THEN 'S' ELSE 'N' END , 'N') as "FLAG_EXO_ITF"
FROM PWZ3 T0
INNER JOIN OPWZ T1 ON(T0."IdEntry" = T1."IdNumber")
INNER JOIN OCRD T2 ON(T0."CardCode" = T2."CardCode")
INNER JOIN PWZ2 T3 ON(T1."IdNumber" = T3."IdEntry") --METODOS DE PAGO

WHERE T1."Status" = 'R' AND T1."Canceled" = 'N' AND T1."WizardName" = @NombrePago


--RECOMENDACIONES PENDIENTES, NO CANCELADA Y LA SELECCIONADA
AND T3."PymCode" = T0."PymMeth" AND T3."Checked" = 'Y' -- MEDIO DE PAGO
SELECCIONADO
AND T0."Checked" = 'Y' AND T0."PymMeth" = @MetodoPago -- DOCUMENTOS
SELECCIONADOS CON PAGO
AND T0."CardCode" in (Select distinct Tx0."CODIGO" from #SYP_TLC_BCP Tx0 )
----------------------------------------------------------------------------------
SET @NROREG_CAB= (SELECT RIGHT(REPLICATE('0', 6) + CAST(COUNT(*) AS NVARCHAR), 6)
FROM #SYP_TLC_BCP WHERE NIVEL=2)

SET @AUX_IMP_CAB2 =(SELECT RIGHT(REPLICATE('0', 17) +


CONVERT(NVARCHAR,CAST(SUM(IMPORTE) AS NUMERIC(14,2))) , 17) -- "MONTO",
FROM #SYP_TLC_BCP WHERE NIVEL=2)

SET @TOTALCONTROL_CAB1 = CAST(SUBSTRING(@NUMERO_CTA_CARGO,4,LEN(@NUMERO_CTA_CARGO))


AS NUMERIC)
SET @NUMERO_CTA_CARGO = ISNULL(@NUMERO_CTA_CARGO,'')+SPACE(20-
LEN(ISNULL(@NUMERO_CTA_CARGO,'')))
SET @TOTALCONTROL_CAB1 = @TOTALCONTROL_CAB1 + (SELECT SUM(convert(bigint,CUENTA))
FROM #SYP_TLC_BCP WHERE NIVEL=2)

SET @TOTALCONTROL_CAB =
RIGHT('000000000000000'+LTRIM(STR(@TOTALCONTROL_CAB1,15,0)),15)

INSERT INTO #SYP_TLC_BCP (LINEA,CODIGO,IMPORTE,NIVEL,CUENTA,FLAG_EXO_ITF)


(SELECT
@TIPO_REG1+@NROREG_CAB+@FECHA_CAB+@TIPO_CTA_CARGO+@MONEDA_CAB+@NUMERO_CTA_CARGO+@AU
X_IMP_CAB2+@REF_PLANILLA+
ISNULL((SELECT CASE WHEN ISNULL(A.U_SYP_ITF,'N') = 'N' THEN 'N' ELSE 'S' END FROM
DSC1 A WHERE A.Account = @TIPO_CTA_PROV AND "BankCode" = '02'),'N')
+@TOTALCONTROL_CAB,
NULL,NULL,1,SUBSTRING(@NUMERO_CTA_CARGO,4,len(@NUMERO_CTA_CARGO)),'Z'
)

-------MUESTRA RESULTADO DE LA TABLA


SELECT "LINEA" FROM #SYP_TLC_BCP ORDER BY "CODIGO", "NIVEL"
drop table #SYP_TLC_BCP

END

You might also like