PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → génération de virements SEPA
génération de virements SEPA
Débuté par MARC CHERNET, 31 jan. 2019 13:51 - 6 réponses
Membre enregistré
85 messages
Posté le 31 janvier 2019 - 13:51
Bonjour,

je dois programmer la génération de virements SEPA

J'ai commencé par un virement, avec le code suivant, qui fonctionne

// Création de la variable XML xml_virements
xml_virements est un xmlDocument,description="pain_001_001_08"

gDateChaine=Gauche(DateSys(),4)+"-"+Milieu(DateSys(),5,2)+"-"+Droite(DateSys(),2)+...
"T"+Gauche(HeureSys(),2)+":"+Milieu(HeureSys(),3,2)+":00"

//génération GrpHdr
xml_virements.Document.CstmrCdtTrfInitn.GrpHdr.MsgId="Virement remboursement du capital"
xml_virements.Document.CstmrCdtTrfInitn.GrpHdr.CreDtTm=gDateChaine
xml_virements.Document.CstmrCdtTrfInitn.GrpHdr.NbOfTxs=2
xml_virements.Document.CstmrCdtTrfInitn.GrpHdr.CtrlSum=187654.32
xml_virements.Document.CstmrCdtTrfInitn.GrpHdr.InitgPty.Nm="RESIDENCE1"


//génération PmtInf
gDateChaine=Gauche(DateSys(),4)+"-"+Milieu(DateSys(),5,2)+"-"+Droite(DateSys(),2)
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.PmtInfId="abcdef 12345"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.PmtMtd="TRF"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.BtchBookg="false"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.NbOfTxs=2
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CtrlSum=187654.32
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.PmtTpInf.SvcLvl.Cd="SEPA"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.ReqdExctnDt.Dt=gDateChaine
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.Dbtr.Nm="RESIDENCE "
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.DbtrAcct.Id.IBAN="FR7...... IBAN"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.DbtrAgt.FinInstnId.BICFI="BKAUATWW"

//génération credit transfer CdtTrfTxInf

Xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.PmtId.InstrId="ABC/060928/cct001/1"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.PmtId.EndToEndId="ABC/4562/2006-09-08"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.Amt.InstdAmt:Ccy="EUR"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.Amt.InstdAmt="70000"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.CdtrAgt.FinInstnId.Nm="DEF electronics"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.CdtrAcct.Id.IBAN="GB29NWBK60161331926819"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.RgltryRptg.Dtls.Cd=150
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.RmtInf.Ustrd="Commercial invoice 4562 dated 2006-09-08"

//conversion
sInfoxml=XMLConstruitChaîne(xml_virements,XMLDocumentDéfaut)

//trace(sInfoxml)

SI XMLDocumentValide(xml_virements,"C:\A\0_Clients\0_Comptabilités\Bois_aurouze\Application\SRBA TR 1\Exe\pain.001.001.08") = Faux ALORS
Erreur(ErreurInfo())
SINON
Info("Le document XML est valide")
FIN

//XMLSauve(xml_virements, fRepExe() + ["\"] + "xml_virements.xml")
//LanceAppliAssociée(fRepExe() + ["\"] + "xml_virements.xml")
fSauveTexte("C:\A\0_Clients\0_Comptabilités\Bois_aurouze\Application\SRBA TR 1\Exe\xml_virements.xml",sInfoxml)
LanceAppliAssociée("C:\A\0_Clients\0_Comptabilités\Bois_aurouze\Application\SRBA TR 1\Exe\xml_virements.xml")


cela fontionne bien.

maintenant je voudrais boucler pour passer de un virement à plusieurs.

J'envisage :

HExécuteRequête(REQ_soldes_créditeurs)
POUR TOUT REQ_soldes_créditeurs

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.PmtId.InstrId="Paiement de votre solde créditeur"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.PmtId.EndToEndId="Paiement de votre solde créditeur"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.Amt.InstdAmt:Ccy="EUR"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.Amt.InstdAmt=REQ_soldes_créditeurs.Solde_créditeur
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.CdtrAgt.FinInstnId.Nm=REQ_soldes_créditeurs.Actionnaire_code
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.CdtrAcct.Id.IBAN=REQ_soldes_créditeurs.Actionnaire_IBAN
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.RgltryRptg.Dtls.Cd="150"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.RmtInf.Ustrd="Paiement de votre solde créditeur"

FIN

Mais je ne trouve pas la fonction pour ajouter les lignes qui correspondent à un virement et qui sont dans le POUR TOUT, les unes à la suite des autres.

Merci au super pro du xml !

--
Marc CHERNET
Expert comptable -
Expert en systèmes d'information
Développeur pour des missions d'expertise
Message modifié, 31 janvier 2019 - 13:52
Posté le 31 janvier 2019 - 15:32
Le 31/01/2019 à 12:51, MARC CHERNET a écrit :
Bonjour,

je dois programmer la génération de virements SEPA

J'ai commencé par un virement, avec le code suivant, qui fonctionne

// Création de la variable XML xml_virements
xml_virements est un xmlDocument,description="pain_001_001_08"

gDateChaine=Gauche(DateSys(),4)+"-"+Milieu(DateSys(),5,2)+"-"+Droite(DateSys(),2)+...

"T"+Gauche(HeureSys(),2)+":"+Milieu(HeureSys(),3,2)+":00"

//génération GrpHdr
xml_virements.Document.CstmrCdtTrfInitn.GrpHdr.MsgId="Virement
remboursement du capital"
xml_virements.Document.CstmrCdtTrfInitn.GrpHdr.CreDtTm=gDateChaine
xml_virements.Document.CstmrCdtTrfInitn.GrpHdr.NbOfTxs=2
xml_virements.Document.CstmrCdtTrfInitn.GrpHdr.CtrlSum=187654.32
xml_virements.Document.CstmrCdtTrfInitn.GrpHdr.InitgPty.Nm="RESIDENCE1"


//génération PmtInf
gDateChaine=Gauche(DateSys(),4)+"-"+Milieu(DateSys(),5,2)+"-"+Droite(DateSys(),2)

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.PmtInfId="abcdef 12345"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.PmtMtd="TRF"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.BtchBookg="false"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.NbOfTxs=2
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CtrlSum=187654.32
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.PmtTpInf.SvcLvl.Cd="SEPA"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.ReqdExctnDt.Dt=gDateChaine
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.Dbtr.Nm="RESIDENCE "
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.DbtrAcct.Id.IBAN="FR7......
IBAN"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.DbtrAgt.FinInstnId.BICFI="BKAUATWW"


//génération credit transfer CdtTrfTxInf

Xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.PmtId.InstrId="ABC/060928/cct001/1"

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.PmtId.EndToEndId="ABC/4562/2006-09-08"

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.Amt.InstdAmt:Ccy="EUR"

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.Amt.InstdAmt="70000"

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.CdtrAgt.FinInstnId.Nm="DEF
electronics"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.CdtrAcct.Id.IBAN="GB29NWBK60161331926819"

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.RgltryRptg.Dtls.Cd=150

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.RmtInf.Ustrd="Commercial
invoice 4562 dated 2006-09-08"

//conversion
sInfoxml=XMLConstruitChaîne(xml_virements,XMLDocumentDéfaut)

//trace(sInfoxml)

SI
XMLDocumentValide(xml_virements,"C:\A\0_Clients\0_Comptabilités\Bois_aurouze\Application\SRBA
TR 1\Exe\pain.001.001.08") = Faux ALORS
Erreur(ErreurInfo())
SINON
Info("Le document XML est valide") FIN

//XMLSauve(xml_virements, fRepExe() + ["\"] + "xml_virements.xml")
//LanceAppliAssociée(fRepExe() + ["\"] + "xml_virements.xml")
fSauveTexte("C:\A\0_Clients\0_Comptabilités\Bois_aurouze\Application\SRBA TR
1\Exe\xml_virements.xml",sInfoxml)
LanceAppliAssociée("C:\A\0_Clients\0_Comptabilités\Bois_aurouze\Application\SRBA
TR 1\Exe\xml_virements.xml")


cela fontionne bien.

maintenant je voudrais boucler pour passer de un virement à plusieurs.

J'envisage :

HExécuteRequête(REQ_soldes_créditeurs)
POUR TOUT REQ_soldes_créditeurs
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.PmtId.InstrId="Paiement
de votre solde créditeur"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.PmtId.EndToEndId="Paiement
de votre solde créditeur"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.Amt.InstdAmt:Ccy="EUR"

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.Amt.InstdAmt=REQ_soldes_créditeurs.Solde_créditeur

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.CdtrAgt.FinInstnId.Nm=REQ_soldes_créditeurs.Actionnaire_code

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.CdtrAcct.Id.IBAN=REQ_soldes_créditeurs.Actionnaire_IBAN

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.RgltryRptg.Dtls.Cd="150"

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.RmtInf.Ustrd="Paiement
de votre solde créditeur"

FIN

Mais je ne trouve pas la fonction pour ajouter les lignes qui
correspondent à un virement et qui sont dans le POUR TOUT, les unes à la
suite des autres.

Merci au super pro du xml !

--
Marc CHERNET Expert comptable - Expert en systèmes d'information
Développeur pour des missions d'expertise


Il manque
PmtInf.CdtTrfTxInf[nNbre].Cdtr.PstlAdr.AdrLine[1]
nbre ... et


POUR nNbreSalairié = 1 À TABLEPM..Occurrence
SI PMBSELECTION[nNbreSalairié] = Vrai ALORS
nNbre++

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].PmtId.EndToEndId
= PMSACODE[nNbreSalairié] + "_" + DateVersChaîne(G_DATE_SOUHAITE,
"AAAA-MM-JJ")

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Amt.InstdAmt:Ccy=
"EUR"

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Amt.InstdAmt
= SansEspace(NumériqueVersChaîne(PMMONTANTA_VERSER[nNbreSalairié],"10.2f"))

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].CdtrAgt.FinInstnId.BIC
= PMPEADRESSESWIFT[nNbreSalairié]
cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Cdtr.Nm =
ChaîneVersUTF8( ChaîneFormate(PMPENOMPRENOM[nNbreSalairié],ccSansAccent) )

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Cdtr.PstlAdr.Ctry=
ChaîneVersUTF8(ChaîneFormate(PM_PAYS[nNbreSalairié],ccSansAccent))

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Cdtr.PstlAdr.AdrLine[1]
=ChaîneVersUTF8( ChaîneFormate(PM_ADRESSE[nNbreSalairié],ccSansAccent))

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Cdtr.PstlAdr.AdrLine[2]
=ChaîneVersUTF8( ChaîneFormate(PM_LIEU[nNbreSalairié],ccSansAccent))

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].CdtrAcct.Id.IBAN
= PMPECOMPTE[nNbreSalairié]

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].RmtInf.Ustrd[1]
= ChaîneVersUTF8(ChaîneFormate("SALAIRE "
+PMSAREFERENCE[nNbreSalairié],ccSansAccent) )
FIN
FIN


si tu as besoin d'ature inforamtion je susi disponible

Bat
Posté le 31 janvier 2019 - 15:36
POUR nNbreSalairié = 1 À TABLEPM..Occurrence
SI PMBSELECTION[nNbreSalairié] = Vrai ALORS
nNbre++
cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].PmtId.EndToEndId = PMSACODE[nNbreSalairié] + "_" + DateVersChaîne(G_DATE_SOUHAITE, "AAAA-MM-JJ")
cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Amt.InstdAmt:Ccy= "EUR"
cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Amt.InstdAmt = SansEspace(NumériqueVersChaîne(PMMONTANTA_VERSER[nNbreSalairié],"10.2f"))
cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].CdtrAgt.FinInstnId.BIC = PMPEADRESSESWIFT[nNbreSalairié]
cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Cdtr.Nm = ChaîneVersUTF8( ChaîneFormate(PMPENOMPRENOM[nNbreSalairié],ccSansAccent) )
cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Cdtr.PstlAdr.Ctry= ChaîneVersUTF8(ChaîneFormate(PM_PAYS[nNbreSalairié],ccSansAccent))
cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Cdtr.PstlAdr.AdrLine[1] =ChaîneVersUTF8( ChaîneFormate(PM_ADRESSE[nNbreSalairié],ccSansAccent))
cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Cdtr.PstlAdr.AdrLine[2] =ChaîneVersUTF8( ChaîneFormate(PM_LIEU[nNbreSalairié],ccSansAccent))
cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].CdtrAcct.Id.IBAN = PMPECOMPTE[nNbreSalairié]
cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].RmtInf.Ustrd[1] = ChaîneVersUTF8(ChaîneFormate("SALAIRE " +PMSAREFERENCE[nNbreSalairié],ccSansAccent) )
FIN
FIN


si tu as besoin d'ature inforamtion je susi disponible
Posté le 31 janvier 2019 - 15:37
Le 31/01/2019 à 12:51, MARC CHERNET a écrit :
Bonjour,

je dois programmer la génération de virements SEPA

J'ai commencé par un virement, avec le code suivant, qui fonctionne

// Création de la variable XML xml_virements
xml_virements est un xmlDocument,description="pain_001_001_08"

gDateChaine=Gauche(DateSys(),4)+"-"+Milieu(DateSys(),5,2)+"-"+Droite(DateSys(),2)+...

"T"+Gauche(HeureSys(),2)+":"+Milieu(HeureSys(),3,2)+":00"

//génération GrpHdr
xml_virements.Document.CstmrCdtTrfInitn.GrpHdr.MsgId="Virement
remboursement du capital"
xml_virements.Document.CstmrCdtTrfInitn.GrpHdr.CreDtTm=gDateChaine
xml_virements.Document.CstmrCdtTrfInitn.GrpHdr.NbOfTxs=2
xml_virements.Document.CstmrCdtTrfInitn.GrpHdr.CtrlSum=187654.32
xml_virements.Document.CstmrCdtTrfInitn.GrpHdr.InitgPty.Nm="RESIDENCE1"


//génération PmtInf
gDateChaine=Gauche(DateSys(),4)+"-"+Milieu(DateSys(),5,2)+"-"+Droite(DateSys(),2)

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.PmtInfId="abcdef 12345"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.PmtMtd="TRF"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.BtchBookg="false"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.NbOfTxs=2
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CtrlSum=187654.32
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.PmtTpInf.SvcLvl.Cd="SEPA"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.ReqdExctnDt.Dt=gDateChaine
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.Dbtr.Nm="RESIDENCE "
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.DbtrAcct.Id.IBAN="FR7......
IBAN"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.DbtrAgt.FinInstnId.BICFI="BKAUATWW"


//génération credit transfer CdtTrfTxInf

Xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.PmtId.InstrId="ABC/060928/cct001/1"

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.PmtId.EndToEndId="ABC/4562/2006-09-08"

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.Amt.InstdAmt:Ccy="EUR"

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.Amt.InstdAmt="70000"

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.CdtrAgt.FinInstnId.Nm="DEF
electronics"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.CdtrAcct.Id.IBAN="GB29NWBK60161331926819"

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.RgltryRptg.Dtls.Cd=150

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.RmtInf.Ustrd="Commercial
invoice 4562 dated 2006-09-08"

//conversion
sInfoxml=XMLConstruitChaîne(xml_virements,XMLDocumentDéfaut)

//trace(sInfoxml)

SI
XMLDocumentValide(xml_virements,"C:\A\0_Clients\0_Comptabilités\Bois_aurouze\Application\SRBA
TR 1\Exe\pain.001.001.08") = Faux ALORS
Erreur(ErreurInfo())
SINON
Info("Le document XML est valide") FIN

//XMLSauve(xml_virements, fRepExe() + ["\"] + "xml_virements.xml")
//LanceAppliAssociée(fRepExe() + ["\"] + "xml_virements.xml")
fSauveTexte("C:\A\0_Clients\0_Comptabilités\Bois_aurouze\Application\SRBA TR
1\Exe\xml_virements.xml",sInfoxml)
LanceAppliAssociée("C:\A\0_Clients\0_Comptabilités\Bois_aurouze\Application\SRBA
TR 1\Exe\xml_virements.xml")


cela fontionne bien.

maintenant je voudrais boucler pour passer de un virement à plusieurs.

J'envisage :

HExécuteRequête(REQ_soldes_créditeurs)
POUR TOUT REQ_soldes_créditeurs
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.PmtId.InstrId="Paiement
de votre solde créditeur"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.PmtId.EndToEndId="Paiement
de votre solde créditeur"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.Amt.InstdAmt:Ccy="EUR"

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.Amt.InstdAmt=REQ_soldes_créditeurs.Solde_créditeur

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.CdtrAgt.FinInstnId.Nm=REQ_soldes_créditeurs.Actionnaire_code

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.CdtrAcct.Id.IBAN=REQ_soldes_créditeurs.Actionnaire_IBAN

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.RgltryRptg.Dtls.Cd="150"

xml_virements.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.RmtInf.Ustrd="Paiement
de votre solde créditeur"

FIN

Mais je ne trouve pas la fonction pour ajouter les lignes qui
correspondent à un virement et qui sont dans le POUR TOUT, les unes à la
suite des autres.

Merci au super pro du xml !

--
Marc CHERNET Expert comptable - Expert en systèmes d'information
Développeur pour des missions d'expertise

POUR nNbreSalairié = 1 À TABLEPM..Occurrence
SI PMBSELECTION[nNbreSalairié] = Vrai ALORS
nNbre++

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].PmtId.EndToEndId
= PMSACODE[nNbreSalairié] + "_" + DateVersChaîne(G_DATE_SOUHAITE,
"AAAA-MM-JJ")

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Amt.InstdAmt:Ccy=
"EUR"

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Amt.InstdAmt
= SansEspace(NumériqueVersChaîne(PMMONTANTA_VERSER[nNbreSalairié],"10.2f"))

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].CdtrAgt.FinInstnId.BIC
= PMPEADRESSESWIFT[nNbreSalairié]
cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Cdtr.Nm =
ChaîneVersUTF8( ChaîneFormate(PMPENOMPRENOM[nNbreSalairié],ccSansAccent) )

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Cdtr.PstlAdr.Ctry=
ChaîneVersUTF8(ChaîneFormate(PM_PAYS[nNbreSalairié],ccSansAccent))

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Cdtr.PstlAdr.AdrLine[1]
=ChaîneVersUTF8( ChaîneFormate(PM_ADRESSE[nNbreSalairié],ccSansAccent))

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].Cdtr.PstlAdr.AdrLine[2]
=ChaîneVersUTF8( ChaîneFormate(PM_LIEU[nNbreSalairié],ccSansAccent))

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].CdtrAcct.Id.IBAN
= PMPECOMPTE[nNbreSalairié]

cMondoc.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf[nNbre].RmtInf.Ustrd[1]
= ChaîneVersUTF8(ChaîneFormate("SALAIRE "
+PMSAREFERENCE[nNbreSalairié],ccSansAccent) )
FIN
FIN


si tu as besoin d'ature inforamtion je susi disponible
Posté le 19 février 2019 - 17:04
Bonjour et merci, je n'ai pas reçu de notification sur ce post que je découvre seulement par hasard

J'ai imaginé un code complètement différent !

avec fécritligne.

cela fonctionne bien
Membre enregistré
834 messages
Popularité : +13 (13 votes)
Posté le 03 décembre 2019 - 12:41
Marcel bonjour, je vois que vous maitrisez xml SEPA !!
J'ai intégré la structure du fichier "Pain-001-001-08" dans la liste des éléments du projet.

Le code me met une erreur ici :
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.PmtTpInf.SvcLvl.Cd="SEPA"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.ReqdExctnDt.Dt=gDateChaine

Effectivement, PmtInf.PmtTpInf.SvcLvl.Cd et PmtInf.ReqdExctnDt.Dt ne sont pas dans la structure.
Ais je télécharger le bon fichier car je n'en trouve pas d'autre....

https://gist.github.com/demoth/89d79841de225bcc6eb6c80cfa7e146f


Merci,

--
Synchronize Systems International LTD
Développement d'outils de gestion

Environnements AS400 – Windows
Langages GAP III – CL – Visual Basic - Visual Adélia - Adélia - Windev

Bangkok / Pattaya
Posté le 03 décembre 2019 - 15:12
Le 03/12/2019 à 11:41, Jean-Michel a écrit :
Marcel bonjour, je vois que vous maitrisez xml SEPA !!
J'ai intégré la structure du fichier "Pain-001-001-08" dans la liste des
éléments du projet.

Le code me met une erreur ici :
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.PmtTpInf.SvcLvl.Cd="SEPA"
xml_virements.Document.CstmrCdtTrfInitn.PmtInf.ReqdExctnDt.Dt=gDateChaine

Effectivement, PmtInf.PmtTpInf.SvcLvl.Cd et PmtInf.ReqdExctnDt.Dt ne
sont pas dans la structure.
Ais je télécharger le bon fichier car je n'en trouve pas d'autre....

https://gist.github.com/demoth/89d79841de225bcc6eb6c80cfa7e146f


Merci,

--
Synchronize Systems International LTD
Développement d'outils de gestion

Environnements    AS400 – Windows
Langages                     GAP III – CL – Visual Basic - Visual
Adélia  - Adélia - Windev

Bangkok / Pattaya

je ne crois pas que tu dois partir avec un XML mais avec le XSD cela
serait beaucoup plus simple
Tu es partis sur un fichier XML qui ne contient pas tout les
caractéristiques du XSD
envoie moi un mail et je te fais parvenir le mien .... qui parche depuis...
marcelf@maveja.lu
BAT