Versión Copiada del tfs
This commit is contained in:
159
Bancos/SEPA3414.vb
Normal file
159
Bancos/SEPA3414.vb
Normal file
@@ -0,0 +1,159 @@
|
||||
Imports tsUtilidades.SEPA_3414
|
||||
|
||||
Namespace SEPA3414
|
||||
Public Class Ordenante
|
||||
Property CIF As String
|
||||
Property NOMBRE As String
|
||||
Property DOMICILIO As String
|
||||
Property NUMERO As String
|
||||
Property CPO As String
|
||||
Property CIUDAD As String
|
||||
Property PAIS As String
|
||||
Property IBAN As String
|
||||
Property BIC As String
|
||||
Property SUFIJO As String
|
||||
Property ENELMISMODIA As Boolean = False
|
||||
|
||||
End Class
|
||||
Public Class Beneficiario
|
||||
Property CIF As String
|
||||
Property ImporteTransferencia As Double
|
||||
Property IdentificacionPago As String
|
||||
Property IdentificacionPagoFichero As String
|
||||
Property IBAN As String
|
||||
Property BIC As String
|
||||
Property NOMBRE As String
|
||||
Property Proposito As String
|
||||
|
||||
End Class
|
||||
Public Class Utilidades
|
||||
Public Shared Sub GeneraXML(Ordenante As Ordenante, ListaBeneficiarios As List(Of Beneficiario), FicheroXML As String, FechaEnvio As DateTime, FechaEjecucion As DateTime)
|
||||
Try
|
||||
'
|
||||
' COMPROBACIONES
|
||||
'
|
||||
Dim benibaninc = ListaBeneficiarios.Where(Function(x) tsUtilidades.Bancos.Genericas.IBANCorrecto(x.IBAN) = False).ToList
|
||||
Dim ListaErrores As String = ""
|
||||
If benibaninc.Count > 0 Then
|
||||
For Each ben In benibaninc
|
||||
ListaErrores &= "El beneficiacio " & ben.NOMBRE & " Pago: " & ben.IdentificacionPago & " tiene un IBAN Incorrecto." & vbCrLf
|
||||
Next
|
||||
End If
|
||||
If ListaErrores <> "" Then Throw New Exception(ListaErrores)
|
||||
|
||||
Dim org(0) As GenericOrganisationIdentification1
|
||||
org(0) = New GenericOrganisationIdentification1 With {.Id = Ordenante.CIF & Ordenante.SUFIJO}
|
||||
|
||||
|
||||
Dim Document As New SEPA_3414.Document
|
||||
Document.CstmrCdtTrfInitn = New SEPA_3414.CustomerCreditTransferInitiationV03
|
||||
Document.CstmrCdtTrfInitn.GrpHdr = New SEPA_3414.GroupHeader32
|
||||
'Dim GrupoCabecera = Document.CstmrCdtTrfInitn.GrpHdr
|
||||
Document.CstmrCdtTrfInitn.GrpHdr.MsgId = Now.ToString 'IDENTIFICACION UNICA
|
||||
' Dim FechaEnvio As DateTime = Now
|
||||
' Dim FechaEjecucion As DateTime = Now
|
||||
Document.CstmrCdtTrfInitn.GrpHdr.CreDtTm = FechaEnvio.ToString("yyyy-MM-ddTHH:mm:ss")
|
||||
Document.CstmrCdtTrfInitn.GrpHdr.NbOfTxs = ListaBeneficiarios.Where(Function(X) X.ImporteTransferencia > 0).Count.ToString
|
||||
Document.CstmrCdtTrfInitn.GrpHdr.CtrlSum = ListaBeneficiarios.Where(Function(X) X.ImporteTransferencia > 0).Sum(Function(x) x.ImporteTransferencia).ToString("F2").Replace(",", ".")
|
||||
Document.CstmrCdtTrfInitn.GrpHdr.CtrlSumSpecified = True
|
||||
Document.CstmrCdtTrfInitn.GrpHdr.InitgPty = New SEPA_3414.PartyIdentification32
|
||||
Document.CstmrCdtTrfInitn.GrpHdr.InitgPty.Nm = Ordenante.NOMBRE
|
||||
Document.CstmrCdtTrfInitn.GrpHdr.InitgPty.Id = New Party6Choice With {.Item = New OrganisationIdentification4 With {.Othr = org}}
|
||||
|
||||
Document.CstmrCdtTrfInitn.GrpHdr.InitgPty.PstlAdr = New SEPA_3414.PostalAddress6
|
||||
Document.CstmrCdtTrfInitn.GrpHdr.InitgPty.PstlAdr.StrtNm = Ordenante.DOMICILIO
|
||||
If Ordenante.NUMERO <> "" Then Document.CstmrCdtTrfInitn.GrpHdr.InitgPty.PstlAdr.BldgNb = Ordenante.NUMERO
|
||||
Document.CstmrCdtTrfInitn.GrpHdr.InitgPty.PstlAdr.PstCd = Ordenante.CPO
|
||||
Document.CstmrCdtTrfInitn.GrpHdr.InitgPty.PstlAdr.TwnNm = Ordenante.CIUDAD
|
||||
Document.CstmrCdtTrfInitn.GrpHdr.InitgPty.PstlAdr.Ctry = Ordenante.PAIS
|
||||
'Dim listaInformacionPago As List(Of SEPA_3414.PaymentInstructionInformation3)
|
||||
'Dim informacionpago As SEPA_3414.PaymentInstructionInformation3
|
||||
Dim ListaPmtInf As New List(Of SEPA_3414.PaymentInstructionInformation3)
|
||||
Dim PmtInf As New SEPA_3414.PaymentInstructionInformation3
|
||||
PmtInf.PmtInfId = Ordenante.CIF
|
||||
PmtInf.PmtMtd = SEPA_3414.PaymentMethod3Code.TRF
|
||||
If Ordenante.BIC = "UCJAES2MXXX" Then
|
||||
PmtInf.BtchBookg = False ' para unicaja
|
||||
PmtInf.BtchBookgSpecified = True ' para unicaja
|
||||
PmtInf.NbOfTxs = Document.CstmrCdtTrfInitn.GrpHdr.NbOfTxs
|
||||
PmtInf.CtrlSum = ListaBeneficiarios.Where(Function(X) X.ImporteTransferencia > 0).Sum(Function(x) x.ImporteTransferencia)
|
||||
PmtInf.CtrlSumSpecified = True ' para unicaja
|
||||
PmtInf.PmtTpInf = New SEPA_3414.PaymentTypeInformation19
|
||||
PmtInf.PmtTpInf.SvcLvl = New SEPA_3414.ServiceLevel8Choice With {.Item = "SEPA"} ' para Unicaja
|
||||
PmtInf.PmtTpInf.LclInstrm = New SEPA_3414.LocalInstrument2Choice With {.Item = "SDCL"} ' para Unicaja
|
||||
If ListaBeneficiarios(0).Proposito IsNot Nothing AndAlso ListaBeneficiarios(0).Proposito <> "" Then
|
||||
PmtInf.PmtTpInf.CtgyPurp = New SEPA_3414.CategoryPurpose1Choice ' para Unicaja
|
||||
PmtInf.PmtTpInf.CtgyPurp.Item = ListaBeneficiarios(0).Proposito ' para Unicaja
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
PmtInf.ReqdExctnDt = FechaEjecucion
|
||||
'PmtInf.BtchBookg = False
|
||||
PmtInf.Dbtr = New SEPA_3414.PartyIdentification32
|
||||
PmtInf.Dbtr.Id = New Party6Choice
|
||||
PmtInf.Dbtr.Id.Item = New OrganisationIdentification4 With {.Othr = org}
|
||||
PmtInf.Dbtr.Nm = Ordenante.NOMBRE
|
||||
PmtInf.Dbtr.PstlAdr = New SEPA_3414.PostalAddress6
|
||||
PmtInf.Dbtr.PstlAdr.StrtNm = Ordenante.DOMICILIO
|
||||
If Ordenante.NUMERO <> "" Then PmtInf.Dbtr.PstlAdr.BldgNb = Ordenante.NUMERO
|
||||
PmtInf.Dbtr.PstlAdr.PstCd = Ordenante.CPO
|
||||
PmtInf.Dbtr.PstlAdr.TwnNm = Ordenante.CIUDAD
|
||||
PmtInf.Dbtr.PstlAdr.Ctry = Ordenante.PAIS
|
||||
PmtInf.DbtrAcct = New SEPA_3414.CashAccount16
|
||||
PmtInf.DbtrAcct.Id = New SEPA_3414.AccountIdentification4Choice With {.Item = Ordenante.IBAN}
|
||||
PmtInf.DbtrAgt = New SEPA_3414.BranchAndFinancialInstitutionIdentification4
|
||||
PmtInf.DbtrAgt.FinInstnId = New SEPA_3414.FinancialInstitutionIdentification7
|
||||
PmtInf.DbtrAgt.FinInstnId.BIC = Ordenante.BIC
|
||||
'If Ordenante.ENELMISMODIA Then
|
||||
' PmtInf.PmtTpInf = New SEPA_3414.PaymentTypeInformation19
|
||||
' PmtInf.PmtTpInf.SvcLvl = New SEPA_3414.ServiceLevel8Choice With {.Item = "SEPA"}
|
||||
' PmtInf.PmtTpInf.LclInstrm = New SEPA_3414.LocalInstrument2Choice With {.Item = "SDCL"}
|
||||
'End If
|
||||
' PmtInf.Dbtr.Id.Item = Ordenante.CIF & "SEV"
|
||||
Dim cts As New List(Of SEPA_3414.CreditTransferTransactionInformation10)
|
||||
Dim ct As SEPA_3414.CreditTransferTransactionInformation10
|
||||
For Each Beneficiario In ListaBeneficiarios
|
||||
If Beneficiario.ImporteTransferencia > 0 Then
|
||||
ct = New SEPA_3414.CreditTransferTransactionInformation10
|
||||
ct.PmtId = New SEPA_3414.PaymentIdentification1
|
||||
ct.PmtId.InstrId = Beneficiario.IdentificacionPago.Trim.PadRight(35, " ").Substring(0, 35)
|
||||
ct.PmtId.EndToEndId = Beneficiario.IdentificacionPago.Trim.PadRight(35, " ").Substring(0, 35)
|
||||
If Beneficiario.IdentificacionPagoFichero <> "" Then
|
||||
ct.RmtInf = New SEPA_3414.RemittanceInformation5
|
||||
ct.RmtInf.Ustrd = {Beneficiario.IdentificacionPagoFichero}
|
||||
End If
|
||||
If Beneficiario.Proposito <> "" Then
|
||||
ct.PmtTpInf = New SEPA_3414.PaymentTypeInformation19
|
||||
If Ordenante.ENELMISMODIA Then
|
||||
ct.PmtTpInf.SvcLvl = New SEPA_3414.ServiceLevel8Choice With {.Item = "SEPA"}
|
||||
ct.PmtTpInf.LclInstrm = New SEPA_3414.LocalInstrument2Choice With {.Item = "SDCL"}
|
||||
End If
|
||||
ct.PmtTpInf.CtgyPurp = New SEPA_3414.CategoryPurpose1Choice
|
||||
ct.PmtTpInf.CtgyPurp.Item = Beneficiario.Proposito
|
||||
End If
|
||||
Dim sImporteTransferencia = Beneficiario.ImporteTransferencia.ToString("F2").Replace(",", ".")
|
||||
ct.Amt = New SEPA_3414.AmountType3Choice
|
||||
ct.Amt.Item = New SEPA_3414.ActiveOrHistoricCurrencyAndAmount With {.Ccy = "EUR", .Value = sImporteTransferencia}
|
||||
ct.ChrgBr = SEPA_3414.ChargeBearerType1Code.DEBT
|
||||
ct.CdtrAgt = New SEPA_3414.BranchAndFinancialInstitutionIdentification4
|
||||
ct.CdtrAgt.FinInstnId = New SEPA_3414.FinancialInstitutionIdentification7
|
||||
' ct.CdtrAgt.FinInstnId.BIC = Beneficiario.BIC
|
||||
ct.Cdtr = New SEPA_3414.PartyIdentification32
|
||||
ct.Cdtr.Nm = tsUtilidades.Extensiones.StringExtensions.ConvierteAAlfanumerico(Beneficiario.NOMBRE, "ÁÉÍÓÚáéíóúÑñÜü", "AEIOUaeiouNnUu")
|
||||
ct.CdtrAcct = New SEPA_3414.CashAccount16
|
||||
ct.CdtrAcct.Id = New SEPA_3414.AccountIdentification4Choice With {.Item = Beneficiario.IBAN}
|
||||
cts.Add(ct)
|
||||
End If
|
||||
Next
|
||||
PmtInf.CdtTrfTxInf = cts.ToArray
|
||||
ListaPmtInf.Add(PmtInf)
|
||||
' Document.CstmrCdtTrfInitn = New SEPA_3414.CustomerCreditTransferInitiationV03
|
||||
Document.CstmrCdtTrfInitn.PmtInf = ListaPmtInf.ToArray
|
||||
tsUtilidades.Utilidades.Serializar(Document, FicheroXML)
|
||||
Catch ex As Exception
|
||||
Throw New Exception(ex.Message, ex)
|
||||
End Try
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
Reference in New Issue
Block a user