use dbSurias06_E GO /****** Object: StoredProcedure [dbo].[SP_ENCABEZADO_COMPROBANTES_SAT] Script Date: 03/06/2021 05:12:38 p. m. ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[SP_ENCABEZADO_COMPROBANTES_SAT] @FECHA_I nvarchar(50), @FECHA_F nvarchar(50), @ORIGEN nvarchar(MAX), @TDOCUMENTO nvarchar(MAX), @RFCRECEPTOR nvarchar(MAX), @RFCEMISOR nvarchar(MAX) AS BEGIN DECLARE @FILTER NVARCHAR(200) DECLARE @QUERY VARCHAR(MAX) DECLARE @BOOK NVARCHAR(60) DECLARE @GMAESTRA NVARCHAR(60) SET @BOOK = (SELECT CVE_BLOQ FROM DBCONF_BLOQ WHERE DES_BLOQ LIKE 'GCOMPROBANTESATENC') cREATE TABLE #NUM_DOC ( ID_NUM_DOC INT PRIMARY KEY ) cREATE TABLE #DesDec ( ID_NUM_DOC INT PRIMARY KEY, Concepto varchar(max) ) IF (@ORIGEN <> NULL OR @ORIGEN <> '') BEGIN SET @FILTER = '' IF (@TDOCUMENTO <> NULL OR @TDOCUMENTO <>'') BEGIN IF(@RFCEMISOR <> NULL OR @RFCEMISOR <>'') BEGIN SET @FILTER =' AND RFCEMISORSAT ='''+@RFCEMISOR+'''' END IF(@RFCRECEPTOR <> NULL OR @RFCRECEPTOR <>'') BEGIN SET @FILTER =' AND RFCRECEPTORSAT ='''+@RFCRECEPTOR+'''' END EXEC( N'INSERT INTO #NUM_DOC (ID_NUM_DOC ) SELECT NUM_DOC FROM GMAESTRASAT WHERE Num_doc > 0 and ORIGENSAT ='''+@ORIGEN +''' AND TipoComprobanteSAT ='''+@TDocumento +''' AND DATEADD(DD,0,DATEDIFF(DD,0,FechaFacturacionSAT)) BETWEEN DATEADD(DD,0,DATEDIFF(DD,0,'''+@FECHA_I+''')) AND DATEADD(DD,0,DATEDIFF(DD,0,'''+@FECHA_F+''')) ' +@FILTER ) EXEC(N'INSERT INTO #DesDec (ID_NUM_DOC,CONCEPTO ) SELECT en.ID_NUM_DOC ,STUFF(( SELECT '' | ''+det.descripcion FROM dbdet'+@BOOK+' det WHERE det.num_doc = en.ID_NUM_DOC FOR XML PATH('''') ),1,1,'''') FROM #NUM_DOC en ') EXEC( N'SELECT M.NUM_DOC AS ''ID'', CASE WHEN ISNULL(M.CANCELADOSAT,0) = 0 THEN ''Vigente'' else ''Cancelado''end AS ''ESTATUS'' , ENC.TIPORELACIONSAT AS ''TIPO RELACION CFDI'', ENC.CFDIRELACIONADOUUIDSAT AS '' CFDI RELACIONADO'', M.TIPOCOMPROBANTESAT AS ''TIPO'', M.UUIDSAT AS ''UUID'', M.SERIESAT AS ''SERIE'', M.FOLIOSAT AS ''FOLIIO'', ENC.RECEPTORUSOCFDISAT AS ''USO CFDI'', M.RFCEMISORSAT AS ''RFC EMISOR'', M.RAZONSOCIALEMISORSAT AS ''RAZON SOCIAL EMISOR'', M.RFCRECEPTORSAT AS ''RFC RECEPTOR'', M.RAZONSOCIALRECEPTORSAT AS ''RAZON SOCIAL RECEPTOR'', DD.CONCEPTO AS CONCEPTOS, M.SUBTOTALSAT AS ''SUBTOTAL'', sum( CASE WHEN DET.TRASLADOIMPUESTO=002 AND DET.TRASLADOTASAOCUOTA = 0 THEN DET.TRASLADOTASAOCUOTA ELSE 0 END) AS ''BASE IVA 0'', sum(CASE WHEN DET.TRASLADOIMPUESTO=002 AND DET.TRASLADOTASAOCUOTA = 0.08 THEN DET.TRASLADOTASAOCUOTA ELSE 0 END) AS ''BASE IVA 8'', sum(CASE WHEN DET.TRASLADOIMPUESTO=002 AND DET.TRASLADOTASAOCUOTA = 0.16 THEN DET.TRASLADOTASAOCUOTA ELSE 0 END) AS ''BASE IVA 16'', SUM (CASE WHEN DET.TRASLADOIMPUESTO = 002 AND DET.TRASLADOTIPOFACTOR=''EXENTO'' THEN DET.TRASLADOBASE ELSE 0 END) AS ''IVA EXENTO'', M.DESCUENTOSAT AS ''DESCUENTO'', Sum(CASE WHEN IR.IMPUESTO =''ISR''THEN IR.IMPORTE ELSE 0 END)AS ''ISR RETENIDO'', sum(CASE WHEN IR.IMPUESTO =''IVA''THEN IR.IMPORTE ELSE 0 END) AS ''IVA RETENIDO'', max(CASE WHEN IT.IMPUESTO =''IEPS''THEN IT.IMPORTE ELSE 0 END) AS ''IEPS TRASLADADO'', max(CASE WHEN IT.IMPUESTO =''IVA''THEN IT.IMPORTE ELSE 0 END) AS ''IVA TRASLADADO'', SUM(CASE WHEN DET.TRASLADOIMPUESTO=003 THEN DET.TRASLADOBASE ELSE 0 END) AS ''BASE IEPS'' , M.IVASAT AS ''IVA'', M.TOTALSAT AS ''TOTAL'', M.MONEDASAT AS ''MONEDA'', M.TIPOCAMBIOSAT AS '' TIPO CAMBIO'', M.FORMADEPAGOSAT AS ''FORMA DE PAGO'', M.METODODEPAGOSAT AS ''METODO DE PAGO'', M.AGRUPACIONIDSAT AS ''AGRUPACION ID'', M.ANIOSAT AS ''ANIO'', M.MESSAT AS ''MES'', M.CANCELADOSAT AS ''CANCELADO'', M.CANCELADOCONTABILIZADOSAT AS ''CANCELADO CONTABILIZADO'', M.CLAVENOMINASAT AS ''CLAVE NOMINA '', M.PERIODICIDADPAGOSAT AS ''PERIODO DE PAGO'', M.TIPONOMINASAT AS ''TIPO NOMINA'', M.FECHAFACTURACIONSAT AS ''FECHA FACTURACION'', M.FECHAGENERACIONPOLIZASAT AS ''FECHA GENERACION POLIZA'', M.FECHAPAGOSAT AS ''FECHA PAGO'', M.FECHATIMBRADOSAT AS ''FECHA TIMBRADO '', M.IDPDFSAT AS ''ID PDF'', M.INFORMACIONSAT AS ''INFORMACION'', M.ORIGENSAT AS ''ORIGEN'', M.ACUSECANCELADOSAT AS ''ACUSE CANCELADO'', M.ISHPORCENTAJESAT AS ''ISH PORCENTAJE'',ISHIMPORTESAT AS ''ISH IMPORTE'', M.VERSIONSAT AS ''VERSION'', M.FECHAACTUALIZACIONSAT AS ''FECHA ACTUALIZACION'' FROM GMAESTRASAT M LEFT JOIN DBENC'+@BOOK+' ENC ON M.NUM_DOC=ENC.IDGMAESTRASAT ---GCOMPROBANTESATENC LEFT JOIN DBDET'+@BOOK+' DET ON ENC.NUM_DOC=DET.NUM_DOC --- LEFT JOIN #DesDec DD ON DD.ID_NUM_DOC = M.NUM_DOC LEFT JOIN AUD_IMPUESTOSRETENCIONES IR ON IR.IDCOMPROBANTE = M.NUM_DOC LEFT JOIN AUD_IMPUESTOSTRASLADOS IT ON IT.IDCOMPROBANTE = M.NUM_DOC INNER JOIN #NUM_DOC ND on ND.ID_NUM_DOC=M.NUM_DOC WHERE LEN(M.UUIDSAT) = 36 AND M.NUM_DOC IN(SELECT * FROM #NUM_DOC) group by M.Num_doc, M.AgrupacionIdSAT, M.AnioSAT, M.CanceladoSAT, M.CanceladoContabilizadoSAT, M.ClaveNominaSAT, M.FechaFacturacionSAT, M.FechaGeneracionPolizaSAT, M.FechaPagoSAT, M.FechaTimbradoSAT, M.FolioSAT, M.IdPDFSAT, M.InformacionSAT, M.IsValidSAT, M.IvaSAT, M.MesSAT, M.MonedaSAT, M.OrigenSAT, M.PeriodicidadPagoSAT, M.RazonSocialEmisorSAT, M.RazonSocialReceptorSAT, M.RFCEmisorSAT, M.RFCReceptorSAT, DD.CONCEPTO, M.SerieSAT, M.SubtotalSAT, M.TipoComprobanteSAT, M.TipoCambioSAT, M.TipoNominaSAT, M.TotalSAT, M.UUIDSAT, M.AcuseCanceladoSAT, M.DescuentoSAT, M.ISHPorcentajeSAT,ISHImporteSAT, M.VersionSAT, M.FormaDePagoSAT, M.MetodoDePagoSAT, M.FechaIniSAT, M.FechaActualizacionSAT, ENC.TipoRelacionSAT, ENC.CfdiRelacionadoUUIDSAT, ENC.ReceptorUsoCFDISAT ORDER BY M.Num_doc') --PRINT(@QUERY) drop table #NUM_DOC drop table #DesDec END END END