PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Chorus
Chorus
Débuté par Alain LACLEF, 24 nov. 2018 10:58 - 29 réponses
Membre enregistré
82 messages
Posté le 24 novembre 2018 - 10:58
Quelqu'un peut m'aider sous Windev en mode EDI?

1) création XML
2) Requête a effectuer pour envoyer les factures

Merci de votre aide .
Membre enregistré
299 messages
Popularité : +16 (16 votes)
Posté le 24 novembre 2018 - 15:13
Vous voulez faire quoi ?

Créer un XML. Quel est le modèle attendu ? A partir de quelles données ?
Envoyer des factures. Comment ? Sous quel format ?
Membre enregistré
82 messages
Posté le 24 novembre 2018 - 16:12
Pour Chorus (https://chorus-pro.gouv.fr) : C'est le portail d'envoi de factures dématérialisées de la fonction publique. J'ai un modèle de xml factures.
Membre enregistré
329 messages
Popularité : +28 (32 votes)
Posté le 24 novembre 2018 - 21:30
Noel approchant, y’en a qui y crois encore, on dirait bien :D

Plus sérieusement, si tu ne commence pas à coder et à nous montrer les bouts de codes qui te posent problème, on pourras pas faire grand chose de plus.

Pour un peu on pourrais croire que tu es un étudiant en prog qui cherche à faire par un autre l’exercice imposé par son prof…

--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se débogue facilement...

- Pastiche d’une citation de Nicolas Boileau -
Membre enregistré
82 messages
Posté le 25 novembre 2018 - 08:12
Si tu n'as pas interfacé Chorus , tu ne pas pas m'aider, donc pas la peine de répondre n'importe quoi.}:(

Bon Noël quand même.:D
Membre enregistré
329 messages
Popularité : +28 (32 votes)
Posté le 25 novembre 2018 - 21:28
Je veux bien t’aider, encore faudrait-il voir le bout de code qui te pose problème !

--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se débogue facilement...

- Pastiche d’une citation de Nicolas Boileau -
Membre enregistré
82 messages
Posté le 26 novembre 2018 - 06:14
Problème 1 : créer un .xml complexe. Le solution semble simple avec les .xsd fournis. Mais on ne peut pas les importer dans le projet : ça plante Windev !!!! les .xsd sont là : http://docs.oasis-open.org/ubl/os-UBL-2.1/xsd/
Il y a besoin de UBL_Invoice dans maindoc et des commons .

Problème 2 : requête d'envoi : j'ai trouvé

exemple de xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="" ?>
<Invoice xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2"
xmlns:ccts="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-2"
xmlns:stat="urn:oasis:names:specification:ubl:schema:xsd:DocumentStatusCode-1.0"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:udt="urn:un:unece:uncefact:data:draft:UnqualifiedDataTypesSchemaModule:2"
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
xmlns:aife="urn:AIFE:Facture:Extension">
<cec:UBLExtensions>
<cec:UBLExtension>
<cec:ExtensionContent>
<CategoryCode>A1</CategoryCode>
</cec:ExtensionContent>
</cec:UBLExtension>
</cec:UBLExtensions>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:ID>TSTF1004_2016001</cbc:ID>
<cbc:IssueDate>2016-08-22</cbc:IssueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>USD</cbc:DocumentCurrencyCode>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeName="1">00000000009545</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>FOURNISSEURTST070</cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:RegistrationName>FOURNISSEURTST070</cbc:RegistrationName>
<cac:RegistrationAddress>
<cbc:StreetName>rue Tabaga</cbc:StreetName>
<cbc:CityName>Arnac La Poste</cbc:CityName>
<cbc:PostalZone>87016</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FR</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:Party>
<cac:AccountingContact>
<cbc:Telefax>+33234567890</cbc:Telefax>
<cbc:ElectronicMail>00000000009545@cpp2017.fr</cbc:ElectronicMail>
</cac:AccountingContact>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeName="1">00000000009561</cbc:ID>
</cac:PartyIdentification>
<cac:PostalAddress>
<cbc:StreetName>1 rue Test</cbc:StreetName>
<cbc:CityName>Test</cbc:CityName>
<cbc:PostalZone>75000</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FR</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:Delivery>
<cbc:ID>Z3247</cbc:ID>
<cac:DeliveryLocation>
<cbc:ID>Z3247</cbc:ID>
<cbc:Description>Site numéro 8</cbc:Description>
<cac:Address>
<cbc:StreetName>2 avenue Charles de Gaulle</cbc:StreetName>
<cbc:CityName>Paris</cbc:CityName>
<cbc:PostalZone>75008</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FR</cbc:IdentificationCode>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
</cac:Delivery>
<cac:PaymentMeans>
<cbc:PaymentMeansCode listID="UN/ECE 4461 Subset"
listAgencyID="NES" listAgencyName="Northern European Subset"
listName="Payment Means">31</cbc:PaymentMeansCode>
<cbc:PaymentDueDate>2016-09-21</cbc:PaymentDueDate>
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:Note>En cas de retard de paiement, seront exigibles, conformément à l'article L 441-6 du code de commerce, une indemnité calculée sur la base de trois fois le taux de l'intérêt légal en vigueur ainsi qu'une indemnité forfaitaire pour frais de recouvrement de 40 euros</cbc:Note>
</cac:PaymentTerms>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="USD">16.68</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="USD">83.4000</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="USD">16.68</cbc:TaxAmount>
<cbc:Percent>20</cbc:Percent>
<cac:TaxCategory>
<cac:TaxScheme>
<cbc:TaxTypeCode>TVA DEBIT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:TaxExclusiveAmount currencyID="USD">83.4000</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="USD">100.0800</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="USD">100.0800</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="EA">1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="USD">83.4000</cbc:LineExtensionAmount>
<cac:Delivery>
<cbc:ID>Z3247</cbc:ID>
<cbc:ActualDeliveryDate>2016-07-22</cbc:ActualDeliveryDate>
</cac:Delivery>
<cac:Item>
<cbc:Name>Prestation intellectuelle</cbc:Name>
<cac:StandardItemIdentification>
<cbc:ID>3243</cbc:ID>
</cac:StandardItemIdentification>
<cac:ClassifiedTaxCategory>
<cbc:Percent>20</cbc:Percent>
<cac:TaxScheme>
<cbc:TaxTypeCode>TVA DEBIT</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="USD">83.4000</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="EA">1</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>
</Invoice>
Posté le 26 novembre 2018 - 11:21
ils n'annoncent pas des trucs sur la 24 pour Chorus ?

--
Roumegou Eric

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Membre enregistré
940 messages
Popularité : +66 (68 votes)
Posté le 26 novembre 2018 - 12:09
Roumegou Eric a écrit :
ils n'annoncent pas des trucs sur la 24 pour Chorus ?

--
Roumegou Eric

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com

bonjour Eric,

Oui
La version 24 va permettre de gérer les PDF A-3 , c'est un PDF dans lequel on peu ajouter un fichier XML.
Les Factur-X sont justement des fichier PDF A-3 , avec le PDF classique de la facture et en plus un fichier XML , type CII SCRDM D16B qui peu être lue et intégré dans Chorus ( ou dans d'autre système )
La version 24 permet donc d'envoyer vos factures sous ce nouveau format de fichier, mais il vous faudra quand même créer l'export XML au format CII SCRDM D16B de vos factures dans votre logiciel....

Actuellement, ont peu déjà déposer des fichiers XML type CII ou UBL avec les versions actuelle de Windev....

il y a aussi des évolutions sur les certificats...
intégrer un certificat dans le WDL pour permettre de signer les factures, çà peu être intéressant...
Membre enregistré
82 messages
Posté le 26 novembre 2018 - 13:00
Pour Chorus les transmissions API n'ont pas besoin de pdf. Mon problème et de créer le xml.
Et je ne sait pas si la 24 corrige les bug de la 23!
Membre enregistré
940 messages
Popularité : +66 (68 votes)
Posté le 26 novembre 2018 - 14:14
rebonjour,

alors vous pouvez voir votre XML comme un simple fichier Texte.
Vous découpez les différents éléments de votre XML en petit bloc de chaîne.
Vous pouvez faire un prototype de chaque bloc puis utiliser la fonctione ChaineConstruit()
Puis vous les concaténez.
Vous déclarez une variable buffer et faite un ChaineVersUTF8() dans ce même buffer et un fSauveBuffer() pour créer le fichier XML.
Pour les blocs des lignes, faudra faire une boucle sur les différentes lignes de votre facture.

Une exemple de découpage des blocs :
_entete_XML est une chaîne = [


xmlns:ccts="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-2"
xmlns:stat="urn:oasis:names:specification:ubl:schema:xsd:DocumentStatusCode-1.0"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:udt="urn:un:unece:uncefact:data:draft:UnqualifiedDataTypesSchemaModule:2"
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
xmlns:aife="urn:AIFE:Facture:Extension">
]

// %1 Type de dépôt
_type_Facture est une chaîne = [



%1



2.1
]

// %1 : Numéro de Facture
// %2 : Date Facture AAAA-MM-JJ
// %3 : Type Facture
// %4 : Devise
_entete_Facture est une chaîne = [
%1
%2
%3
%4
]

// %1 : IBAN
// %2 : Name
// %3 : Registration Name
// %4 : Rue
// %5 : Ville
// %6 : CP
// %7 : Code Pays
// %8 : Téléphone/Fax
// %8 : Email
_entete_fournisseur est une chaîne = [



%1


%2


%3

%4
%5
%6

%7





%8
%9


]

// %1 : IBAN
// %2 : Rue
// %3 : Ville
// %4 : CP
// %5 : Code Pays
_entete_client est une chaîne = [



%1


%2
%3
%4

%5




]

// %1 : Numéro de ligne
// %2 : Qte
// %3 : Devise
// %4 : Total HT Ligne
// %5 : numéro de BL
// %6 : date livraison
// %7 : libelle article
// %8 : code article
// %9 : Taux TVA
//%10 : Type TVA
//%11 : Prix Unitaire HT
_ligne_facture est une chaîne = [

%1
%2
%4

%5
%6


%7

%8


%9

%10




%11
1


]



Bien finaliser votre chaine par : '</Invoice>'

_buffer est un buffer
_chaine_xml est une chaîne
_chaine_xml=_entete_xml

_chaine_xml+=ChaîneConstruit(_type_Facture,"A1")
_chaine_xml+=ChaîneConstruit(_entete_Facture,_numero_facture,_date_facture,_type_facture,_devise)
...
POUR TOUT _ligne de _lignes_facture
_chaine_xml+=ChaîneConstruit(_ligne_facture,....)
FIN
_chaine_xml+="</Invoice>"

_buffer=ChaîneVersUTF8(_chaine_xml)
fSauveBuffer(monfichier.xml,_buffer)
Membre enregistré
940 messages
Popularité : +66 (68 votes)
Posté le 26 novembre 2018 - 14:15
ah je crois que le forum n'aime pas trop les déclarations de chaine...

_entete_XML est une chaîne = [


xmlns:ccts="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-2"
xmlns:stat="urn:oasis:names:specification:ubl:schema:xsd:DocumentStatusCode-1.0"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:udt="urn:un:unece:uncefact:data:draft:UnqualifiedDataTypesSchemaModule:2"
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
xmlns:aife="urn:AIFE:Facture:Extension">
]
Membre enregistré
940 messages
Popularité : +66 (68 votes)
Posté le 26 novembre 2018 - 14:15
// %1 Type de dépôt
_type_Facture est une chaîne = [
<cec:UBLExtensions>
<cec:UBLExtension>
<cec:ExtensionContent>
<CategoryCode>%1</CategoryCode>
</cec:ExtensionContent>
</cec:UBLExtension>
</cec:UBLExtensions>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
]
Membre enregistré
940 messages
Popularité : +66 (68 votes)
Posté le 26 novembre 2018 - 14:16
// %1 : Numéro de Facture
// %2 : Date Facture AAAA-MM-JJ
// %3 : Type Facture
// %4 : Devise
_entete_Facture est une chaîne = [
<cbc:ID>%1</cbc:ID>
<cbc:IssueDate>%2</cbc:IssueDate>
<cbc:InvoiceTypeCode>%3</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>%4</cbc:DocumentCurrencyCode>
]

// %1 : IBAN
// %2 : Name
// %3 : Registration Name
// %4 : Rue
// %5 : Ville
// %6 : CP
// %7 : Code Pays
// %8 : Téléphone/Fax
// %8 : Email
_entete_fournisseur est une chaîne = [
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeName="1">%1</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>%2</cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:RegistrationName>%3</cbc:RegistrationName>
<cac:RegistrationAddress>
<cbc:StreetName>%4</cbc:StreetName>
<cbc:CityName>%5</cbc:CityName>
<cbc:PostalZone>%6</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>%7</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:Party>
<cac:AccountingContact>
<cbc:Telefax>%8</cbc:Telefax>
<cbc:ElectronicMail>%9</cbc:ElectronicMail>
</cac:AccountingContact>
</cac:AccountingSupplierParty>
]

// %1 : IBAN
// %2 : Rue
// %3 : Ville
// %4 : CP
// %5 : Code Pays
_entete_client est une chaîne = [
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeName="1">%1</cbc:ID>
</cac:PartyIdentification>
<cac:PostalAddress>
<cbc:StreetName>%2</cbc:StreetName>
<cbc:CityName>%3</cbc:CityName>
<cbc:PostalZone>%4</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>%5</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
</cac:Party>
</cac:AccountingCustomerParty>
]

// %1 : Numéro de ligne
// %2 : Qte
// %3 : Devise
// %4 : Total HT Ligne
// %5 : numéro de BL
// %6 : date livraison
// %7 : libelle article
// %8 : code article
// %9 : Taux TVA
//%10 : Type TVA
//%11 : Prix Unitaire HT
_ligne_facture est une chaîne = [
<cac:InvoiceLine>
<cbc:ID>%1</cbc:ID>
<cbc:InvoicedQuantity unitCode="EA">%2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="%3">%4</cbc:LineExtensionAmount>
<cac:Delivery>
<cbc:ID>%5</cbc:ID>
<cbc:ActualDeliveryDate>%6</cbc:ActualDeliveryDate>
</cac:Delivery>
<cac:Item>
<cbc:Name>%7</cbc:Name>
<cac:StandardItemIdentification>
<cbc:ID>%8</cbc:ID>
</cac:StandardItemIdentification>
<cac:ClassifiedTaxCategory>
<cbc:Percent>%9</cbc:Percent>
<cac:TaxScheme>
<cbc:TaxTypeCode>%10</cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="%3">%11</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="EA">1</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>
]
Posté le 26 novembre 2018 - 17:06
il manque i<nvoive> non ?

merci pour le boulot, je vais essayer .

j'avais essayer avec les instructions xml windev, mais quand un regarde le fichier sauvé tout est sur une ligne.
Membre enregistré
2 messages
Posté le 27 novembre 2018 - 10:47
Bonjour,

Je travaille également aussi sur ce projet pour transmettre les factures vers CHORUS.
Je crée un fichier XML en suivant la norme UBL (Universal Business Language : http://docs.oasis-open.org/ubl/os-UBL-2.1/UBL-2.1.html)
Pour m'aider, j'ai pris l'un des exemples au format XML vu qu'il est impossible d'importer le XSD.
Pour pouvoir générer des balises avec le préfixe "cac:" par exemple, il est nécessaire de l'ajouter manuellement dans la chaîne de description.
Par exemple :
Procedure PRIVÉE GénérerNoeudXML_PartyDelivery() : xmlNoeud

objDelivery est un xmlNoeud,Description="UBL-Invoice-2.1.Invoice.cac:Delivery"
objDeliveryID est un xmlNoeud,Description="UBL-Invoice-2.1.Invoice.cac:Delivery.cbc:ID"
objDeliveryLocation est un xmlNoeud,Description="UBL-Invoice-2.1.Invoice.cac:Delivery.cac:DeliveryLocation"
objDeliveryLocationID est un xmlNoeud,Description="UBL-Invoice-2.1.Invoice.cac:Delivery.cac:DeliveryLocation.cbc:ID"
objDescription est un xmlNoeud,Description="UBL-Invoice-2.1.Invoice.cac:Delivery.cac:DeliveryLocation.cbc:Description"
objAddress est un xmlNoeud,Description="UBL-Invoice-2.1.Invoice.cac:Delivery.cac:DeliveryLocation.cac:Address"
objStreetName est un xmlNoeud,Description="UBL-Invoice-2.1.Invoice.cac:Delivery.cac:DeliveryLocation.cac:Address.cbc:StreetName"
objAdditionalStreetName est un xmlNoeud,Description="UBL-Invoice-2.1.Invoice.cac:Delivery.cac:DeliveryLocation.cac:Address.cac:AdditionalStreetName"
objCityName est un xmlNoeud,Description="UBL-Invoice-2.1.Invoice.cac:Delivery.cac:DeliveryLocation.cac:Address.cbc:CityName"
objPostalZone est un xmlNoeud,Description="UBL-Invoice-2.1.Invoice.cac:Delivery.cac:DeliveryLocation.cac:Address.cbc:PostalZone"
objCountry est un xmlNoeud,Description="UBL-Invoice-2.1.Invoice.cac:Delivery.cac:DeliveryLocation.cac:Address.cac:Country"
objCountryIdentificationCode est un xmlNoeud,Description="UBL-Invoice-2.1.Invoice.cac:Delivery.cac:DeliveryLocation.cac:Address.cac:Country.cbc:IdentificationCode"

// cac:Delivery
objDeliveryID..Texte=NumériqueVersChaîne(:m_nPartyIdentification,"014d")
Ajoute(objDelivery,objDeliveryID)
// cac:Delivery/cac:DeliveryLocation
objDeliveryLocationID..Texte=objDeliveryID..Texte
Ajoute(objDeliveryLocation,objDeliveryLocationID)
objDescription..Texte=:m_sPartyName
Ajoute(objDeliveryLocation,objDescription)
// cac:Delivery/cac:DeliveryLocation/cac:Address
SI :m_tLignesAdresse..Occurrence>=1 _ET_ :m_tLignesAdresse[1]>"" ALORS
objStreetName..Texte=:m_tLignesAdresse[1]
Ajoute(objAddress,objStreetName)
FIN
SI :m_tLignesAdresse..Occurrence>=2 _ET_ :m_tLignesAdresse[2]>"" ALORS
objAdditionalStreetName..Texte=:m_tLignesAdresse[2]
Ajoute(objAddress,objAdditionalStreetName)
FIN
// pour les lignes d'adresses supplémentaire, nous devons ajouter des AddressLine
// à voir ...
objCityName..Texte=:m_sCityName
Ajoute(objAddress,objCityName)
objPostalZone..Texte=:m_sPostalZone
Ajoute(objAddress,objPostalZone)
// cac:Delivery/cac:DeliveryLocation/cac:Address/cac:Country
objCountryIdentificationCode..Texte=:m_sCountryCode
Ajoute(objCountry,objCountryIdentificationCode)
Ajoute(objAddress,objCountry)

Ajoute(objDeliveryLocation,objAddress)

Ajoute(objDelivery,objDeliveryLocation)

RENVOYER objDelivery


J'utilise un ensemble de classes faites maison pour faciliter la génération de tout ça.
Je regroupe tout ça dans un objet de type xmlDocument qui est ensuite sauvegardé dans un fichier XML.

Après, la version texte de Christophe fonctionne certainement tout aussi bien comme l'objectif est uniquement de générer le XML.

La version 24 de WinDev arrivera trop tard vu que nous sommes censé le faire fonctionner dès le 1er janvier 2019.

En espérant que cela puisse aider ;)

Bon courage !
Membre enregistré
82 messages
Posté le 28 novembre 2018 - 12:52
Merci Etienne.
Oui, ça va aider !!!

Etienne et Christophe
Vu le boxif Chorus, j'ai commandé la 24
un compte rendu vous intéresse?

Merci pour votre aide
Membre enregistré
2 messages
Posté le 28 novembre 2018 - 15:08
Oui Alain, c'est toujours intéressant d'avoir différents retours sur de tels projets.

Merci :)
Membre enregistré
82 messages
Posté le 01 décembre 2018 - 12:01
Pour l'importation des .xsd, la 24 se plante comme la 23 et plante Windows en bouffant toute la mémoire. J'ai fait un requête au ST . Je touche du bois sans y croire....} :( :(
Avant d'acheter la 24 j'ai contacté PC Soft qui m'a garanti (après appel développeur) que la 24 fonctionnait dans ce cas . Ben non ;(}:(

Bref vu mes délais (test mardi chez mes clients) . mes boules touchent par terre !!!!!!! :(
Membre enregistré
82 messages
Posté le 01 décembre 2018 - 12:17
Merci les gars je commence à y voir plus plus clair :merci:

tous le monde : je vous tiens au courant de mes avancés avec le ST.

@Christophe
J'essaye ta méthode

@Etienne
Je ne suis pas familiarisé avec XML et les classes
Pourrais-tu me faire un mini-projet avec tout ça ???? Ce serait cool (Bourgogne ou Bordeaux !!!!!!!!!!!!!!!!!!!!)

Un gros merci pour votre aide :D
Message modifié, 01 décembre 2018 - 12:19
Posté le 13 décembre 2018 - 16:54
Bonjour aux développeurs de ce forum,

Merci pour votre aide qui m'a fait gagner du temps sur ce développement.
Pour contourner le problème d'importation du xsd, en ce qui me concerne, j'ai importé un xml, celui-ci en l'occurence : UBL-Invoice-2.1-Example.xml (dans la doc Oasis).

Cordialement,

Greg
Posté le 17 décembre 2018 - 18:11
Bonjour,

Vous vous compliquez la tâche, j'ai importé le xsd sans souci !
Posté le 17 décembre 2018 - 18:13
En 22 pas de souci avec le xsd !
Posté le 27 décembre 2018 - 12:45
Bonjour

l'integration du xsd fonction sous 23 .
si tu telecharges le zip de l'adresse URL : http://docs.oasis-open.org/ubl/os-UBL-2.2/
tu auras toute la doc et les xsd en prime (parfaitement integrable)

Bonne journée




http:\\www.AB-Agency.net
Posté le 02 janvier 2019 - 16:46
bonjour
Lorsque vous avez fait les tests, vous avez utiliser un certificat de test ou un certificat de production?
si oui, vous pouvez me dire ou vous avez pris le certificat.

cordialement
Membre enregistré
82 messages
Posté le 02 janvier 2019 - 17:50
Posté le 03 janvier 2019 - 09:01
bonjour
merci Alain.

Je sais que je commence le projet tard, mais est ce que quelqu’un aurait tout le code pour convertir la facture en xml et l'exporter vers chorus.

merci d'avance.
cordialement
Membre enregistré
82 messages
Posté le 03 janvier 2019 - 10:34
SI OuiNon(1,"Alimenter Chorus") =2 RETOUR
fSupprime(EXPRESS_Paramètres.RepChorus+"\Data\*.*",frVersCorbeille)
nCptLigne est un entier
wSIRET est une chaîne
_MonXML est une chaîne
_entete_XML est une chaîne = [


xmlns:stat="urn:oasis:names:specification:ubl:schema:xsd:DocumentStatusCode-1.0"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:udt="urn:un:unece:uncefact:data:draft:UnqualifiedDataTypesSchemaModule:2"
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
xmlns:aife="urn:AIFE:Facture:Extension">
]
_type_Facture est une chaîne = [



%1



2.1

]

_entete_Facture est une chaîne = [
%1
%2
%3
%4

%5


]


_entete_fournisseur est une chaîne = [



%1


%2


%3

%4
%5
%6

%7





%8
%9



]
_entete_client est une chaîne = [



%1


%2
%3
%4

%5




%6



]


_Livraison est une chaîne=[

%3

%3
%1

%2
%3
%4

FR





]

_Paiement est une chaîne=[

listAgencyID="NES" listAgencyName="Northern European Subset"
listName="Payment Means">31

%1


%2

]

_autres est une chaîne=[

%1

%2
%1
20


TVA DEBIT





%1
%3
%3


]

_ligne_facture est une chaîne = [

%1
%2
%4

%5
%6


%7

%8


%9

%10




%11
1



]
POUR iFacture = 1 _À_ TableOccurrence(TABLE_EXPRESS_Facture)
SI TABLE_EXPRESS_Facture[iFacture].COL_Selectionnée=Faux CONTINUE
HLitRecherche(EXPRESS_Facture,IDFacture,TABLE_EXPRESS_Facture[iFacture].COL_IDFacture)
_MonXML=_entete_XML
// %1 Type de dépôt
_MonXML+= RC+ ChaîneConstruit(_type_Facture,"A1")

// %1 : Numéro de Facture
// %2 : Date Facture AAAA-MM-JJ
// %3 : Type Facture
// %4 : Devise
// %5 : 'engagement juridique
_MonXML+= RC+ ChaîneConstruit(_entete_Facture,EXPRESS_Facture.NumFact,DateVersChaîne(EXPRESS_Facture.DateFacture,"AAAA-MM-JJ"),380,"EUR",EXPRESS_Facture.NumFact)
// %1 : SIRET
// %2 : Name
// %3 : Registration Name
// %4 : Rue
// %5 : Ville
// %6 : CP
// %7 : Code Pays
// %8 : Téléphone/Fax
// %8 : Email
SI SociétéEXPRESS="EIS"
_MonXML+= RC+ ChaîneConstruit(_entete_fournisseur,"38836792200019","EIS","","26, rue Simart","Paris","75018","FR","","")
SINON
_MonXML+= RC+ ChaîneConstruit(_entete_fournisseur,"50077078900021","Hygie","","122 Rue du Faubourg Saint-Honoré","Paris","75008","FR","","")
FIN
// %1 : ID
// %2 : Rue
// %3 : Ville
// %4 : CP
// %5 : Code Pays
// %6 : Code service
HLitRecherche(EXPRESS_CLIFAC$,SIRET,EXPRESS_Facture.SIRET)
SI EXPRESS_CLIFAC$.Siret_facturation="" ALORS
wSIRET=EXPRESS_CLIFAC$.SIRET
SINON
wSIRET=EXPRESS_CLIFAC$.Siret_facturation
FIN
_MonXML+= RC+ ChaîneConstruit(_entete_client,wSIRET,EXPRESS_Facture.Adr1+" "+EXPRESS_Facture.Adr2+" "+EXPRESS_Facture.Adr3,...
EXPRESS_Facture.Ville,EXPRESS_Facture.CP,"FR",EXPRESS_CLIFAC$.CodeService)

// % lieu,adresse,ville,cp
_MonXML+= RC+ ChaîneConstruit(_Livraison,EXPRESS_Facture.RS,EXPRESS_Facture.Adr1,EXPRESS_Facture.Ville,EXPRESS_Facture.CP)

// %1
// %2
SI (EXPRESS_Facture.DateEcheance) <>"" ALORS
_MonXML+= RC+ ChaîneConstruit(_Paiement,DateVersChaîne(EXPRESS_Facture.DateEcheance,"AAAA-MM-JJ"),"Mes Commentaires factures")
SINON
_MonXML+= RC+ ChaîneConstruit(_Paiement,DateVersChaîne(DateSys(),"AAAA-MM-JJ"),"Mes Commentaires factures")
FIN

// %1 montant taxes
// %2 montant ht
// %3 total TTC
_MonXML+= RC+ ChaîneConstruit(_autres,EXPRESS_Facture.TVA,EXPRESS_Facture.HT,EXPRESS_Facture.TTC)

HFiltre(EXPRESS_FactureLigne,IDFacture,EXPRESS_Facture.IDFacture,EXPRESS_Facture.IDFacture)
HLitPremier(EXPRESS_FactureLigne,IDFacture,hBlocageNon)
//HLitSuivant(EXPRESS_FactureLigne,IDFacture,hBlocageNon)

TANTQUE PAS HEnDehors(EXPRESS_FactureLigne) ET EXPRESS_FactureLigne.IDFacture=EXPRESS_Facture.IDFacture
nCptLigne++
// %1 : Numéro de ligne
// %2 : Qte
// %3 : Devise
// %4 : Total HT Ligne
// %5 : numéro de BL
// %6 : date livraison
// %7 : libelle article
// %8 : code article
// %9 : Taux TVA
//%10 : Type TVA
//%11 : Prix Unitaire HT

_MonXML+= RC+ ChaîneConstruit(_ligne_facture,nCptLigne,EXPRESS_FactureLigne.Qte,"EUR",EXPRESS_FactureLigne.HT,"BL",...
DateVersChaîne(EXPRESS_Facture.DateFacture,"AAAA-MM-JJ"),...
EXPRESS_FactureLigne.Lib,"","20","TVA DEBIT",EXPRESS_FactureLigne.PU)

HLitSuivant(EXPRESS_FactureLigne,IDFacture,hBlocageNon)

FIN
HDésactiveFiltre(EXPRESS_FactureLigne)
_MonXML+=RC + "
"

_MonBuffer est un Buffer= ChaîneVersUTF8(_MonXML)
fSauveBuffer(EXPRESS_Paramètres.RepChorus+"\Data\"+EXPRESS_Facture.IDFacture+".xml",_MonBuffer)
FIN


fCopieFichier(EXPRESS_Paramètres.RepChorus+"\Zip\chorus*.tar.gz",EXPRESS_Paramètres.RepChorus+"\Zip\Archive\")
fSupprime(EXPRESS_Paramètres.RepChorus+"\Zip\chorus*.tar.gz")
ZipChorus est une zipArchive
zipCrée(ZipChorus,EXPRESS_Paramètres.RepChorus+"\Zip\chorus "+DateVersChaîne(DateSys(),"AAAA-MM-JJ")+" "+HeureVersChaîne(HeureSys(),"HH-MM-SS" +".tar.gz"))
liste est une chaîne=fListeFichier(EXPRESS_Paramètres.RepChorus+"\Data\*.xml",frNonRécursif)
POUR TOUTE CHAÎNE sFichier DE liste SEPAREE PAR RC
zipAjouteFichier(ZipChorus,sFichier,EXPRESS_Paramètres.RepChorus+"\Data\")

FIN
//zipAddDirectory(ZipChorus,EXPRESS_Paramètres.RepChorus+"\Data\",Faux,zipRelatif)
zipFerme(ZipChorus)
Membre enregistré
87 messages
Posté le 07 janvier 2019 - 14:01
Bonjour Etienne,

J'utilise une méthode très similaire à la votre mais je rencontre des difficultés à ajouter des attributs dans mes nœuds.

De votre côté, comment vous-y êtes vous pris pour générer des attributs?

--

NR
Posté le 07 janvier 2019 - 15:48
Bonjour

gérer tout dans un buffer
ecrire dans ce buffer toutes les lignes une par une en codant avec des tabulations en début si nécessaire et des retours chariots à la fin de chaque ligne
utiliser fsauvebuffer

attention d'avoir un résultat final en UTF8

bon devs