Re: Suministro Inmediato de Informacion - SII
Posted: Sun May 07, 2017 12:16 pm
www.FiveTechSoft.com
https://fivetechsupport.com/forums/
https://fivetechsupport.com/forums/viewtopic.php?f=6&t=33522
oServicio := oGtxSII.New('SuministroLRFacturasEmitidas');
oRequest := oServicio.oRequest;
// Rellenamos cabecera
oCabecera := oRequest.Cabecera;
oCabecera.Titular.NIF := Edit2.Text;
oCabecera.Titular.NombreRazon := Edit1.Text;
oCabecera.Titular.NIFRepresentante := Edit3.Text;
oCabecera.TipoComunicacion := 'A0';
oFacturaEmitida := oRequest.GetFactura();
oFacturaEmitida.PeriodoImpositivo.Ejercicio := 2017;
oFacturaEmitida.PeriodoImpositivo.Periodo := '03';
oFacturaEmitida.IDFactura.NIF := Edit2.Text;
oFacturaEmitida.IDFactura.NumSerieFacturaEmisor := Edit4.Text;
oFacturaEmitida.IDFactura.FechaExpedicionFacturaEmisor := StrToDate(Edit5.Text);
oFacturaEmitida.FacturaExpedida.TipoFactura := 'F1';
oFacturaEmitida.FacturaExpedida.ClaveRegimenEspecialOTrascendencia := '01';
oFacturaEmitida.FacturaExpedida.ImporteTotal := 270.00;
oFacturaEmitida.FacturaExpedida.DescripcionOperacion := 'Ventas de productos';
oFacturaEmitida.FacturaExpedida.Contraparte.NombreRazon := 'EMPRESAXXXX';
oFacturaEmitida.FacturaExpedida.Contraparte.NIFRepresentante := '';
oFacturaEmitida.FacturaExpedida.Contraparte.NIF := 'A17035080';
Sujeta := oFacturaEmitida.FacturaExpedida.TipoDesglose.DesgloseFactura.Sujeta;
Sujeta.TipoNoExenta := 'S1';
// Detalle del IVA, un objeto oDetalleIVA por cada base
oDetalleIVA := Sujeta.GetDetalleIVA();
oDetalleIVA.TipoImpositivo := 21;
oDetalleIVA.BaseImponible := 123.97;
oDetalleIVA.CuotaRepercutida := 26.03 ;
oDetalleIVA.TipoRecargoEquivalencia := 0 ;
oDetalleIVA.CuotaRecargoEquivalencia := 0 ;
// Creamos una segunda factura , cambiando solo la numeración
oFacturaEmitida := oRequest.GetFactura();
oFacturaEmitida.PeriodoImpositivo.Ejercicio := 2017;
oFacturaEmitida.PeriodoImpositivo.Periodo := '03';
oFacturaEmitida.IDFactura.NIF := Edit2.Text;
oFacturaEmitida.IDFactura.NumSerieFacturaEmisor := Edit4.Text + 'B';
oFacturaEmitida.IDFactura.FechaExpedicionFacturaEmisor := StrToDate(Edit5.Text);
oFacturaEmitida.FacturaExpedida.TipoFactura := 'F1';
oFacturaEmitida.FacturaExpedida.ClaveRegimenEspecialOTrascendencia := '01';
oFacturaEmitida.FacturaExpedida.ImporteTotal := 270.00;
oFacturaEmitida.FacturaExpedida.DescripcionOperacion := 'Ventas de productos';
oFacturaEmitida.FacturaExpedida.Contraparte.NombreRazon := 'EMPRESAXXXX';
oFacturaEmitida.FacturaExpedida.Contraparte.NIFRepresentante := '';
oFacturaEmitida.FacturaExpedida.Contraparte.NIF := 'A17035080';
Sujeta := oFacturaEmitida.FacturaExpedida.TipoDesglose.DesgloseFactura.Sujeta;
Sujeta.TipoNoExenta := 'S1';
// Detalle del IVA, un objeto oDetalleIVA por cada base
oDetalleIVA := Sujeta.GetDetalleIVA();
oDetalleIVA.TipoImpositivo := 21;
oDetalleIVA.BaseImponible := 123.97;
oDetalleIVA.CuotaRepercutida := 26.03 ;
oDetalleIVA.TipoRecargoEquivalencia := 0 ;
oDetalleIVA.CuotaRecargoEquivalencia := 0 ;
// Firma y envío
if oServicio.Send() then
begin
Memo2.Text := oRequest.GetXML();
self.viewResponse( );
end
else
begin
Memo2.Text := oRequest.GetXML();
if oServicio.nHostError = -1 then
begin
Memo3.Text := 'Incidencia detectada:' + IntToStr( oServicio.nHostError )+ '#' + oServicio.cHostErrorMsg;
end
else
self.viewResponse( );
end;
oServicio:= GtxSii():New("SuministroLRFacturasEmitidas")
// Cabecera
with object ( oServicio:oRequest )
:Cabecera:Titular:NombreRazon := "GETEX INFORMATICA SCP"
:Cabecera:Titular:NIFRepresentante := ""
:Cabecera:Titular:NIF := "J66767849"
:Cabecera:TipoComunicacion := "A0" // Enum A0, A1, A4
end with
// Crear detalle de factura
oFacturaEmitida := oServicio:oRequest:GetFactura()
with object (oFacturaEmitida)
:PeriodoImpositivo:Ejercicio := 2017
:PeriodoImpositivo:Periodo := "03"
:IDFactura:NIF := "J66767849"
:IDFactura:NumSerieFacturaEmisor := "FACTURA-006"
:IDFactura:FechaExpedicionFacturaEmisor := date()
with object (:FacturaExpedida)
:TipoFactura := "F1"
:ClaveRegimenEspecialOTrascendencia := "01"
:ImporteTotal := 270.00
:DescripcionOperacion := "Ventas de productos"
:Contraparte:NombreRazon := "EMPRESAXXXX"
:Contraparte:NIFRepresentante := ""
:Contraparte:NIF := "A17035080"
with object (:TipoDesglose:DesgloseFactura:Sujeta)
:TipoNoExenta := 'S1'
// Detalle del IVA, un objeto oDetalleIVA por cada base
oDetalleIVA := :GetDetalleIVA()
with object (oDetalleIVA)
:TipoImpositivo := 21
:BaseImponible := 123.97
:CuotaRepercutida := 26.03
:TipoRecargoEquivalencia := 0
:CuotaRecargoEquivalencia := 0
end
// Detalle del IVA, un objeto oDetalleIVA por cada base
oDetalleIVA := :GetDetalleIVA()
with object (oDetalleIVA)
:TipoImpositivo := 0
:BaseImponible := 120.00
:CuotaRepercutida := 0
:TipoRecargoEquivalencia := 0
:CuotaRecargoEquivalencia := 0
end
end
end
end
if oServicio:Send()
viewResponse( oServicio:oResponse )
else
? oServicio:nHostError, oServicio:cHostErrorMsg
if oServicio:nHostError != -1
viewResponse( oServicio:oResponse )
endif
endif
hFile := fcreate("xml")
fwrite( hFile, "xml......etc" )
fclose( hFile )
juanp wrote:Hola José,
Pero, para no interrumpir el silencio, deberíamos contactar y comentar lo muuuuucho que hay que comentar sobre el sii
Saludos
#include "ANDUP.CH"
#include "Common.ch"
#include "AppEvent.ch"
#include "Gra.ch"
#include "Font.ch"
FUNC SiiFacCli()
****************
LOCAL cFich :="m:\Factura.xml"
LOCAL nLonPreg1 := 15
LOCAL nLonPreg2 := 30
PRIVATE ProgList := ProcName()
PRIVATE cFecha
PRIVATE cEjerFac
PRIVATE cPerFac
PRIVATE cFichTemp := vsTemp+"SiiFacEmit.dbf"
PRIVATE cFichXml := ValidDir(vsUBIC_SII)+"FacturasEmitidas.xml"
PRIVATE CL_FECHI := CTOD("")
PRIVATE CL_FECHF := CTOD("")
PRIVATE CL_DIR_SAL := "C:\EFAC"
PRIVATE CL_SERIE := SPACE(2)
PRIVATE CL_FACI := 0
PRIVATE CL_FACF := 0
PRIVATE CL_EXCLU_ENV := "S"
IniVarListado()
SELE EMP
SEEK G_COD_EMP
IF !Found()
MsgBox("No existe la empresa "+G_COD_EMP)
RETURN .t.
ENDIF
mCifEmpresa := trim(LimpiaCif(EMP->CIF))
dbpan("Envio Facturas clientes a Aeat")
@ 4,2 SAY CIDI("DESDE FECHA" , nLonPreg1,"R") GET CL_FECHI VALID GETFECHA(@CL_FECHI)
@ 5,2 SAY CIDI("HASTA FECHA" , nLonPreg1,"R") GET CL_FECHF VALID GETFECHA(@CL_FECHF)
@ 7,2 SAY CIDI("SERIE" , nLonPreg1,"R") GET CL_SERIE
@ 8,2 SAY CIDI("DE FACTURA" , nLonPreg1,"R") GET CL_FACI PICT "@Z ######"
@ 9,2 SAY CIDI("A FACTURA" , nLonPreg1,"R") GET CL_FACF PICT "@Z ######"
@ 11,2 SAY CIDI("EXCLUIR ENVIADAS (S/N)" , nLonPreg2,"R") GET CL_EXCLU_ENV PICT "!" VALID CL_EXCLU_ENV $ "SN"
@ 20,2 SAY "Fichero:" + cFichXml+"*"
LeeSale
@ 13,2 CLEAR TO 21,78
GuardaConfiguracion()
IF !EMPTY(CL_FACI) .AND. EMPTY(CL_FACF)
CL_FACF := CL_FACI
ENDIF
SELE FAC
COPY TO (cFichTemp) ;
FOR FECHA >= CL_FECHI;
.AND. (FECHA <=CL_FECHF .OR. EMPTY(CL_FECHF)) ;
.AND. (COD_SER=CL_SERIE .OR. EMPTY(CL_SERIE));
.AND. NUM_FAC >= CL_FACI;
.AND. (NUM_FAC <= CL_FACF .OR. EMPTY(CL_FACF));
.AND. (EMPTY(SII_CSV) .OR. CL_EXCLU_ENV="N" )
//Doy opcion a reenviar facturas que tengo registradas como correctas porque las han podido borrar de la aeat
USE (cFichTemp) ALIA BorrSii NEW EXCLUSIVE
GO TOP
cFecha := dtoc10(BorrSii->FECHA) //12/02/2018
cEjerFac := Subs(cFecha,7,4)
cPerFac := Subs(cFecha,4,2)
GeneraXml()
EnviaXmlSii()
SiiLeeResultado() //Marca las facturas
CierraBorr()
MSGBOX("Proceso Terminado")
RETURN .T.
FUNC GeneraXml()
****************
DELE FILE (cFichXml)
SET PRINTER TO (cFichXml)
SET PRINT ON
/*
? '<?xml version="1.0" encoding="UTF-8"?>'
? '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"'
? 'xmlns:siiLR="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd"'
? 'xmlns:sii="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">'
*/
? '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"'
?? ' xmlns:siiLR="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd" xmlns:sii="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">'
? '<soapenv:Header/>'
? '<soapenv:Body>'
? '<siiLR:SuministroLRFacturasEmitidas>'
? ' <sii:Cabecera>'
? ' <sii:IDVersionSii>0.7</sii:IDVersionSii>'
? ' <sii:Titular>'
? ' <sii:NombreRazon>' + CtoSII(vsW) + '</sii:NombreRazon>'
? ' <sii:NIF>'+TRIM(mCifEmpresa)+'</sii:NIF>'
? ' </sii:Titular>'
? ' <sii:TipoComunicacion>A0</sii:TipoComunicacion>'
? '</sii:Cabecera>'
SELE BorrSii
GO TOP
DO WHILE !EOF()
Detalle()
************
SELE BorrSii
SKIP
*****
ENDDO
?
? '</siiLR:SuministroLRFacturasEmitidas>'
? '</soapenv:Body>'
? '</soapenv:Envelope>'
SET PRINTER TO
SET PRINT OFF
RETURN .T.
STATIC FUNC Detalle()
*********************
LOCAL nClaIva
PRIVATE cClaIva
? '<siiLR:RegistroLRFacturasEmitidas>'
? ' <sii:PeriodoImpositivo>'
? ' <sii:Ejercicio>' + cEjerFac + '</sii:Ejercicio>'
? ' <sii:Periodo>' + cPerFac + '</sii:Periodo>'
? ' </sii:PeriodoImpositivo>'
? '<siiLR:IDFactura>'
? ' <sii:IDEmisorFactura>'
? ' <sii:NIF>' + TRIM(mCifEmpresa) + '</sii:NIF>'
? ' </sii:IDEmisorFactura>'
? ' <sii:NumSerieFacturaEmisor>' + TRIM(BorrSii->COD_SER)+'-'+Ntc(BorrSii->NUM_FAC) +'</sii:NumSerieFacturaEmisor>'
? ' <sii:FechaExpedicionFacturaEmisor>' + cFecha +'</sii:FechaExpedicionFacturaEmisor>'
? '</siiLR:IDFactura>'
? '<siiLR:FacturaExpedida>'
? '<sii:TipoFactura>' +'F1' + '</sii:TipoFactura>'
? ' <sii:ClaveRegimenEspecialOTrascendencia>' +'01' + '</sii:ClaveRegimenEspecialOTrascendencia>'
? ' <sii:ImporteTotal>' +NTC(BorrSii->TOT_FAC,2) + '</sii:ImporteTotal>'
? ' <sii:DescripcionOperacion>'+ +CtoSII(BorrSii->DESCRIP) + '</sii:DescripcionOperacion>'
? ' <sii:Contraparte>'
? ' <sii:NombreRazon>' +CtoSII(BorrSii->RASO) + '</sii:NombreRazon>'
? ' <sii:NIF>' +TRIM(BorrSii->CIF) + '</sii:NIF>'
? ' </sii:Contraparte>'
? '<sii:TipoDesglose>'
? '<sii:DesgloseFactura>'
? '<sii:Sujeta>'
? '<sii:NoExenta>'
? ' <sii:TipoNoExenta>' +'S1' + '</sii:TipoNoExenta>'
? '<sii:DesgloseIVA>'
? '<sii:DetalleIVA>'
FOR nClaIva=1 TO 4
cClaIva:=ntc(nClaIva)
IF abs(BASE&cClaIva)>= 0.01
? ' <sii:TipoImpositivo>' + ntc(BorrSii->POR_IVA&cClaIva,2) +'</sii:TipoImpositivo>'
? ' <sii:BaseImponible>' + ntc(BorrSii->BASE&cClaIva ,2) +'</sii:BaseImponible>'
? ' <sii:CuotaRepercutida>' + ntc(BorrSii->IMP_IVA&cClaIva,2) +'</sii:CuotaRepercutida>'
? ' <sii:TipoRecargoEquivalencia>' + ntc(BorrSii->POR_REC&cClaIva,2) +'</sii:TipoRecargoEquivalencia>'
? ' <sii:CuotaRecargoEquivalencia>' + ntc(BorrSii->IMP_REC&cClaIva,2) +'</sii:CuotaRecargoEquivalencia>'
ENDIF
NEXT
? '</sii:DetalleIVA>'
? '</sii:DesgloseIVA>'
? '</sii:NoExenta>'
? '</sii:Sujeta>'
? '</sii:DesgloseFactura>'
? '</sii:TipoDesglose>'
? '</siiLR:FacturaExpedida>'
? '</siiLR:RegistroLRFacturasEmitidas>'
RETURN .T.