Bonjour à tous.
J'utilise l'extension Factur X réalisée par Alexis de Lattre avec libre office sous ubuntu.
Je l'ai intégré dans un programme de facturation qui contient toutes les macros en oobasic.
Rappel de facture,journal, archivage, envoie automatique etc.
En fait il est plus complet que les programmes du commerce et fonctionne à merveille depuis de nombreuses années.
La factur X ne me convenait pas totalement car le nom n'atait pas automatiquement mentionné et les factures X n'étaient pas indexées dans des répertoires spécifiques par mois.
Dans la feuille 2 'ligne 35 j'ai indiqué le chemin relatif et j'ai modifié le scripte Python
ligne 293 du script
'invoice_path': {
'type': 'char',
'required': True,
'line': 35,
Et ligne 402 à 500 pour indiquer le chemin relatif de sauvegarde.
# adaptation arc fiduciaire par Patrice Lemmonnier ligne 402 à 500
def generate_facturx_invoice_v1(button_arg=None):
doc = XSCRIPTCONTEXT.getDocument()
macro_path = os.path.dirname(uno.fileUrlToSystemPath(__file__))
localedir = os.path.join(macro_path, 'i18n')
gettext.bindtextdomain('facturx_macro', localedir=localedir)
gettext.textdomain('facturx_macro')
if len(doc.Sheets) < 2:
return msg_box(doc, _("The spreadsheet must contain at least 2 tabs."))
inv_sheet = doc.Sheets[0]
data_sheet = doc.Sheets[1]
# filter data
data = get_and_check_data(doc, data_sheet)
if not data:
return
# prepare LO PDF export
pdf_option1 = PropertyValue()
pdf_option1.Name = "SelectPdfVersion"
pdf_option1.Value = 1
pdf_option2 = PropertyValue()
pdf_option2.Name = "Selection"
pdf_option2.Value = inv_sheet
pdf_options = (pdf_option1, pdf_option2)
pdf_export_arg1 = PropertyValue()
pdf_export_arg1.Name = "FilterName"
pdf_export_arg1.Value = "calc_pdf_Export"
pdf_export_arg2 = PropertyValue()
pdf_export_arg2.Name = "FilterData"
pdf_export_arg2.Value = uno.Any("[]com.sun.star.beans.PropertyValue", pdf_options)
pdf_export_args = (pdf_export_arg1, pdf_export_arg2)
pdf_tmp_file = NamedTemporaryFile('w', prefix='libo-fx-', suffix='.pdf')
pdf_tmp_file_url = uno.systemPathToFileUrl(pdf_tmp_file.name)
doc.storeToURL(pdf_tmp_file_url, pdf_export_args)
# generate XML
xml_byte = generate_facturx_xml(data)
if not xml_byte:
return
# Additional attachments
additional_attachments = {}
if data.get('attachment_count'):
for a in range(data['attachment_count']):
attach_title = _('Select attachment No. %d') % (a + 1)
attachment_url = open_filepicker(attach_title, mode=0)
if attachment_url:
attach_filename = uno.fileUrlToSystemPath(attachment_url)
additional_attachments[attach_filename] = ''
# ----------------------------------------------------
# Enregistrement automatique sans boîte de dialogue
# ----------------------------------------------------
output_dir = data['invoice_path']
# output_dir = os.path.expanduser(output_dir)
# output_dir = os.path.expanduser("~/'invoice_path'/FACTURE X")
if not os.path.exists(output_dir):
os.makedirs(output_dir)
auto_filename = f"FACTURE_{data['invoice_date'].strftime('%Y-%m-%d')}_{data['invoice_number']}.pdf"
fx_pdf_filename = os.path.join(output_dir, auto_filename)
fx_pdf_filename_url = uno.systemPathToFileUrl(fx_pdf_filename)
# PDF metadata
pdf_metadata = {
'author': data['issuer_name'],
'keywords': ','.join(['Factur-X', _('Invoice')]),
'title': _('%s: Invoice %s') % (
data['issuer_name'], data['invoice_number']),
'subject': _('Factur-X invoice %s issued by %s') % (
data['invoice_number'], data['issuer_name']),
}
generate_facturx_from_file(
pdf_tmp_file.name, xml_byte, facturx_level='minimum',
check_xsd=False, pdf_metadata=pdf_metadata,
output_pdf_file=fx_pdf_filename,
additional_attachments=additional_attachments)
pdf_tmp_file.close()
J'ai adressé mon scripte à Alexis de Lattre pour qu'il l'intègre à sa prochaine mise à jour.
En tous cas l'envoie de mes factur X sur le Partenaire Agrée ets presque transparent puisqu'il suffit de sélectionner les fichiers des répertoires classés par mois et année et de les importer.
Tout pourrait être automatisé mais c'est déja top.
Bon courage à tous …
# Ici ?
Posté par Luc-Skywalker . Évalué à 5 (+3/-0).
dernière màj il y a 10 mois:
https://github.com/akretion/factur-x-libreoffice-extension/
"Si tous les cons volaient, il ferait nuit" F. Dard
[^] # Re: Ici ?
Posté par Patrice1 . Évalué à 1 (+0/-0).
Oui bien évidemment mais il manque dans la version d'Alexis de Latte le nom automatique du fichier factur X et son archivage dans des répertoires spécifiques.
Ainsi mes factur X sont toutes enregistrées en aaynt comme nom la date et le numero de factures Et elles sont enresitrées dans des répertoires mois par mois.
Celles de Novembre 2025 en Novembre 2025 etc .
Et c'est totalement automatique et transparent. Je pense que cela peut servir à d'autres. Enfin c'est ce que je pense mes amis ont apprécié cette facilité..
Bon courage à tous
[^] # Re: Ici ?
Posté par BAud (site web personnel) . Évalué à 2 (+0/-0). Dernière modification le 28 novembre 2025 à 18:17.
l'idée était aussi de remonter tes propositions comme une pull-request sur github :-)
puis bon le nommage avec le nom du mois n'est pas trié dans l'ordre (outre qu'une espace dans un nom de répertoire n'est pas optimal) et ne respecte pas ISO-8601 qui donnerait des répertoires triés selon AAAA-MM-JJ soit 2026-11-28 pour aujourd'hui (bon, ok, ça ne passe pas bien l'an 10k mais bon Y10K ya du temps :p.
Tu le fais pourtant pour le nom du fichier avec
strftime('%Y-%m-%d')o_OEnvoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.