BEGIN TRY
BEGIN TRAN
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML,'<cfdi:Comprobante xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:implocal="http://www.sat.gob.mx/implocal" xmlns:Emisor="http://www.w3.org/2001/XMLSchema" xmlns:Receptor="http://www.w3.org/2001/XMLSchema" />'
INERT INTO InvoiceImport(
ImportDateTime,Folio,Fecha,FormaPago,NoCertificado,Total,Moneda,MetodoPago,RFCEmisor,
NombreEmisor,RFCReceptor,NombreReceptor,TotalImpuestosTrasladados,SubTotal,UUID,
FechaTimbrado,Impuesto,Tasa,ImporteImpuesto,UsoCFDI,Serie,FileName
)
SELECT @LoadedDateTime,Folio,Fecha,FormaPago,NoCertificado,Total,Moneda,MetodoPago,RFCEmisor,
NombreEmisor,RFCReceptor,NombreReceptor,TotalImpuestosTrasladados,SubTotal,UUID,
FechaTimbrado,Impuesto,Tasa,ImporteImpuesto,UsoCFDI,Serie,@FileName
FROM OPENXML (@hdoc,'/cfdi:Comprobante',2)
WITH (
[Folio] VARCHAR(10) '/cfdi:Comprobante/@FOLIO',
[Serie] VARCHAR(10) '/cfdi:Comprobante/@SERIE',
[Fecha] Datetime '/cfdi:Comprobante/@FECHA',
[FormaPago]varchar(4) '/cfdi:Comprobante/@FORMAPAGO',
[NoCertificado]varchar(50) '/cfdi:Comprobante/@NOCERTIFICADO',
[Total]float '/cfdi:Comprobante/@TOTAL',
[Moneda]varchar(4) '/cfdi:Comprobante/@MONEDA',
[MetodoPago]varchar(4) '/cfdi:Comprobante/@METODOPAGO',
[RFCEmisor]VARCHAR(25) './cfdi:Emisor/@RFC',
[NombreEmisor]VARCHAR(50) './cfdi:Emisor/@NOMBRE',
[RFCReceptor]VARCHAR(25) './cfdi:Receptor/@RFC',
[NombreReceptor]VARCHAR(50) './cfdi:Receptor/@NOMBRE',
[TotalImpuestosTrasladados]float './cfdi:IMPUESTOS/@TOTALIMPUESTOSTRASLADADOS',
[UUID] varchar(100) './cfdi:Complemento//@UUID',
[FechaTimbrado] datetime './cfdi:Complemento//@FECHATIMBRADO',
[SubTotal] float '/cfdi:Comprobante/@SUBTOTAL',
[Impuesto] float './cfdi:IMPUESTOS//@IMPUESTO',
[Tasa] float './cfdi:IMPUESTOS//@TASA',
[ImporteImpuesto] float './cfdi:IMPUESTOS//@IMPORTE',
[UsoCFDI]VARCHAR(5)'./cfdi:Receptor/@USOCFDI')
UPDATE XMLTable
SET DataImported = 1
WHERE @FileName = FileName AND XMLTable.DataImported IS NULL
COMMIT TRAN;
END TRY
BEGIN CATCH
IF(@@trancount<>0)
print 'error ocuured'
ROLLBACK TRAN;
END CATCH