From ff27b94484e20d398f2b2f40ad5c86710f87fb72 Mon Sep 17 00:00:00 2001 From: yibudak Date: Tue, 21 Dec 2021 15:35:01 +0300 Subject: [PATCH 01/35] new module for excel export --- altinkaya_excel_export/__init__.py | 4 ++ altinkaya_excel_export/__manifest__.py | 27 +++++++++ .../export_account_invoice_xlsx/__init__.py | 1 + .../account_invoice_export.py | 26 +++++++++ .../export_account_invoice_xlsx/reports.xml | 28 +++++++++ .../temp_zirve_masraf_fatura.xml | 43 ++++++++++++++ .../zirve_masraf_fatura.xlsx | Bin 0 -> 5339 bytes .../export_purchase_order_xlsx/po_rfq_en.xlsx | Bin 0 -> 15841 bytes .../export_purchase_order_xlsx/po_rfq_tr.xlsx | Bin 0 -> 16887 bytes .../purchase_order_en.xlsx | Bin 0 -> 15991 bytes .../purchase_order_tr.xlsx | Bin 0 -> 16837 bytes .../export_purchase_order_xlsx/reports.xml | 40 +++++++++++++ .../export_purchase_order_xlsx/temp_po_en.xml | 54 +++++++++++++++++ .../export_purchase_order_xlsx/temp_po_tr.xml | 55 ++++++++++++++++++ .../temp_rfq_en.xml | 40 +++++++++++++ .../temp_rfq_tr.xml | 48 +++++++++++++++ .../static/description/icon.png | Bin 0 -> 2497 bytes 17 files changed, 366 insertions(+) create mode 100644 altinkaya_excel_export/__init__.py create mode 100644 altinkaya_excel_export/__manifest__.py create mode 100644 altinkaya_excel_export/export_account_invoice_xlsx/__init__.py create mode 100644 altinkaya_excel_export/export_account_invoice_xlsx/account_invoice_export.py create mode 100644 altinkaya_excel_export/export_account_invoice_xlsx/reports.xml create mode 100644 altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml create mode 100644 altinkaya_excel_export/export_account_invoice_xlsx/zirve_masraf_fatura.xlsx create mode 100644 altinkaya_excel_export/export_purchase_order_xlsx/po_rfq_en.xlsx create mode 100644 altinkaya_excel_export/export_purchase_order_xlsx/po_rfq_tr.xlsx create mode 100644 altinkaya_excel_export/export_purchase_order_xlsx/purchase_order_en.xlsx create mode 100644 altinkaya_excel_export/export_purchase_order_xlsx/purchase_order_tr.xlsx create mode 100644 altinkaya_excel_export/export_purchase_order_xlsx/reports.xml create mode 100644 altinkaya_excel_export/export_purchase_order_xlsx/temp_po_en.xml create mode 100644 altinkaya_excel_export/export_purchase_order_xlsx/temp_po_tr.xml create mode 100644 altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_en.xml create mode 100644 altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_tr.xml create mode 100644 altinkaya_excel_export/static/description/icon.png diff --git a/altinkaya_excel_export/__init__.py b/altinkaya_excel_export/__init__.py new file mode 100644 index 00000000..b40a3c86 --- /dev/null +++ b/altinkaya_excel_export/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import export_purchase_order_xlsx +from . import export_account_invoice_xlsx \ No newline at end of file diff --git a/altinkaya_excel_export/__manifest__.py b/altinkaya_excel_export/__manifest__.py new file mode 100644 index 00000000..78a30dd4 --- /dev/null +++ b/altinkaya_excel_export/__manifest__.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +{ + 'name': "Altinkaya Excel Reports", + 'summary': """ + Various Excel reports""", + 'description': """ + This module will allow exporting in Excel using + OCA/server-tools/excel_import_export module. + """, + 'author': "Yavuz Avcı,Yiğit Budak", + 'website': "", + 'category': 'Uncategorized', + 'version': '1.0', + 'depends': ['excel_import_export', 'purchase', 'account'], + 'data': [ + # Purchase + 'export_purchase_order_xlsx/reports.xml', + 'export_purchase_order_xlsx/temp_po_en.xml', + 'export_purchase_order_xlsx/temp_po_tr.xml', + 'export_purchase_order_xlsx/temp_rfq_en.xml', + 'export_purchase_order_xlsx/temp_rfq_tr.xml', + # Account + 'export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml', + 'export_account_invoice_xlsx/reports.xml', + ], + 'installable': True, +} \ No newline at end of file diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/__init__.py b/altinkaya_excel_export/export_account_invoice_xlsx/__init__.py new file mode 100644 index 00000000..6b247ebd --- /dev/null +++ b/altinkaya_excel_export/export_account_invoice_xlsx/__init__.py @@ -0,0 +1 @@ +from . import account_invoice_export \ No newline at end of file diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/account_invoice_export.py b/altinkaya_excel_export/export_account_invoice_xlsx/account_invoice_export.py new file mode 100644 index 00000000..1dcfd14a --- /dev/null +++ b/altinkaya_excel_export/export_account_invoice_xlsx/account_invoice_export.py @@ -0,0 +1,26 @@ +# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from odoo import fields,models,api + + +class ReportAccountInvoice(models.TransientModel): + _name = 'report.account.invoice' + _description = 'Wizard for report.account.invoice' + _inherit = 'xlsx.report' + + # Report Result, account.invoice + results = fields.Many2many( + comodel_name='account.invoice', + string='Invoices', + compute='_get_invoices', + help='Use compute fields, so there is nothing stored in database', + ) + + @api.multi + @api.depends('results') + def _get_invoices(self): + selected_ids = self.env.context.get('active_ids', []) + ids = self.env['account.invoice'].browse(selected_ids) + for rec in self: + rec.results = ids diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/reports.xml b/altinkaya_excel_export/export_account_invoice_xlsx/reports.xml new file mode 100644 index 00000000..bf50e57a --- /dev/null +++ b/altinkaya_excel_export/export_account_invoice_xlsx/reports.xml @@ -0,0 +1,28 @@ + + + + + + report.account.invoice + report.account.invoice + + primary + + + Faturaları, Zirve Yazılım sistemine uygun şekilde çıktı almak için aşağıdaki butonları kullanınız. + + + + + + + + + \ No newline at end of file diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml new file mode 100644 index 00000000..6d05a325 --- /dev/null +++ b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml @@ -0,0 +1,43 @@ + + + + report.account.invoice + zirve_masraf_fatura.xlsx + Zirve Masraf Fatura Şablonu + Zirve Muhasebe programına uygun biçimde faturaların içeri aktarılabilmesini sağlayan Excel şablonu. + + { + '__EXPORT__': { + 'Fatura': { # sheet can be name (string) or index (integer) + 'results': { # prefix with _CONT_ to continue rows from previous row field + 'A2': 'date_invoice${value or ""}#{align=left;style=date}', + 'B2': 'number${value or ""}#{align=left;style=text}', + 'C2': 'journal_id.name${value or ""}#{align=left;style=text}', + 'D2': 'z_tevkifatli_mi${"Yes" if value else "No"}#{align=left;style=text}', + 'E2': 'journal_id.name${value or ""}#{align=left;style=text}', + 'F2': 'partner_id.name${value or ""}#{align=left;style=text}', + 'G2': '${"\'%s" % (object.partner_id.vat or "")}#{align=left;style=text}', + 'H2': 'partner_id.vat${value or ""}#{align=left;style=text}', + 'I2': 'amount_untaxed${"%.2f" % value or ""}#{align=left;style=text}', + 'J2': '${"" or ""}#{align=left;style=text}', + 'K2': '${"" or ""}#{align=left;style=text}', + 'L2': '${"" or ""}#{align=left;style=text}', + 'M2': '${"" or ""}#{align=left;style=text}', + 'N2': '${"" or ""}#{align=left;style=text}', + 'O2': '${"" or ""}#{align=left;style=text}', + 'P2': 'amount_untaxed${"\'%.2f" % value or ""}#{align=left;style=text}', + 'Q2': '${"" or ""}#{align=left;style=text}', + 'R2': 'amount_tax${"\'%.2f" % value or ""}#{align=left;style=text}', + 'S2': '${"" or ""}#{align=left;style=text}', + 'T2': 'amount_total${"\'%.2f" % value or ""}#{align=left;style=text}', + }, + }, + }, + } + + + + + + + \ No newline at end of file diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/zirve_masraf_fatura.xlsx b/altinkaya_excel_export/export_account_invoice_xlsx/zirve_masraf_fatura.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..58d07c9ab74a1bf24520ce10832470ead5b8f1bb GIT binary patch literal 5339 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 D@*nh! literal 0 HcmV?d00001 diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/po_rfq_tr.xlsx b/altinkaya_excel_export/export_purchase_order_xlsx/po_rfq_tr.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b9ffb999dd6cc039adcd0720f29c218390ccf55a GIT binary patch literal 16887 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 literal 0 HcmV?d00001 diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/purchase_order_tr.xlsx b/altinkaya_excel_export/export_purchase_order_xlsx/purchase_order_tr.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3041d3e55b74156e8a0ef0911ff48b9075c2c3ef GIT binary patch literal 16837 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 literal 0 HcmV?d00001 diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/reports.xml b/altinkaya_excel_export/export_purchase_order_xlsx/reports.xml new file mode 100644 index 00000000..de36b013 --- /dev/null +++ b/altinkaya_excel_export/export_purchase_order_xlsx/reports.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_en.xml b/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_en.xml new file mode 100644 index 00000000..a8b2cbf8 --- /dev/null +++ b/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_en.xml @@ -0,0 +1,54 @@ + + + + purchase.order + purchase_order_en.xlsx + Purchase Order Template + Sample Purchase Order Template for use in international purchases. + + { + '__EXPORT__': { + 'PO': { # sheet can be name (string) or index (integer) + '_HEAD_': { + 'B2': '${"To: %s <%s>" % (object.partner_id.display_name, object.partner_id.email) or ""}#{align=left;style=text}', + 'B3': 'partner_id.display_name${value or ""}#{align=left;style=text}', + 'B4': '${"%s %s %s %s %s %s %s" % (object.partner_id.neighbour_id.name or "", object.partner_id.street, object.partner_id.street2 or "", object.partner_id.region_id.name or "", object.partner_id.district_id.name or "", object.partner_id.state_id.name or "", object.partner_id.country_id.name or "")}#{}', + 'B5': '${"Phone: %s Fax: %s" % (object.partner_id.phone or "", object.partner_id.fax or "") or ""}#{align=left}', + 'B11': '${"Say in %s : %s" % (object.currency_id.symbol, object.purchase_order_amount_in_words or "")}#{align=left;font=bold;style=text}', + 'B12': '${"PS: %s" % object.notes if object.notes else ""}#{align=left;font=bold;style=text}', + 'B14': '${"INCOTERM" or ""}#{align=left;font=bold;style=text}', + 'B16': '${"Please send us your Proforma Invoice for the items listed above." or ""}#{align=left;style=text}', + 'B18': '${"Delivery Address" or ""}#{align=left;font=bold;style=text}', + 'B19': '${"ALTINKAYA ELEKTRONIK CIH. KUT.SAN.TIC.A.Ş." or ""}#{align=left;style=text}', + 'B20': '${"1469 SOK NO:10 ivedik OSB" or ""}#{align=left;style=text}', + 'B21': '${"Yenimahalle ANKARA / TURKEY" or ""}#{align=left;style=text}', + 'B22': '${"ULUS TAX OFFICE VAT 0610422947" or ""}#{align=left;style=text}', + 'B23': '${"Phone: +903123952768" or ""}#{align=left;style=text}', + 'C14': '${"FOB" or ""}#{align=left;font=bold;style=text}', + 'F9': '${"Total" or ""}#{align=right;font=bold;style=text}', + 'F19': '${"Purchase Order Approved" or ""}#{font=bold;align=center;style=text}', + 'F20': 'user_id.name${value or ""}#{align=center;style=text}', + 'F21': 'user_id.email${value or ""}#{align=center;style=text}', + 'G3': 'date_order${value or ""}#{align=left;style=date}', + 'G4': 'name${value or ""}#{}', + 'G9': '${"%.2f %s" % (object.amount_untaxed, object.currency_id.symbol) or "0 %s" (object.currency_id.symbol)}#{align=right;style=text}', + }, + 'order_line': { # prefix with _CONT_ to continue rows from previous row field + 'B8': 'product_id.default_code${value or ""}#{align=left;style=text}', + 'C8': 'name${value or ""}#{align=left;style=text}', + 'D8': 'product_qty${int(value) if value.is_integer() else value or 0}#{align=right;style=text}', + 'E8': 'product_uom.name${value or ""}#{align=left;style=text}', + 'F8': '${"%.4f %s" % (object.price_unit, object.currency_id.symbol) or "0 %s" (object.currency_id.symbol)}#{align=right;style=number}', + 'G8': '${"%.2f %s" % (object.price_subtotal, object.currency_id.symbol) or "0 %s" (object.currency_id.symbol)}#{align=right;style=number}', + }, + }, + }, + } + + + + + + + + \ No newline at end of file diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_tr.xml b/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_tr.xml new file mode 100644 index 00000000..ed448110 --- /dev/null +++ b/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_tr.xml @@ -0,0 +1,55 @@ + + + + purchase.order + purchase_order_tr.xlsx + Satınalma Siparişi Şablonu + Türkiye sınırları içinde yapılan satınalmalarda kullanılmak üzere tasarlanmış Satınalma Siparişi Şablonu. + + { + '__EXPORT__': { + 'Satinalma': { # sheet can be name (string) or index (integer) + '_HEAD_': { + 'B2': '${"Sayın %s <%s>" % (object.partner_id.display_name, object.partner_id.email) or ""}#{align=left;style=text}', + 'B3': 'partner_id.display_name${value or ""}#{align=left;style=text}', + 'B4': '${"%s %s %s %s %s %s %s" % (object.partner_id.neighbour_id.name or "", object.partner_id.street, object.partner_id.street2 or "", object.partner_id.region_id.name or "", object.partner_id.district_id.name or "", object.partner_id.state_id.name or "", object.partner_id.country_id.name or "")}#{}', + 'B5': '${"Tel: %s Faks: %s" % (object.partner_id.phone or "", object.partner_id.fax or "") or ""}#{align=left}', + 'B13': '${"YALNIZ: %s" % (object.purchase_order_amount_in_words or "")}#{align=left;font=bold;style=text}', + 'B14': '${"NOT: %s" % object.notes if object.notes else ""}#{align=left;font=bold;style=text}', + 'B17': '${"Yukarıda cins ve miktarları yazılı olan ürünler siparişimizdir.." or ""}#{align=left;style=text}', + 'B19': '${"Teslimat Adresi" or ""}#{align=left;font=bold;style=text}', + 'B20': '${"%s" % (object.picking_type_id.warehouse_id.partner_id.name) or ""}#{align=left;style=text}', + 'B21': '${"%s %s %s" % (object.picking_type_id.warehouse_id.partner_id.neighbour_id.name or "", object.picking_type_id.warehouse_id.partner_id.street or "", object.picking_type_id.warehouse_id.partner_id.street2 or "") or ""}#{align=left;style=text}', + 'B22': '${"%s %s %s %s" % (object.picking_type_id.warehouse_id.partner_id.region_id.name or "", object.picking_type_id.warehouse_id.partner_id.zip or "", object.picking_type_id.warehouse_id.partner_id.district_id.name or "", object.picking_type_id.warehouse_id.partner_id.state_id.name or "")}#{align=left;style=text}', + 'B23': '${"Ulus V.D. %s" % (object.picking_type_id.warehouse_id.partner_id.vat) or ""}#{align=left;style=text}', + 'B24': '${"Tel: %s" % (object.picking_type_id.warehouse_id.partner_id.phone) or ""}#{align=left;style=text}', + 'F9': '${"Toplam" or ""}#{align=right;font=bold;style=text}', + 'F10': '${"KDV (%18)" or ""}#{align=right;font=bold;style=text}', + 'F11': '${"Genel Toplam" or ""}#{align=right;font=bold;style=text}', + 'F20': '${"Satınalma Emri Onayı" or ""}#{font=bold;align=center;style=text}', + 'F21': 'user_id.name${value or ""}#{align=center;style=text}', + 'F22': 'user_id.email${value or ""}#{align=center;style=text}', + 'G3': 'date_order${value or ""}#{align=left;style=date}', + 'G4': 'name${value or ""}#{}', + 'G9': '${"%.2f %s" % (object.amount_untaxed, object.currency_id.symbol) or "0 %s" (object.currency_id.symbol)}#{align=right;style=text}', + 'G10': '${"%.2f %s" % (object.amount_tax, object.currency_id.symbol) or "0 %s" (object.currency_id.symbol)}#{align=right;style=text}', + 'G11': '${"%.2f %s" % (object.amount_total, object.currency_id.symbol) or "0 %s" (object.currency_id.symbol)}#{align=right;style=text}', + }, + 'order_line': { # prefix with _CONT_ to continue rows from previous row field + 'B8': 'product_id.default_code${value or ""}#{align=left;style=text}', + 'C8': 'name${value or ""}#{align=left;style=text}', + 'D8': 'product_qty${int(value) if value.is_integer() else value or 0}#{align=right;style=text}', + 'E8': 'product_uom.name${value or ""}#{align=left;style=text}', + 'F8': '${"%.4f %s" % (object.price_unit, object.currency_id.symbol) or "0 %s" (object.currency_id.symbol)}#{align=right;style=number}', + 'G8': '${"%.2f %s" % (object.price_subtotal, object.currency_id.symbol) or "0 %s" (object.currency_id.symbol)}#{align=right;style=number}', + }, + }, + }, + } + + + + + + + \ No newline at end of file diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_en.xml b/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_en.xml new file mode 100644 index 00000000..812c2f67 --- /dev/null +++ b/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_en.xml @@ -0,0 +1,40 @@ + + + + purchase.order + po_rfq_en.xlsx + Purchase Order RFQ Template + Sample Purchase Order RFQ Template for use in international purchases. + + { + '__EXPORT__': { + 'RFQ': { # sheet can be name (string) or index (integer) + '_HEAD_': { + 'B2': '${"To: %s <%s>" % (object.partner_id.display_name, object.partner_id.email) or ""}#{align=left;style=text}', + 'B3': 'partner_id.display_name${value or ""}#{align=left;style=text}', + 'B4': '${"%s %s %s %s %s %s %s" % (object.partner_id.neighbour_id.name, object.partner_id.street, object.partner_id.street2 or "", object.partner_id.region_id.name, object.partner_id.district_id.name, object.partner_id.state_id.name, object.partner_id.country_id.name) or ""}#{}', + 'B5': '${"Phone: %s Fax: %s" % (object.partner_id.phone or "", object.partner_id.fax or "") or ""}#{align=left;style=date}', + 'B11': '${"INCOTERM" or ""}#{align=left;font=bold;style=text}', + 'B15': '${"Buyer" or ""}#{align=center;font=bold;style=text}', + 'B16': '${"Altınkaya" or ""}#{align=center;style=text}', + 'C11': '${"FOB" or ""}#{align=left;font=bold;style=text}', + 'F15': '${"Seller" or ""}#{align=center;font=bold;style=text}', + 'G3': 'date_order${value or ""}#{align=left;style=date}', + 'G4': 'name${value or ""}#{}', + }, + 'order_line': { # prefix with _CONT_ to continue rows from previous row field + 'B8': 'product_id.default_code${value or ""}#{style=text}', + 'C8': 'name${value or ""}#{style=text}', + 'D8': 'product_qty${int(value) if value.is_integer() else value or 0}#{align=right;style=text}', + 'E8': 'product_uom.name${value or ""}#{align=left;style=text}', + }, + }, + } + } + + + + + + + \ No newline at end of file diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_tr.xml b/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_tr.xml new file mode 100644 index 00000000..7fd4cac8 --- /dev/null +++ b/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_tr.xml @@ -0,0 +1,48 @@ + + + + purchase.order + po_rfq_tr.xlsx + Teklif Talebi Şablonu + Türkiye sınırları içinde yapılan teklif taleplerinde kullanılmak üzere tasarlanmış Teklif Talebi Şablonu. + + { + '__EXPORT__': { + 'Teklif': { # sheet can be name (string) or index (integer) + '_HEAD_': { + 'B2': '${"Sayın %s <%s>" % (object.partner_id.display_name, object.partner_id.email) or ""}#{align=left;style=text}', + 'B3': 'partner_id.display_name${value or ""}#{align=left;style=text}', + 'B4': '${"%s %s %s %s %s %s %s" % (object.partner_id.neighbour_id.name or "", object.partner_id.street, object.partner_id.street2 or "", object.partner_id.region_id.name or "", object.partner_id.district_id.name or "", object.partner_id.state_id.name or "", object.partner_id.country_id.name or "")}#{}', + 'B5': '${"Tel: %s Faks: %s" % (object.partner_id.phone or "", object.partner_id.fax or "") or ""}#{align=left}', + 'B16': '${"Yukarıda cins ve miktarları yazılı olan ürünler siparişimizdir.." or ""}#{align=left;style=text}', + 'B19': '${"Teslimat Adresi" or ""}#{align=left;font=bold;style=text}', + 'B20': '${"%s" % (object.picking_type_id.warehouse_id.partner_id.name) or ""}#{style=text}', + 'B21': '${"%s %s %s" % (object.picking_type_id.warehouse_id.partner_id.neighbour_id.name or "", object.picking_type_id.warehouse_id.partner_id.street or "", object.picking_type_id.warehouse_id.partner_id.street2 or "") or ""}#{style=text}', + 'B22': '${"%s %s %s %s" % (object.picking_type_id.warehouse_id.partner_id.region_id.name or "", object.picking_type_id.warehouse_id.partner_id.zip or "", object.picking_type_id.warehouse_id.partner_id.district_id.name or "", object.picking_type_id.warehouse_id.partner_id.state_id.name or "")}#{style=text}', + 'B23': '${"Ulus V.D. %s" % (object.picking_type_id.warehouse_id.partner_id.vat) or ""}#{style=text}', + 'B24': '${"Tel: %s" % (object.picking_type_id.warehouse_id.partner_id.phone) or ""}#{align=left;style=text}', + 'F9': '${"Toplam" or ""}#{align=right;font=bold;style=text}', + 'F10': '${"KDV (%18)" or ""}#{align=right;font=bold;style=text}', + 'F11': '${"Genel Toplam" or ""}#{align=right;font=bold;style=text}', + 'F20': '${"Satınalma Emri Onayı" or ""}#{font=bold;align=center;style=text}', + 'F21': 'user_id.name${value or ""}#{align=center;style=text}', + 'F22': 'user_id.email${value or ""}#{align=center;style=text}', + 'G3': 'date_order${value or ""}#{align=left;style=date}', + 'G4': 'name${value or ""}#{}', + }, + 'order_line': { # prefix with _CONT_ to continue rows from previous row field + 'B8': 'product_id.default_code${value or ""}#{align=left;style=text}', + 'C8': 'name${value or ""}#{align=left;style=text}', + 'D8': 'product_qty${int(value) if value.is_integer() else value or 0}#{align=right;style=text}', + 'E8': 'product_uom.name${value or ""}#{align=left;style=text}', + }, + }, + }, + } + + + + + + + \ No newline at end of file diff --git a/altinkaya_excel_export/static/description/icon.png b/altinkaya_excel_export/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4de862fa524ff5530822261c2c983c50f477e9f5 GIT binary patch literal 2497 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 LNkvXXu0mjfLvPKn literal 0 HcmV?d00001 From 538963f78da4c07e392b248963affe0fac07e7da Mon Sep 17 00:00:00 2001 From: yibudak Date: Tue, 21 Dec 2021 16:28:36 +0300 Subject: [PATCH 02/35] fixed duplicate lines on zirve export xlsx --- .../export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml index 6d05a325..08b2edb3 100644 --- a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml +++ b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml @@ -14,7 +14,7 @@ 'B2': 'number${value or ""}#{align=left;style=text}', 'C2': 'journal_id.name${value or ""}#{align=left;style=text}', 'D2': 'z_tevkifatli_mi${"Yes" if value else "No"}#{align=left;style=text}', - 'E2': 'journal_id.name${value or ""}#{align=left;style=text}', + 'E2': '${"%s" % object.journal_id.name or ""}#{align=left;style=text}', 'F2': 'partner_id.name${value or ""}#{align=left;style=text}', 'G2': '${"\'%s" % (object.partner_id.vat or "")}#{align=left;style=text}', 'H2': 'partner_id.vat${value or ""}#{align=left;style=text}', From 001dcd3933292f5b4f48df1fac062cb56f59cd3a Mon Sep 17 00:00:00 2001 From: yibudak Date: Sat, 19 Feb 2022 16:43:31 +0300 Subject: [PATCH 03/35] new module for partner statement excel export --- altinkaya_excel_export/__init__.py | 3 +- altinkaya_excel_export/__manifest__.py | 6 +- .../__init__.py | 2 + .../partner_statement_currency.xlsx | Bin 0 -> 18839 bytes .../partner_statement_export.py | 151 ++++++++++++++++++ .../reports.xml | 31 ++++ .../res_partner.py | 8 + .../res_partner_view.xml | 19 +++ .../temp_partner_statement_currency.xml | 48 ++++++ 9 files changed, 266 insertions(+), 2 deletions(-) create mode 100644 altinkaya_excel_export/export_partner_currency_statement/__init__.py create mode 100644 altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency.xlsx create mode 100644 altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py create mode 100644 altinkaya_excel_export/export_partner_currency_statement/reports.xml create mode 100644 altinkaya_excel_export/export_partner_currency_statement/res_partner.py create mode 100644 altinkaya_excel_export/export_partner_currency_statement/res_partner_view.xml create mode 100644 altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml diff --git a/altinkaya_excel_export/__init__.py b/altinkaya_excel_export/__init__.py index b40a3c86..96c30461 100644 --- a/altinkaya_excel_export/__init__.py +++ b/altinkaya_excel_export/__init__.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- from . import export_purchase_order_xlsx -from . import export_account_invoice_xlsx \ No newline at end of file +from . import export_account_invoice_xlsx +from . import export_partner_currency_statement diff --git a/altinkaya_excel_export/__manifest__.py b/altinkaya_excel_export/__manifest__.py index 78a30dd4..d10f5e42 100644 --- a/altinkaya_excel_export/__manifest__.py +++ b/altinkaya_excel_export/__manifest__.py @@ -22,6 +22,10 @@ # Account 'export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml', 'export_account_invoice_xlsx/reports.xml', + # Partner Statement + 'export_partner_currency_statement/temp_partner_statement_currency.xml', + 'export_partner_currency_statement/reports.xml', + 'export_partner_currency_statement/res_partner_view.xml' ], 'installable': True, -} \ No newline at end of file +} diff --git a/altinkaya_excel_export/export_partner_currency_statement/__init__.py b/altinkaya_excel_export/export_partner_currency_statement/__init__.py new file mode 100644 index 00000000..92d6debf --- /dev/null +++ b/altinkaya_excel_export/export_partner_currency_statement/__init__.py @@ -0,0 +1,2 @@ +from . import partner_statement_export +from . import res_partner \ No newline at end of file diff --git a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency.xlsx b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1aeda1dcc9bb1c7f8cfd65c2fab92adcdc0aea13 GIT binary patch literal 18839 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 E3kMvbVE_OC literal 0 HcmV?d00001 diff --git a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py new file mode 100644 index 00000000..03aab3df --- /dev/null +++ b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py @@ -0,0 +1,151 @@ +import time + +from odoo import fields, models, api, _ +from odoo.exceptions import UserError +from datetime import date, datetime + + +class ReportPartnerStatement(models.TransientModel): + _name = 'report.partner.statement' + _description = 'Wizard for report.partner.statement' + _inherit = 'xlsx.report' + + def _default_date_start(self): + return date(date.today().year, 1, 1).strftime('%Y-%m-%d') + + def _default_date_end(self): + return date(date.today().year, 12, 31).strftime('%Y-%m-%d') + + def _default_date_now(self): + return date.today().strftime('%Y-%m-%d') + + def _default_partner(self): + selected_ids = self.env.context.get('active_ids', []) + return self.env['res.partner'].browse(selected_ids)[0] + + def _default_comp_curr(self): + return self.env.user.currency_id.id + + date_start = fields.Date('Start Date', required=1, default=_default_date_start, store=True) + date_end = fields.Date('End Date', required=1, default=_default_date_end, store=True) + date_now = fields.Date('Date', required=1, default=_default_date_now, store=True) + partner_id = fields.Many2one('res.partner', string='Customer Name', default=_default_partner) + total = fields.Float('Balance', store=True) + dc = fields.Char('dc', store=True) + sec_curr_dc = fields.Char('sec_curr_dc', store=True) + sec_curr_total = fields.Float('Secondary Currency Balance', store=True) + default_currency = fields.Many2one('res.currency', string='Currency', default=_default_comp_curr) + results = fields.Many2many( + comodel_name='partner.statement.lines', + string='Statement Lines', + compute='_get_lines', + help='Use compute fields, so there is nothing stored in database', + ) + + @api.multi + @api.depends('results') + def _get_lines(self): + for rec in self: + rec.results, rec.total, rec.sec_curr_total, rec.dc, rec.sec_curr_dc = self._get_statement_data( + self.partner_id) + + @api.multi + def _get_statement_data(self, partner_id): + cr = self.env.cr + statement_data = [] + balance, sec_curr_balance, seq = 0.00, 0.00, 0 + start_date = self.date_start + partner = partner_id + end_date = self.date_end + currency = self.env['res.currency'] + move_type = ('payable', 'receivable') + if not partner.has_secondary_curr: + raise UserError(_( + 'Bu müşteri için dövizli ekstre çıkartamazsınız. Muhasebe bölümünden "Dövizle Çalışıyor" alanını aktif ediniz')) + cr.execute('SELECT aj.name as journal, l.date_maturity as due_date, l.date, am.name, am.state, move_id, SUM(l.debit) AS debit, SUM(l.credit) AS credit,\ + l.amount_currency as amount_currency,l.currency_id as currency_id,l.company_currency_id as company_currency_id\ + FROM account_move_line AS l \ + LEFT JOIN account_account a ON (l.account_id=a.id) \ + LEFT JOIN account_move am ON (l.move_id=am.id) \ + LEFT JOIN account_journal aj ON (am.journal_id=aj.id) \ + LEFT JOIN account_account_type at ON (a.user_type_id =at.id) \ + WHERE (l.date BETWEEN %s AND %s) AND l.partner_id = '+ str(partner.commercial_partner_id.id) + ' AND at.type IN ' + str(move_type) + + 'GROUP BY aj.name,move_id,am.name,am.state,l.date,l.date_maturity ,l.amount_currency,l.currency_id,l.company_currency_id\ + ORDER BY l.date , l.currency_id ',(str(start_date),str(end_date))) + for each_dict in self.env.cr.dictfetchall(): + seq += 1 + balance = (each_dict['debit'] - each_dict['credit']) + balance + debit = 0.0 + credit = 0.0 + sec_curr_debit = 0.00 + sec_curr_credit = 0.00 + currency_id = currency.browse(each_dict['company_currency_id']) + if (each_dict['debit'] - each_dict['credit']) > 0.0: + debit = (each_dict['debit'] - each_dict['credit']) + else: + credit = (each_dict['credit'] - each_dict['debit']) + + if partner.has_secondary_curr: + move_date = datetime.strptime(str(each_dict['date']), '%Y-%m-%d').strftime('%d.%m.%Y') + cr.execute( + "SELECT rate\ + FROM res_currency_rate\ + WHERE currency_id = %s\ + AND name <= %s\ + ORDER BY name desc LIMIT 1", (partner.secondary_curr_id.id, move_date)) + if cr.rowcount: + rate = cr.fetchall()[0][0] + else: + rate = 1.00 + + sec_curr_debit = debit * rate + sec_curr_credit = credit * rate + sec_curr_balance = (sec_curr_debit - sec_curr_credit) + sec_curr_balance + + statement_data.append(self.env['partner.statement.lines'].create(vals_list={ + 'sequence': seq, + 'number': each_dict['state'] == 'draft' and '*' + str(each_dict['move_id']) or each_dict['name'], + 'date': each_dict['date'] and datetime.strptime(str(each_dict['date']), '%Y-%m-%d').strftime( + '%d.%m.%Y') or False, + 'due_date': each_dict['due_date'] and datetime.strptime(str(each_dict['due_date']), + '%Y-%m-%d').strftime('%d.%m.%Y') or False, + 'description': len(each_dict['journal']) >= 30 and each_dict['journal'][0:30] or each_dict[ + 'journal'], + 'debit': debit, + 'credit': credit, + 'sec_curr_debit': sec_curr_debit, + 'sec_curr_credit': sec_curr_credit, + 'sec_curr_balance': abs(sec_curr_balance) or 0.00, + 'sec_curr_dc': sec_curr_balance > 0.01 and 'B' or 'A', + 'balance': abs(balance) or 0.0, + 'dc': balance > 0.01 and 'B' or 'A', + 'sec_curr_total': sec_curr_balance or 0.00, + 'total': balance or 0.0, + 'secondary_currency': partner.secondary_curr_id.id, + 'primary_currency': currency_id.id}).id) + + sec_curr_dc = sec_curr_balance > 0.01 and 'B' or 'A' + dc = balance > 0.01 and 'B' or 'A' + return statement_data, balance or 0.00, sec_curr_balance or 0.00, dc, sec_curr_dc + + +class StatementLines(models.TransientModel): + _name = 'partner.statement.lines' + + sequence = fields.Integer('Sequence') + number = fields.Char('Number') + date = fields.Char('Date') + due_date = fields.Char('Due Date') + description = fields.Char('Description') + debit = fields.Float('Debit') + credit = fields.Float('Credit') + balance = fields.Float('Balance') + sec_curr_debit = fields.Float('Secondary Currency Debit') + sec_curr_credit = fields.Float('Secondary Currency Credit') + sec_curr_balance = fields.Float('Secondary Currency Balance') + dc = fields.Char('dc') + sec_curr_dc = fields.Char('sec_curr_dc') + total = fields.Float('Total') + sec_curr_total = fields.Float('Secondary Currency Total') + primary_currency = fields.Many2one('res.currency') + secondary_currency = fields.Many2one('res.currency') diff --git a/altinkaya_excel_export/export_partner_currency_statement/reports.xml b/altinkaya_excel_export/export_partner_currency_statement/reports.xml new file mode 100644 index 00000000..919fa60d --- /dev/null +++ b/altinkaya_excel_export/export_partner_currency_statement/reports.xml @@ -0,0 +1,31 @@ + + + + + + report.partner.statement + report.partner.statement + + primary + + + Carinin dövizli ekstresini çıkartmak için aşağıdaki butonları kullanınız. + + + + + + + + + + + + \ No newline at end of file diff --git a/altinkaya_excel_export/export_partner_currency_statement/res_partner.py b/altinkaya_excel_export/export_partner_currency_statement/res_partner.py new file mode 100644 index 00000000..50a12795 --- /dev/null +++ b/altinkaya_excel_export/export_partner_currency_statement/res_partner.py @@ -0,0 +1,8 @@ +from odoo import models, fields, api + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + has_secondary_curr = fields.Boolean(string='Dövizle çalışıyor', default=False) + secondary_curr_id = fields.Many2one('res.currency', string='Döviz birimi') diff --git a/altinkaya_excel_export/export_partner_currency_statement/res_partner_view.xml b/altinkaya_excel_export/export_partner_currency_statement/res_partner_view.xml new file mode 100644 index 00000000..3e3ea992 --- /dev/null +++ b/altinkaya_excel_export/export_partner_currency_statement/res_partner_view.xml @@ -0,0 +1,19 @@ + + + + + + partner.second.curr.form.view + res.partner + + + + + + + + + + + \ No newline at end of file diff --git a/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml b/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml new file mode 100644 index 00000000..05fd931b --- /dev/null +++ b/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml @@ -0,0 +1,48 @@ + + + + report.partner.statement + partner_statement_currency.xlsx + Cari Dövizli Ekstre Şablonu + Müşterilerin dövizli ekstresini excel olarak basan şablon. + + { + '__EXPORT__': { + 'Ekstre': { # sheet can be name (string) or index (integer) + '_HEAD_': { + 'B2': 'partner_id.name${value or ""}#{align=left;vert-align=center;style=text}', + 'H2': 'partner_id.tax_office_name${value or ""}#{align=full_center;style=text}', + 'J2': 'partner_id.vat${value or ""}#{align=full_center;style=text}', + 'L2': 'date_now${value.strftime("%d.%m.%Y") or ""}#{align=full_center;style=text}', + 'B3': 'partner_id.phone${value or ""}#{align=left;vert-align=center;style=text}', + 'B3': 'partner_id.phone${value or ""}#{align=left;vert-align=center;style=text}', + 'H6': '${"%s%.2f" % (object.partner_id.secondary_curr_id.symbol, object.sec_curr_total) or "%s0.00" (object.partner_id.secondary_curr_id.symbol)}#{align=right;style=text}', + 'I6': 'sec_curr_dc${value or ""}#{align=full_center;style=text}', + 'L6': '${"%s%.2f" % (object.default_currency.symbol, object.total) or "%s0.00" (object.default_currency.symbol)}#{align=right;style=text}', + 'M6': 'dc${value or ""}#{align=full_center;style=text}', + }, + 'results': { # prefix with _CONT_ to continue rows from previous row field + 'A5': 'sequence${value or ""}#{border=thin_border;align=center;style=text}', + 'B5': 'number${value or ""}#{border=thin_border;align=left;style=text}', + 'C5': 'date${value or ""}#{border=thin_border;align=left;style=text}', + 'D5': 'due_date${value or ""}#{border=thin_border;align=left;style=text}', + 'E5': 'description${value or ""}#{border=thin_border;align=left;style=text}', + 'F5': '${"%s%.2f" % (object.secondary_currency.symbol, object.sec_curr_debit) or "%s0.00" (object.secondary_currency.symbol)}#{border=thin_border;align=right;style=text}', + 'G5': '${"%s%.2f" % (object.secondary_currency.symbol, object.sec_curr_credit) or "%s0.00" (object.secondary_currency.symbol)}#{border=thin_border;align=right;style=text}', + 'H5': '${"%s%.2f" % (object.secondary_currency.symbol, object.sec_curr_balance) or "%s0.00" (object.secondary_currency.symbol)}#{border=thin_border;align=right;style=text}', + 'I5': 'sec_curr_dc${value or ""}#{border=thin_border;align=center;style=text}', + 'J5': '${"%s%.2f" % (object.primary_currency.symbol, object.debit) or "%s0.00" (object.primary_currency.symbol)}#{border=thin_border;align=right;style=text}', + 'K5': '${"%s%.2f" % (object.primary_currency.symbol, object.credit) or "%s0.00" (object.primary_currency.symbol)}#{border=thin_border;align=right;style=text}', + 'L5': '${"%s%.2f" % (object.primary_currency.symbol, object.balance) or "%s0.00" (object.primary_currency.symbol)}#{border=thin_border;align=right;style=text}', + 'M5': 'dc${value or ""}#{border=thin_border;align=center;style=text}', + }, + }, + }, + } + + + + + + + \ No newline at end of file From dd4be0c662849eb1a1437952e834a509fd111ccb Mon Sep 17 00:00:00 2001 From: yibudak Date: Fri, 4 Mar 2022 09:39:00 +0300 Subject: [PATCH 04/35] api.depends error fixes and new button for mrp.production --- .../export_account_invoice_xlsx/account_invoice_export.py | 1 - .../partner_statement_export.py | 1 - 2 files changed, 2 deletions(-) diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/account_invoice_export.py b/altinkaya_excel_export/export_account_invoice_xlsx/account_invoice_export.py index 1dcfd14a..dcce1901 100644 --- a/altinkaya_excel_export/export_account_invoice_xlsx/account_invoice_export.py +++ b/altinkaya_excel_export/export_account_invoice_xlsx/account_invoice_export.py @@ -18,7 +18,6 @@ class ReportAccountInvoice(models.TransientModel): ) @api.multi - @api.depends('results') def _get_invoices(self): selected_ids = self.env.context.get('active_ids', []) ids = self.env['account.invoice'].browse(selected_ids) diff --git a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py index 03aab3df..d7904ca6 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py +++ b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py @@ -43,7 +43,6 @@ def _default_comp_curr(self): ) @api.multi - @api.depends('results') def _get_lines(self): for rec in self: rec.results, rec.total, rec.sec_curr_total, rec.dc, rec.sec_curr_dc = self._get_statement_data( From 4c7e1e363604606a8bd0083636b95e4979e726f7 Mon Sep 17 00:00:00 2001 From: yibudak Date: Sat, 5 Mar 2022 10:35:08 +0300 Subject: [PATCH 05/35] new button for product and procurement button fix --- .../temp_partner_statement_currency.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml b/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml index 05fd931b..039e98c1 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml +++ b/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml @@ -14,8 +14,7 @@ 'H2': 'partner_id.tax_office_name${value or ""}#{align=full_center;style=text}', 'J2': 'partner_id.vat${value or ""}#{align=full_center;style=text}', 'L2': 'date_now${value.strftime("%d.%m.%Y") or ""}#{align=full_center;style=text}', - 'B3': 'partner_id.phone${value or ""}#{align=left;vert-align=center;style=text}', - 'B3': 'partner_id.phone${value or ""}#{align=left;vert-align=center;style=text}', + 'B3': '${object.partner_id.phone or object.partner_id.mobile}#{align=left;vert-align=center;style=text}', 'H6': '${"%s%.2f" % (object.partner_id.secondary_curr_id.symbol, object.sec_curr_total) or "%s0.00" (object.partner_id.secondary_curr_id.symbol)}#{align=right;style=text}', 'I6': 'sec_curr_dc${value or ""}#{align=full_center;style=text}', 'L6': '${"%s%.2f" % (object.default_currency.symbol, object.total) or "%s0.00" (object.default_currency.symbol)}#{align=right;style=text}', From e648116da4cb093b0e8c5d2cc5d80e868620750a Mon Sep 17 00:00:00 2001 From: yibudak Date: Sat, 5 Mar 2022 11:32:04 +0300 Subject: [PATCH 06/35] fixed partner statement report --- .../partner_statement_export.py | 13 +++--------- .../temp_partner_statement_currency.xml | 20 +++++++++---------- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py index d7904ca6..bf76182f 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py +++ b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py @@ -30,10 +30,6 @@ def _default_comp_curr(self): date_end = fields.Date('End Date', required=1, default=_default_date_end, store=True) date_now = fields.Date('Date', required=1, default=_default_date_now, store=True) partner_id = fields.Many2one('res.partner', string='Customer Name', default=_default_partner) - total = fields.Float('Balance', store=True) - dc = fields.Char('dc', store=True) - sec_curr_dc = fields.Char('sec_curr_dc', store=True) - sec_curr_total = fields.Float('Secondary Currency Balance', store=True) default_currency = fields.Many2one('res.currency', string='Currency', default=_default_comp_curr) results = fields.Many2many( comodel_name='partner.statement.lines', @@ -45,8 +41,7 @@ def _default_comp_curr(self): @api.multi def _get_lines(self): for rec in self: - rec.results, rec.total, rec.sec_curr_total, rec.dc, rec.sec_curr_dc = self._get_statement_data( - self.partner_id) + rec.results = self._get_statement_data(self.partner_id) @api.multi def _get_statement_data(self, partner_id): @@ -85,7 +80,7 @@ def _get_statement_data(self, partner_id): credit = (each_dict['credit'] - each_dict['debit']) if partner.has_secondary_curr: - move_date = datetime.strptime(str(each_dict['date']), '%Y-%m-%d').strftime('%d.%m.%Y') + move_date = each_dict['date'].strftime("%Y-%m-%d") cr.execute( "SELECT rate\ FROM res_currency_rate\ @@ -123,9 +118,7 @@ def _get_statement_data(self, partner_id): 'secondary_currency': partner.secondary_curr_id.id, 'primary_currency': currency_id.id}).id) - sec_curr_dc = sec_curr_balance > 0.01 and 'B' or 'A' - dc = balance > 0.01 and 'B' or 'A' - return statement_data, balance or 0.00, sec_curr_balance or 0.00, dc, sec_curr_dc + return statement_data class StatementLines(models.TransientModel): diff --git a/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml b/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml index 039e98c1..88123339 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml +++ b/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml @@ -15,10 +15,10 @@ 'J2': 'partner_id.vat${value or ""}#{align=full_center;style=text}', 'L2': 'date_now${value.strftime("%d.%m.%Y") or ""}#{align=full_center;style=text}', 'B3': '${object.partner_id.phone or object.partner_id.mobile}#{align=left;vert-align=center;style=text}', - 'H6': '${"%s%.2f" % (object.partner_id.secondary_curr_id.symbol, object.sec_curr_total) or "%s0.00" (object.partner_id.secondary_curr_id.symbol)}#{align=right;style=text}', - 'I6': 'sec_curr_dc${value or ""}#{align=full_center;style=text}', - 'L6': '${"%s%.2f" % (object.default_currency.symbol, object.total) or "%s0.00" (object.default_currency.symbol)}#{align=right;style=text}', - 'M6': 'dc${value or ""}#{align=full_center;style=text}', + 'H6': '${"%s%.2f" % (object.partner_id.secondary_curr_id.symbol, object.results[-1].sec_curr_total) or "%s0.00" % object.partner_id.secondary_curr_id.symbol}#{align=right;style=text}', + 'I6': '${object.results[-1].sec_curr_dc or ""}#{align=full_center;style=text}', + 'L6': '${"%s%.2f" % (object.default_currency.symbol, object.results[-1].total) or "%s0.00" % object.default_currency.symbol}#{align=right;style=text}', + 'M6': '${object.results[-1].dc or ""}#{align=full_center;style=text}', }, 'results': { # prefix with _CONT_ to continue rows from previous row field 'A5': 'sequence${value or ""}#{border=thin_border;align=center;style=text}', @@ -26,13 +26,13 @@ 'C5': 'date${value or ""}#{border=thin_border;align=left;style=text}', 'D5': 'due_date${value or ""}#{border=thin_border;align=left;style=text}', 'E5': 'description${value or ""}#{border=thin_border;align=left;style=text}', - 'F5': '${"%s%.2f" % (object.secondary_currency.symbol, object.sec_curr_debit) or "%s0.00" (object.secondary_currency.symbol)}#{border=thin_border;align=right;style=text}', - 'G5': '${"%s%.2f" % (object.secondary_currency.symbol, object.sec_curr_credit) or "%s0.00" (object.secondary_currency.symbol)}#{border=thin_border;align=right;style=text}', - 'H5': '${"%s%.2f" % (object.secondary_currency.symbol, object.sec_curr_balance) or "%s0.00" (object.secondary_currency.symbol)}#{border=thin_border;align=right;style=text}', + 'F5': '${"%s%.2f" % (object.secondary_currency.symbol, object.sec_curr_debit) or "%s0.00" % object.secondary_currency.symbol}#{border=thin_border;align=right;style=text}', + 'G5': '${"%s%.2f" % (object.secondary_currency.symbol, object.sec_curr_credit) or "%s0.00" % object.secondary_currency.symbol}#{border=thin_border;align=right;style=text}', + 'H5': '${"%s%.2f" % (object.secondary_currency.symbol, object.sec_curr_balance) or "%s0.00" % object.secondary_currency.symbol}#{border=thin_border;align=right;style=text}', 'I5': 'sec_curr_dc${value or ""}#{border=thin_border;align=center;style=text}', - 'J5': '${"%s%.2f" % (object.primary_currency.symbol, object.debit) or "%s0.00" (object.primary_currency.symbol)}#{border=thin_border;align=right;style=text}', - 'K5': '${"%s%.2f" % (object.primary_currency.symbol, object.credit) or "%s0.00" (object.primary_currency.symbol)}#{border=thin_border;align=right;style=text}', - 'L5': '${"%s%.2f" % (object.primary_currency.symbol, object.balance) or "%s0.00" (object.primary_currency.symbol)}#{border=thin_border;align=right;style=text}', + 'J5': '${"%s%.2f" % (object.primary_currency.symbol, object.debit) or "%s0.00" % object.primary_currency.symbol}#{border=thin_border;align=right;style=text}', + 'K5': '${"%s%.2f" % (object.primary_currency.symbol, object.credit) or "%s0.00" % object.primary_currency.symbol}#{border=thin_border;align=right;style=text}', + 'L5': '${"%s%.2f" % (object.primary_currency.symbol, object.balance) or "%s0.00" % object.primary_currency.symbol}#{border=thin_border;align=right;style=text}', 'M5': 'dc${value or ""}#{border=thin_border;align=center;style=text}', }, }, From 9e12beca6740b1cf43f312b2a0d342e8d693d38f Mon Sep 17 00:00:00 2001 From: yibudak Date: Fri, 11 Mar 2022 14:06:12 +0300 Subject: [PATCH 07/35] new modules --- altinkaya_excel_export/__manifest__.py | 1 - .../__init__.py | 3 +-- .../res_partner.py | 8 -------- .../res_partner_view.xml | 19 ------------------- 4 files changed, 1 insertion(+), 30 deletions(-) delete mode 100644 altinkaya_excel_export/export_partner_currency_statement/res_partner.py delete mode 100644 altinkaya_excel_export/export_partner_currency_statement/res_partner_view.xml diff --git a/altinkaya_excel_export/__manifest__.py b/altinkaya_excel_export/__manifest__.py index d10f5e42..aa637e2d 100644 --- a/altinkaya_excel_export/__manifest__.py +++ b/altinkaya_excel_export/__manifest__.py @@ -25,7 +25,6 @@ # Partner Statement 'export_partner_currency_statement/temp_partner_statement_currency.xml', 'export_partner_currency_statement/reports.xml', - 'export_partner_currency_statement/res_partner_view.xml' ], 'installable': True, } diff --git a/altinkaya_excel_export/export_partner_currency_statement/__init__.py b/altinkaya_excel_export/export_partner_currency_statement/__init__.py index 92d6debf..6ce31394 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/__init__.py +++ b/altinkaya_excel_export/export_partner_currency_statement/__init__.py @@ -1,2 +1 @@ -from . import partner_statement_export -from . import res_partner \ No newline at end of file +from . import partner_statement_export \ No newline at end of file diff --git a/altinkaya_excel_export/export_partner_currency_statement/res_partner.py b/altinkaya_excel_export/export_partner_currency_statement/res_partner.py deleted file mode 100644 index 50a12795..00000000 --- a/altinkaya_excel_export/export_partner_currency_statement/res_partner.py +++ /dev/null @@ -1,8 +0,0 @@ -from odoo import models, fields, api - - -class ResPartner(models.Model): - _inherit = 'res.partner' - - has_secondary_curr = fields.Boolean(string='Dövizle çalışıyor', default=False) - secondary_curr_id = fields.Many2one('res.currency', string='Döviz birimi') diff --git a/altinkaya_excel_export/export_partner_currency_statement/res_partner_view.xml b/altinkaya_excel_export/export_partner_currency_statement/res_partner_view.xml deleted file mode 100644 index 3e3ea992..00000000 --- a/altinkaya_excel_export/export_partner_currency_statement/res_partner_view.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - partner.second.curr.form.view - res.partner - - - - - - - - - - - \ No newline at end of file From 6f5848812a425a549343eda8955f51908d702819 Mon Sep 17 00:00:00 2001 From: yibudak Date: Fri, 18 Mar 2022 11:50:46 +0300 Subject: [PATCH 08/35] zirve xlsx bug fix --- .../temp_zirve_masraf_fatura.xml | 37 ++++++++---------- .../zirve_masraf_fatura.xlsx | Bin 5339 -> 5773 bytes 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml index 08b2edb3..aba3eb18 100644 --- a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml +++ b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml @@ -10,26 +10,23 @@ '__EXPORT__': { 'Fatura': { # sheet can be name (string) or index (integer) 'results': { # prefix with _CONT_ to continue rows from previous row field - 'A2': 'date_invoice${value or ""}#{align=left;style=date}', - 'B2': 'number${value or ""}#{align=left;style=text}', - 'C2': 'journal_id.name${value or ""}#{align=left;style=text}', - 'D2': 'z_tevkifatli_mi${"Yes" if value else "No"}#{align=left;style=text}', - 'E2': '${"%s" % object.journal_id.name or ""}#{align=left;style=text}', - 'F2': 'partner_id.name${value or ""}#{align=left;style=text}', - 'G2': '${"\'%s" % (object.partner_id.vat or "")}#{align=left;style=text}', - 'H2': 'partner_id.vat${value or ""}#{align=left;style=text}', - 'I2': 'amount_untaxed${"%.2f" % value or ""}#{align=left;style=text}', - 'J2': '${"" or ""}#{align=left;style=text}', - 'K2': '${"" or ""}#{align=left;style=text}', - 'L2': '${"" or ""}#{align=left;style=text}', - 'M2': '${"" or ""}#{align=left;style=text}', - 'N2': '${"" or ""}#{align=left;style=text}', - 'O2': '${"" or ""}#{align=left;style=text}', - 'P2': 'amount_untaxed${"\'%.2f" % value or ""}#{align=left;style=text}', - 'Q2': '${"" or ""}#{align=left;style=text}', - 'R2': 'amount_tax${"\'%.2f" % value or ""}#{align=left;style=text}', - 'S2': '${"" or ""}#{align=left;style=text}', - 'T2': 'amount_total${"\'%.2f" % value or ""}#{align=left;style=text}', + 'A2': '${object.date_invoice.strftime("%d.%m.%Y") or ""}#{border=thin_border;align=left;style=date}', + 'B2': 'number${value or ""}#{border=thin_border;align=left;style=text}', + 'C2': 'journal_id.name${value or ""}#{border=thin_border;align=left;style=text}', + 'D2': 'partner_id.name${value or ""}#{border=thin_border;align=left;style=text}', + 'E2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', + 'F2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', + 'G2': '${"%.2f" % sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9) or 0.0}#{border=thin_border;align=left;style=text}', + 'H2': '${"%.2f" % sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9) or 0.0}#{border=thin_border;align=left;style=text}', + 'I2': '${"%.2f" % sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19) or 0.0}#{border=thin_border;align=left;style=text}', + 'J2': '${"%.2f" % sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19) or 0.0}#{border=thin_border;align=left;style=text}', + + 'K2': 'amount_untaxed${"%.2f" % value or ""}#{border=thin_border;align=left;style=text}', + 'L2': 'amount_tax${"%.2f" % value or ""}#{border=thin_border;align=left;style=text}', + 'M2': '${"%.f" % (object.amount_tax / object.amount_untaxed * 100) if object.amount_tax > 0.0 else 0}#{border=thin_border;align=left;style=text}', + 'N2': '${"\'%s" % (object.partner_id.z_receivable_export or "")}#{border=thin_border;align=left;style=text}', + 'O2': 'partner_id.z_receivable_export${value or ""}#{border=thin_border;align=left;style=text}', + 'P2': 'currency_id.name${value or ""}#{border=thin_border;align=left;style=text}', }, }, }, diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/zirve_masraf_fatura.xlsx b/altinkaya_excel_export/export_account_invoice_xlsx/zirve_masraf_fatura.xlsx index 58d07c9ab74a1bf24520ce10832470ead5b8f1bb..a60691c0aca2f98b0f4d9bc5cf91308de51ac334 100644 GIT binary patch delta 3889 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 delta 3412 zcmZ8kby(EP_g-r0Sl9(=q+J7?Z`Pn_T^ABCP49zGOAL_`ECQBN_fq=4bz|2C?5 za71zcvQP*-7QhtYo^=BnhRr(rM0aly)%W&}J7y75)qAb7iyO#U#d8&Wo@Kbr2yUyjwlw6S zxY;4O{O~i*Bwc0^oiwkaAtsak;&eAQ@M~UfZLlF-ogeNf8)XL%Ycj z!s={C0LQ!M@5khMnTHw)7Tzo0x9z7Z!pl6W;{OCkR)Z0lGTS_(4ayUCG8>Tf$Wnhn zJLky&b6;F@qC))T5Dve4syCF3tfv%qx|!WOqza|RxGOn*t#j|EE;{()mM1*DvK5H(%9gdC{A%68cEM1m_>tzdHbb1 zDRG4hKTC}sUcAFfDZ8@qhH)Nq*JigjPrDy^=4;qoKW?RRY@W;wR~3pG_2SWQ5VLY% z$2uXVVoMdNpH)LizmPL#4crCiu{U%$2~@F_<{z=QcptU%0gGdHCbe`CYD5`sbic^Tpm*<`w_d z6DzdsnT&r~^Sf2b*KIX7&)e(fk6rv*i7!VGvlpv-n47K=LbVSbe|psF-NG2V-6R<) z3!R$HCwf*z=TYM@cNndwQ@`PxK)f0vVm{uZ`w;IV7KOh%aXFc^g7+mrz=?}%MPuS| zJox3j+DnDK^uC6yDQzqaxPiMd9NG8En4G1=mNh z>vK$`h|8(lEbe(9KZ3i(%AH4ZJkqJpgVWFUeV?M$2%!CJCtb(Ny0Q~l$HjRUm#H!= zc8iXEQx}C%W$elAj;3!}02??{S~9+>Vvj8xn$8R&m^d>wX=}zHNJ%*lshFTYVr)Rh&2%qH5H-c5SO)9fd&(6ee*3 zXVCz>Q`xa|3(Nhyd2IRoP2Cz&b;WC)2PAw^ssY7z z9L{Zml{Q(@_!%muDFHJlsbllW-1ue54&i(8t`Ffdgj`n66NJyG63fIq8Z8u}(m7LL zue)OWsUZ)N^De&WaC3MdFR6u1jUe~{XO|i0J)-&ey)Ug1QN2$J4q}6nUk`N0Dnpi} z)#{c7b_t}`p1N+NR-Sz8h4h8VWY6r^K5KKj7h<_Um*#|s)~{uvjg=KZEo_yDeiut= z=QGwSChDxaVTvv!S{-=H_~WVI-pzN!WX9r#wI`o{+D|2S-Au;e)NyTrwXI=%GS{ z53M8B`jDpeOcy|{ayHWX$&hEAKfaTGE#tKhp%tD;{KxtYtZa)BH@q6vOtVYoAc>E) z)>!Qs@{z&pVErF3gD)zYTmf(s{ZCv!t~`=*n8N{iGrq>j1Q0&L>F43pe;tqodety6(eC&A9Iq%ao0I&4AI5vitild=M*Gn z)FLX+P-V%;MvibNON@9Ad;qH}P2V9;jHr2fYPNkfpHZHgu^c-b1l}1OyNJD*8ToO1 z5&LY@;lIRN)Hfy`*V|mL6`{@M{!J&tiMXA$E z4g8YCwMm_=h$DfYsyWEazAPgQqp84}VLlpjR6FRZJ6j{~iC_lAW5-O=)R{i1<7WG8 zS>2}*D#fsP>{FbR>~j(HCT$1Y8n%*JgKg~|L4K(Oa*XYRCs<#?Nx8ASB5`G2O)XqR z^r%{g4~@)y296qrA9ubBFa;Fn8J3@u^U)cIH=xa$*?w9VyHgKTRQZ(sQlB-bk+e9a znBw*|OtYqX~d%Ls%Ut(nWnW(iShu0i=dnqAK$8S#iYd}I|4DX{JYP`&t?-f_jRZO%-l!z z`=baHo;8X1MlK#KY6GpOFGPOs1@|bMqU~(IR$k+2!z8KN(^}_HIy3z^Kzl8@IYDh% zh5%cmOw(V-Nk|maDTLcK`Vcsnulo;U4Rm@nV=PnUok zFD8IomT@#mv~hk=rH6ifM*VeGNSpC#B+Ow+L2E6pCj{Ww)A3EG@ugK0hczF5s|e3) z?8b4lhOeI>CEP%)2^A1K=8!_#QGl|=XQ;|SBnE7Sex3&V^D^O!ae)rdIKjcU2lX?4BPcceTAThMNV_ zp>54yl$=LY=$A5no9{eaaG?h9ci76;`3^~`O`qHl9m@W0l!`g{9;G5V{|)RM)Wy zJP_09rmt~RwIG5=Lp#VZ;O$p?BXormX(-_Sp)zAQoFoE3P)mBb-NDN&%!*~Up4>g^|u#qZt_Y+kZ|%k zh&(5fd&GRr>7CqK2I*_)b_w>47n|B)N3{Nwn9g`%_V}^x?(Bl^bQ}Z8L`5{-K(!%9 z3ZoT8bUWkc*17iPq6FQy(gP@|>(@0ta#|*3aMNTK?$BQxwu)~8i!)1t{$M$wb|gp5 zzT{>o^midGMl&MD=90x zhdP*Yt1OaI(4J|^DSMjTK-4 zwPJrZ;!)sk4+Fo++uaKA`Pc6PLIk{|yE&Ws$`O2n6!K0_6X}_`5r( zE~C!)zxS;U75}?C2!={i{B9Wj5m=}`s36<#r9X+{+Ev7Vh7uSR2WCJC!^r*)atFqM zTTF_ICuf4|Y2n~PLH~3lf4>KM}614l>j$82ev4{ds|qe>q*JKrO>qEq|x;=fSA{ z<LJ}dJcX@2JcN8)UH+R#!qKvX*%c%vSIl=se1D8hDwGW^7dV3Y_uBse DaWNaE From fa5baf5eea65058307604ffaa5804ba417b50774 Mon Sep 17 00:00:00 2001 From: yibudak Date: Fri, 18 Mar 2022 14:25:56 +0300 Subject: [PATCH 09/35] foreign currency to turkish lira --- .../temp_zirve_masraf_fatura.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml index aba3eb18..cdde2339 100644 --- a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml +++ b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml @@ -16,13 +16,13 @@ 'D2': 'partner_id.name${value or ""}#{border=thin_border;align=left;style=text}', 'E2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', 'F2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', - 'G2': '${"%.2f" % sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9) or 0.0}#{border=thin_border;align=left;style=text}', - 'H2': '${"%.2f" % sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9) or 0.0}#{border=thin_border;align=left;style=text}', - 'I2': '${"%.2f" % sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19) or 0.0}#{border=thin_border;align=left;style=text}', - 'J2': '${"%.2f" % sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19) or 0.0}#{border=thin_border;align=left;style=text}', + 'G2': '${"%.2f" % (1.0/object.custom_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=text}', + 'H2': '${"%.2f" % (1.0/object.custom_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=text}', + 'I2': '${"%.2f" % (1.0/object.custom_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=text}', + 'J2': '${"%.2f" % (1.0/object.custom_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=text}', - 'K2': 'amount_untaxed${"%.2f" % value or ""}#{border=thin_border;align=left;style=text}', - 'L2': 'amount_tax${"%.2f" % value or ""}#{border=thin_border;align=left;style=text}', + 'K2': 'amount_untaxed${"%.2f" % (1.0/object.custom_rate * value) or ""}#{border=thin_border;align=left;style=text}', + 'L2': 'amount_tax${"%.2f" % (1.0/object.custom_rate * value) or ""}#{border=thin_border;align=left;style=text}', 'M2': '${"%.f" % (object.amount_tax / object.amount_untaxed * 100) if object.amount_tax > 0.0 else 0}#{border=thin_border;align=left;style=text}', 'N2': '${"\'%s" % (object.partner_id.z_receivable_export or "")}#{border=thin_border;align=left;style=text}', 'O2': 'partner_id.z_receivable_export${value or ""}#{border=thin_border;align=left;style=text}', From 45fc7b81ef9cacb5bdec880bd3d3288e993e632c Mon Sep 17 00:00:00 2001 From: yibudak Date: Fri, 18 Mar 2022 14:46:31 +0300 Subject: [PATCH 10/35] changed field on calculation --- .../temp_zirve_masraf_fatura.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml index cdde2339..d39dd62c 100644 --- a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml +++ b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml @@ -16,10 +16,10 @@ 'D2': 'partner_id.name${value or ""}#{border=thin_border;align=left;style=text}', 'E2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', 'F2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', - 'G2': '${"%.2f" % (1.0/object.custom_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=text}', - 'H2': '${"%.2f" % (1.0/object.custom_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=text}', - 'I2': '${"%.2f" % (1.0/object.custom_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=text}', - 'J2': '${"%.2f" % (1.0/object.custom_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=text}', + 'G2': '${"%.2f" % (object.currency_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=text}', + 'H2': '${"%.2f" % (object.currency_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=text}', + 'I2': '${"%.2f" % (object.currency_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=text}', + 'J2': '${"%.2f" % (object.currency_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=text}', 'K2': 'amount_untaxed${"%.2f" % (1.0/object.custom_rate * value) or ""}#{border=thin_border;align=left;style=text}', 'L2': 'amount_tax${"%.2f" % (1.0/object.custom_rate * value) or ""}#{border=thin_border;align=left;style=text}', From cd4923ff8b63a7ba1d30c4d7408875abd8803601 Mon Sep 17 00:00:00 2001 From: yibudak Date: Fri, 18 Mar 2022 14:51:21 +0300 Subject: [PATCH 11/35] added currency_rate on total --- .../export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml index d39dd62c..5fee34c9 100644 --- a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml +++ b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml @@ -21,8 +21,8 @@ 'I2': '${"%.2f" % (object.currency_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=text}', 'J2': '${"%.2f" % (object.currency_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=text}', - 'K2': 'amount_untaxed${"%.2f" % (1.0/object.custom_rate * value) or ""}#{border=thin_border;align=left;style=text}', - 'L2': 'amount_tax${"%.2f" % (1.0/object.custom_rate * value) or ""}#{border=thin_border;align=left;style=text}', + 'K2': 'amount_untaxed${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=text}', + 'L2': 'amount_tax${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=text}', 'M2': '${"%.f" % (object.amount_tax / object.amount_untaxed * 100) if object.amount_tax > 0.0 else 0}#{border=thin_border;align=left;style=text}', 'N2': '${"\'%s" % (object.partner_id.z_receivable_export or "")}#{border=thin_border;align=left;style=text}', 'O2': 'partner_id.z_receivable_export${value or ""}#{border=thin_border;align=left;style=text}', From 575494aaea824b69b8d78b0033f826b3e254c6cb Mon Sep 17 00:00:00 2001 From: yibudak Date: Sat, 19 Mar 2022 09:18:49 +0300 Subject: [PATCH 12/35] added supplier invoice export --- altinkaya_excel_export/__manifest__.py | 1 + .../gelir_fatura.xlsx | Bin 0 -> 5773 bytes .../export_account_invoice_xlsx/reports.xml | 21 +++++--- .../temp_gelir_fatura.xml | 40 ++++++++++++++++ .../temp_zirve_masraf_fatura.xml | 45 +++++++++++++----- .../zirve_masraf_fatura.xlsx | Bin 5773 -> 5337 bytes 6 files changed, 87 insertions(+), 20 deletions(-) create mode 100644 altinkaya_excel_export/export_account_invoice_xlsx/gelir_fatura.xlsx create mode 100644 altinkaya_excel_export/export_account_invoice_xlsx/temp_gelir_fatura.xml diff --git a/altinkaya_excel_export/__manifest__.py b/altinkaya_excel_export/__manifest__.py index aa637e2d..35d10db9 100644 --- a/altinkaya_excel_export/__manifest__.py +++ b/altinkaya_excel_export/__manifest__.py @@ -21,6 +21,7 @@ 'export_purchase_order_xlsx/temp_rfq_tr.xml', # Account 'export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml', + 'export_account_invoice_xlsx/temp_gelir_fatura.xml', 'export_account_invoice_xlsx/reports.xml', # Partner Statement 'export_partner_currency_statement/temp_partner_statement_currency.xml', diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/gelir_fatura.xlsx b/altinkaya_excel_export/export_account_invoice_xlsx/gelir_fatura.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a60691c0aca2f98b0f4d9bc5cf91308de51ac334 GIT binary patch literal 5773 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 Tw3RV1ZlEtYbVZc- Faturaları, Zirve Yazılım sistemine uygun şekilde çıktı almak için aşağıdaki butonları kullanınız. - + + + + ('gname', '=', False)]}"/> \ No newline at end of file diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/temp_gelir_fatura.xml b/altinkaya_excel_export/export_account_invoice_xlsx/temp_gelir_fatura.xml new file mode 100644 index 00000000..1d81f194 --- /dev/null +++ b/altinkaya_excel_export/export_account_invoice_xlsx/temp_gelir_fatura.xml @@ -0,0 +1,40 @@ + + + + report.account.invoice + gelir_fatura.xlsx + Gelir Fatura Şablonu + Zirve Muhasebe programına uygun biçimde faturaların içeri aktarılabilmesini sağlayan Excel şablonu. + + { + '__EXPORT__': { + 'Fatura': { # sheet can be name (string) or index (integer) + 'results': { # prefix with _CONT_ to continue rows from previous row field + 'A2': '${object.date_invoice.strftime("%d.%m.%Y") or ""}#{border=thin_border;align=left;style=date}', + 'B2': 'number${value or ""}#{border=thin_border;align=left;style=text}', + 'C2': 'journal_id.name${value or ""}#{border=thin_border;align=left;style=text}', + 'D2': 'partner_id.name${value or ""}#{border=thin_border;align=left;style=text}', + 'E2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', + 'F2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', + 'G2': '${"%.2f" % (object.currency_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=text}', + 'H2': '${"%.2f" % (object.currency_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=text}', + 'I2': '${"%.2f" % (object.currency_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=text}', + 'J2': '${"%.2f" % (object.currency_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=text}', + + 'K2': 'amount_untaxed${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=text}', + 'L2': 'amount_tax${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=text}', + 'M2': '${"%.f" % (object.amount_tax / object.amount_untaxed * 100) if object.amount_tax > 0.0 else 0}#{border=thin_border;align=left;style=text}', + 'N2': '${"\'%s" % (object.partner_id.z_receivable_export or "")}#{border=thin_border;align=left;style=text}', + 'O2': 'partner_id.z_receivable_export${value or ""}#{border=thin_border;align=left;style=text}', + 'P2': 'currency_id.name${value or ""}#{border=thin_border;align=left;style=text}', + }, + }, + }, + } + + + + + + + \ No newline at end of file diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml index 5fee34c9..8941c37f 100644 --- a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml +++ b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml @@ -13,20 +13,39 @@ 'A2': '${object.date_invoice.strftime("%d.%m.%Y") or ""}#{border=thin_border;align=left;style=date}', 'B2': 'number${value or ""}#{border=thin_border;align=left;style=text}', 'C2': 'journal_id.name${value or ""}#{border=thin_border;align=left;style=text}', - 'D2': 'partner_id.name${value or ""}#{border=thin_border;align=left;style=text}', - 'E2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', - 'F2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', - 'G2': '${"%.2f" % (object.currency_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=text}', - 'H2': '${"%.2f" % (object.currency_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=text}', - 'I2': '${"%.2f" % (object.currency_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=text}', - 'J2': '${"%.2f" % (object.currency_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=text}', + 'D2': 'z_tevkifatli_mi${"Yes" if value else "No"}#{border=thin_border;align=left;style=text}', + 'E2': '${"Tevkifatlı Alış" if object.z_tevkifatli_mi else object.journal_id.name}#{border=thin_border;align=left;style=text}', + 'F2': 'partner_id.name${value or ""}#{border=thin_border;align=left;style=text}', + 'G2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', + 'H2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', + 'I2': 'amount_untaxed${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=text}', + 'J2': '${"\'%s" % (object.partner_id.z_payable_export or "")}#{border=thin_border;align=left;style=text}', + + 'K2': 'partner_id.z_payable_export${value or ""}#{border=thin_border;align=left;style=text}', + 'L2': '${" ".join("* %s ^" % x.account_id.code for x in object.invoice_line_ids)}#{border=thin_border;align=left;style=text}', + 'M2': '${object.invoice_line_ids[0].account_id.code if object.invoice_line_ids else ""}#{border=thin_border;align=left;style=text}', + + 'N2': '${"".join("\'%s" % tax.account_id.code for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=text}', + 'O2': '${"".join("%s" % tax.account_id.code for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=text}', + 'P2': '${"".join("\'%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=text}', + 'Q2': '${"".join("%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=text}', + 'R2': '${"".join("\'%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=text}', + 'S2': '${"".join("%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=text}', + + 'T2': '${"".join("\'%s" % tax.account_id.code for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=text}', + 'U2': '${"".join("%s" % tax.account_id.code for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=text}', + 'V2': '${"".join("\'%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=text}', + 'W2': '${"".join("%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=text}', + 'X2': '${"".join("\'%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=text}', + 'Y2': '${"".join("%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=text}', + + 'Z2': '${"".join("\'%s" % tax.account_id.code for index, tax in enumerate(object.tax_line_ids) if index == 2) or ""}#{border=thin_border;align=left;style=text}', + 'AA2': '${"".join("%s" % tax.account_id.code for index, tax in enumerate(object.tax_line_ids) if index == 2) or ""}#{border=thin_border;align=left;style=text}', + 'AB2': '${"".join("\'%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 2) or ""}#{border=thin_border;align=left;style=text}', + 'AC2': '${"".join("%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 2) or ""}#{border=thin_border;align=left;style=text}', + 'AD2': '${"".join("\'%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 2) or ""}#{border=thin_border;align=left;style=text}', + 'AE2': '${"".join("%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 2) or ""}#{border=thin_border;align=left;style=text}', - 'K2': 'amount_untaxed${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=text}', - 'L2': 'amount_tax${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=text}', - 'M2': '${"%.f" % (object.amount_tax / object.amount_untaxed * 100) if object.amount_tax > 0.0 else 0}#{border=thin_border;align=left;style=text}', - 'N2': '${"\'%s" % (object.partner_id.z_receivable_export or "")}#{border=thin_border;align=left;style=text}', - 'O2': 'partner_id.z_receivable_export${value or ""}#{border=thin_border;align=left;style=text}', - 'P2': 'currency_id.name${value or ""}#{border=thin_border;align=left;style=text}', }, }, }, diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/zirve_masraf_fatura.xlsx b/altinkaya_excel_export/export_account_invoice_xlsx/zirve_masraf_fatura.xlsx index a60691c0aca2f98b0f4d9bc5cf91308de51ac334..38cc3d646a9f4da82b84e20e4135ea57609520ab 100644 GIT binary patch delta 3393 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 delta 3776 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 Date: Wed, 23 Mar 2022 11:34:07 +0300 Subject: [PATCH 13/35] changed field to supplier invoice number --- .../export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml index 8941c37f..8c3e0a5e 100644 --- a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml +++ b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml @@ -11,7 +11,7 @@ 'Fatura': { # sheet can be name (string) or index (integer) 'results': { # prefix with _CONT_ to continue rows from previous row field 'A2': '${object.date_invoice.strftime("%d.%m.%Y") or ""}#{border=thin_border;align=left;style=date}', - 'B2': 'number${value or ""}#{border=thin_border;align=left;style=text}', + 'B2': 'supplier_invoice_number${value or ""}#{border=thin_border;align=left;style=text}', 'C2': 'journal_id.name${value or ""}#{border=thin_border;align=left;style=text}', 'D2': 'z_tevkifatli_mi${"Yes" if value else "No"}#{border=thin_border;align=left;style=text}', 'E2': '${"Tevkifatlı Alış" if object.z_tevkifatli_mi else object.journal_id.name}#{border=thin_border;align=left;style=text}', From 22544d45161b87bffa2e9faff24d39af209a54c1 Mon Sep 17 00:00:00 2001 From: yibudak Date: Sat, 26 Mar 2022 22:29:19 +0300 Subject: [PATCH 14/35] currency statement report updated --- .../partner_statement_currency.xlsx | Bin 18839 -> 18856 bytes .../partner_statement_export.py | 12 +++++++----- .../temp_partner_statement_currency.xml | 13 +++++++------ 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency.xlsx b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency.xlsx index 1aeda1dcc9bb1c7f8cfd65c2fab92adcdc0aea13..5ecc27c0052167a632171c65aa04328d785b606c 100644 GIT binary patch delta 5752 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 delta 5827 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 NxvUFP2Xr=i{{RlD->U!s diff --git a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py index bf76182f..d6360a7c 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py +++ b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py @@ -47,6 +47,7 @@ def _get_lines(self): def _get_statement_data(self, partner_id): cr = self.env.cr statement_data = [] + diff_inv_journal = self.env['account.journal'].search([('code', '=', 'KFARK')], limit=1) balance, sec_curr_balance, seq = 0.00, 0.00, 0 start_date = self.date_start partner = partner_id @@ -56,7 +57,7 @@ def _get_statement_data(self, partner_id): if not partner.has_secondary_curr: raise UserError(_( 'Bu müşteri için dövizli ekstre çıkartamazsınız. Muhasebe bölümünden "Dövizle Çalışıyor" alanını aktif ediniz')) - cr.execute('SELECT aj.name as journal, l.date_maturity as due_date, l.date, am.name, am.state, move_id, SUM(l.debit) AS debit, SUM(l.credit) AS credit,\ + cr.execute('SELECT aj.id as journal_id, aj.name as journal, l.date_maturity as due_date, l.date, am.name, am.state, move_id, SUM(l.debit) AS debit, SUM(l.credit) AS credit,\ l.amount_currency as amount_currency,l.currency_id as currency_id,l.company_currency_id as company_currency_id\ FROM account_move_line AS l \ LEFT JOIN account_account a ON (l.account_id=a.id) \ @@ -64,12 +65,13 @@ def _get_statement_data(self, partner_id): LEFT JOIN account_journal aj ON (am.journal_id=aj.id) \ LEFT JOIN account_account_type at ON (a.user_type_id =at.id) \ WHERE (l.date BETWEEN %s AND %s) AND l.partner_id = '+ str(partner.commercial_partner_id.id) + ' AND at.type IN ' + str(move_type) + - 'GROUP BY aj.name,move_id,am.name,am.state,l.date,l.date_maturity ,l.amount_currency,l.currency_id,l.company_currency_id\ + 'GROUP BY aj.id,aj.name,move_id,am.name,am.state,l.date,l.date_maturity ,l.amount_currency,l.currency_id,l.company_currency_id\ ORDER BY l.date , l.currency_id ',(str(start_date),str(end_date))) for each_dict in self.env.cr.dictfetchall(): seq += 1 balance = (each_dict['debit'] - each_dict['credit']) + balance debit = 0.0 + rate = 1.0 credit = 0.0 sec_curr_debit = 0.00 sec_curr_credit = 0.00 @@ -79,7 +81,7 @@ def _get_statement_data(self, partner_id): else: credit = (each_dict['credit'] - each_dict['debit']) - if partner.has_secondary_curr: + if partner.has_secondary_curr and each_dict['journal_id'] != diff_inv_journal.id: move_date = each_dict['date'].strftime("%Y-%m-%d") cr.execute( "SELECT rate\ @@ -89,8 +91,6 @@ def _get_statement_data(self, partner_id): ORDER BY name desc LIMIT 1", (partner.secondary_curr_id.id, move_date)) if cr.rowcount: rate = cr.fetchall()[0][0] - else: - rate = 1.00 sec_curr_debit = debit * rate sec_curr_credit = credit * rate @@ -109,6 +109,7 @@ def _get_statement_data(self, partner_id): 'credit': credit, 'sec_curr_debit': sec_curr_debit, 'sec_curr_credit': sec_curr_credit, + 'currency_rate': 1/rate, 'sec_curr_balance': abs(sec_curr_balance) or 0.00, 'sec_curr_dc': sec_curr_balance > 0.01 and 'B' or 'A', 'balance': abs(balance) or 0.0, @@ -132,6 +133,7 @@ class StatementLines(models.TransientModel): debit = fields.Float('Debit') credit = fields.Float('Credit') balance = fields.Float('Balance') + currency_rate = fields.Float('Currency Rate') sec_curr_debit = fields.Float('Secondary Currency Debit') sec_curr_credit = fields.Float('Secondary Currency Credit') sec_curr_balance = fields.Float('Secondary Currency Balance') diff --git a/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml b/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml index 88123339..6c6be531 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml +++ b/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml @@ -17,8 +17,8 @@ 'B3': '${object.partner_id.phone or object.partner_id.mobile}#{align=left;vert-align=center;style=text}', 'H6': '${"%s%.2f" % (object.partner_id.secondary_curr_id.symbol, object.results[-1].sec_curr_total) or "%s0.00" % object.partner_id.secondary_curr_id.symbol}#{align=right;style=text}', 'I6': '${object.results[-1].sec_curr_dc or ""}#{align=full_center;style=text}', - 'L6': '${"%s%.2f" % (object.default_currency.symbol, object.results[-1].total) or "%s0.00" % object.default_currency.symbol}#{align=right;style=text}', - 'M6': '${object.results[-1].dc or ""}#{align=full_center;style=text}', + 'K6': '${"%s%.2f" % (object.default_currency.symbol, object.results[-1].total) or "%s0.00" % object.default_currency.symbol}#{align=right;style=text}', + 'N6': '${object.results[-1].dc or ""}#{align=full_center;style=text}', }, 'results': { # prefix with _CONT_ to continue rows from previous row field 'A5': 'sequence${value or ""}#{border=thin_border;align=center;style=text}', @@ -30,10 +30,11 @@ 'G5': '${"%s%.2f" % (object.secondary_currency.symbol, object.sec_curr_credit) or "%s0.00" % object.secondary_currency.symbol}#{border=thin_border;align=right;style=text}', 'H5': '${"%s%.2f" % (object.secondary_currency.symbol, object.sec_curr_balance) or "%s0.00" % object.secondary_currency.symbol}#{border=thin_border;align=right;style=text}', 'I5': 'sec_curr_dc${value or ""}#{border=thin_border;align=center;style=text}', - 'J5': '${"%s%.2f" % (object.primary_currency.symbol, object.debit) or "%s0.00" % object.primary_currency.symbol}#{border=thin_border;align=right;style=text}', - 'K5': '${"%s%.2f" % (object.primary_currency.symbol, object.credit) or "%s0.00" % object.primary_currency.symbol}#{border=thin_border;align=right;style=text}', - 'L5': '${"%s%.2f" % (object.primary_currency.symbol, object.balance) or "%s0.00" % object.primary_currency.symbol}#{border=thin_border;align=right;style=text}', - 'M5': 'dc${value or ""}#{border=thin_border;align=center;style=text}', + 'J5': '${"%.2f" % object.currency_rate or 1.00}#{border=thin_border;align=right;style=text}', + 'K5': '${"%s%.2f" % (object.primary_currency.symbol, object.debit) or "%s0.00" % object.primary_currency.symbol}#{border=thin_border;align=right;style=text}', + 'L5': '${"%s%.2f" % (object.primary_currency.symbol, object.credit) or "%s0.00" % object.primary_currency.symbol}#{border=thin_border;align=right;style=text}', + 'M5': '${"%s%.2f" % (object.primary_currency.symbol, object.balance) or "%s0.00" % object.primary_currency.symbol}#{border=thin_border;align=right;style=text}', + 'N5': 'dc${value or ""}#{border=thin_border;align=center;style=text}', }, }, }, From 80af3647e126b8c9f247b13a9067309c978f9d95 Mon Sep 17 00:00:00 2001 From: yibudak Date: Sun, 27 Mar 2022 22:59:28 +0300 Subject: [PATCH 15/35] partner statement in excel --- .../export_partner_statement/__init__.py | 1 + .../partner_statement.xlsx | Bin 0 -> 18794 bytes .../partner_statement_export.py | 114 ++++++++++++++++++ .../export_partner_statement/reports.xml | 31 +++++ .../temp_partner_statement.xml | 41 +++++++ 5 files changed, 187 insertions(+) create mode 100644 altinkaya_excel_export/export_partner_statement/__init__.py create mode 100644 altinkaya_excel_export/export_partner_statement/partner_statement.xlsx create mode 100644 altinkaya_excel_export/export_partner_statement/partner_statement_export.py create mode 100644 altinkaya_excel_export/export_partner_statement/reports.xml create mode 100644 altinkaya_excel_export/export_partner_statement/temp_partner_statement.xml diff --git a/altinkaya_excel_export/export_partner_statement/__init__.py b/altinkaya_excel_export/export_partner_statement/__init__.py new file mode 100644 index 00000000..6ce31394 --- /dev/null +++ b/altinkaya_excel_export/export_partner_statement/__init__.py @@ -0,0 +1 @@ +from . import partner_statement_export \ No newline at end of file diff --git a/altinkaya_excel_export/export_partner_statement/partner_statement.xlsx b/altinkaya_excel_export/export_partner_statement/partner_statement.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..29be59dcfca4122a50d7cba0fc0c2810bf158732 GIT binary patch literal 18794 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 0.0: + debit = (each_dict['debit'] - each_dict['credit']) + else: + credit = (each_dict['credit'] - each_dict['debit']) + + statement_data.append(self.env['partner.statement.lines'].create(vals_list={ + 'sequence': seq, + 'number': each_dict['state'] == 'draft' and '*'+str(each_dict['move_id']) or each_dict['name'], + 'date': each_dict['date'] and datetime.strptime(str(each_dict['date']), '%Y-%m-%d').strftime('%d.%m.%Y') or False, + 'due_date': each_dict['due_date'] and datetime.strptime(str(each_dict['due_date']), '%Y-%m-%d').strftime('%d.%m.%Y') or False, + 'description': len(each_dict['journal']) >= 30 and each_dict['journal'][0:30] or each_dict['journal'], + 'debit': formatLang(self.env, debit), + 'credit': formatLang(self.env, credit), + 'balance': formatLang(self.env, abs(balance)) or 0.0, + 'dc': balance > 0.01 and 'B' or 'A', + 'total': formatLang(self.env, balance) or 0.0, + 'currency_symbol': currency_id['symbol'], + }).id) + + return statement_data + + +class StatementLines(models.TransientModel): + _name = 'partner.statement.lines' + + sequence = fields.Integer('Sequence') + number = fields.Char('Number') + date = fields.Char('Date') + due_date = fields.Char('Due Date') + description = fields.Char('Description') + debit = fields.Char('Debit') + credit = fields.Char('Credit') + balance = fields.Char('Balance') + currency_rate = fields.Char('Currency Rate') + sec_curr_debit = fields.Char('Secondary Currency Debit') + sec_curr_credit = fields.Char('Secondary Currency Credit') + sec_curr_balance = fields.Char('Secondary Currency Balance') + dc = fields.Char('dc') + sec_curr_dc = fields.Char('sec_curr_dc') + total = fields.Char('Total') + sec_curr_total = fields.Char('Secondary Currency Total') + primary_currency = fields.Many2one('res.currency') + secondary_currency = fields.Many2one('res.currency') diff --git a/altinkaya_excel_export/export_partner_statement/reports.xml b/altinkaya_excel_export/export_partner_statement/reports.xml new file mode 100644 index 00000000..a726ba63 --- /dev/null +++ b/altinkaya_excel_export/export_partner_statement/reports.xml @@ -0,0 +1,31 @@ + + + + + + report.partner.statement + report.partner.statement + + primary + + + Carinin ekstresini çıkartmak için aşağıdaki butonları kullanınız. + + + + + + + + + + + + \ No newline at end of file diff --git a/altinkaya_excel_export/export_partner_statement/temp_partner_statement.xml b/altinkaya_excel_export/export_partner_statement/temp_partner_statement.xml new file mode 100644 index 00000000..ca85d79f --- /dev/null +++ b/altinkaya_excel_export/export_partner_statement/temp_partner_statement.xml @@ -0,0 +1,41 @@ + + + + report.partner.statement + partner_statement.xlsx + Cari Ekstre + Müşterilerin ekstresini excel olarak basan şablon. + + { + '__EXPORT__': { + 'Ekstre': { # sheet can be name (string) or index (integer) + '_HEAD_': { + 'B2': 'partner_id.name${value or ""}#{align=left;vert-align=center;style=text}', + 'H2': 'partner_id.tax_office_name${value or ""}#{align=full_center;style=text}', + 'F2': 'partner_id.vat${value or ""}#{align=full_center;style=text}', + 'H3': 'date_now${value.strftime("%d.%m.%Y") or ""}#{align=full_center;style=text}', + 'B3': '${object.partner_id.phone or object.partner_id.mobile or ""}#{align=left;vert-align=center;style=text}', + 'H6': '${"%s" % (object.results[-1].total or "0,00")}#{align=right;style=text}', + 'I6': '${object.results[-1].dc or ""}#{align=full_center;style=text}', + }, + 'results': { # prefix with _CONT_ to continue rows from previous row field + 'A5': 'sequence${value or ""}#{border=thin_border;align=center;style=text}', + 'B5': 'number${value or ""}#{border=thin_border;align=left;style=text}', + 'C5': 'date${value or ""}#{border=thin_border;align=left;style=text}', + 'D5': 'due_date${value or ""}#{border=thin_border;align=left;style=text}', + 'E5': 'description${value or ""}#{border=thin_border;align=left;style=text}', + 'F5': '${object.debit or "0,00"}#{border=thin_border;align=right;style=text}', + 'G5': '${object.credit or "0,00"}#{border=thin_border;align=right;style=text}', + 'H5': '${object.balance or "0,00"}#{border=thin_border;align=right;style=text}', + 'I5': 'dc${value or ""}#{border=thin_border;align=center;style=text}', + }, + }, + }, + } + + + + + + + \ No newline at end of file From 75e1ca39d2a27e2da004649e74f2d322c0aea8e7 Mon Sep 17 00:00:00 2001 From: yibudak Date: Tue, 29 Mar 2022 23:25:12 +0300 Subject: [PATCH 16/35] fixed currency statement --- .../partner_statement_export.py | 58 ++++++++++--------- .../temp_partner_statement_currency.xml | 4 +- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py index d6360a7c..79f5bb0e 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py +++ b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py @@ -54,9 +54,9 @@ def _get_statement_data(self, partner_id): end_date = self.date_end currency = self.env['res.currency'] move_type = ('payable', 'receivable') - if not partner.has_secondary_curr: + if not (partner.property_account_receivable_id.currency_id or partner.property_account_payable_id.currency_id): raise UserError(_( - 'Bu müşteri için dövizli ekstre çıkartamazsınız. Muhasebe bölümünden "Dövizle Çalışıyor" alanını aktif ediniz')) + 'Bu müşteri için dövizli ekstre çıkartamazsınız. Müşteri hesaplarının dövizli olduğunu kontrol ediniz.')) cr.execute('SELECT aj.id as journal_id, aj.name as journal, l.date_maturity as due_date, l.date, am.name, am.state, move_id, SUM(l.debit) AS debit, SUM(l.credit) AS credit,\ l.amount_currency as amount_currency,l.currency_id as currency_id,l.company_currency_id as company_currency_id\ FROM account_move_line AS l \ @@ -64,9 +64,10 @@ def _get_statement_data(self, partner_id): LEFT JOIN account_move am ON (l.move_id=am.id) \ LEFT JOIN account_journal aj ON (am.journal_id=aj.id) \ LEFT JOIN account_account_type at ON (a.user_type_id =at.id) \ - WHERE (l.date BETWEEN %s AND %s) AND l.partner_id = '+ str(partner.commercial_partner_id.id) + ' AND at.type IN ' + str(move_type) + - 'GROUP BY aj.id,aj.name,move_id,am.name,am.state,l.date,l.date_maturity ,l.amount_currency,l.currency_id,l.company_currency_id\ - ORDER BY l.date , l.currency_id ',(str(start_date),str(end_date))) + WHERE (l.date BETWEEN %s AND %s) AND l.partner_id = ' + str( + partner.commercial_partner_id.id) + ' AND at.type IN ' + str(move_type) + + 'GROUP BY aj.id,aj.name,move_id,am.name,am.state,l.date,l.date_maturity ,l.amount_currency,l.currency_id,l.company_currency_id\ + ORDER BY l.date , l.currency_id ', (str(start_date), str(end_date))) for each_dict in self.env.cr.dictfetchall(): seq += 1 balance = (each_dict['debit'] - each_dict['credit']) + balance @@ -81,14 +82,15 @@ def _get_statement_data(self, partner_id): else: credit = (each_dict['credit'] - each_dict['debit']) - if partner.has_secondary_curr and each_dict['journal_id'] != diff_inv_journal.id: + if partner.property_account_receivable_id.currency_id and each_dict['journal_id'] != diff_inv_journal.id: move_date = each_dict['date'].strftime("%Y-%m-%d") cr.execute( "SELECT rate\ FROM res_currency_rate\ WHERE currency_id = %s\ AND name <= %s\ - ORDER BY name desc LIMIT 1", (partner.secondary_curr_id.id, move_date)) + ORDER BY name desc LIMIT 1", (partner.property_account_receivable_id.currency_id.id, + move_date)) if cr.rowcount: rate = cr.fetchall()[0][0] @@ -97,27 +99,27 @@ def _get_statement_data(self, partner_id): sec_curr_balance = (sec_curr_debit - sec_curr_credit) + sec_curr_balance statement_data.append(self.env['partner.statement.lines'].create(vals_list={ - 'sequence': seq, - 'number': each_dict['state'] == 'draft' and '*' + str(each_dict['move_id']) or each_dict['name'], - 'date': each_dict['date'] and datetime.strptime(str(each_dict['date']), '%Y-%m-%d').strftime( - '%d.%m.%Y') or False, - 'due_date': each_dict['due_date'] and datetime.strptime(str(each_dict['due_date']), - '%Y-%m-%d').strftime('%d.%m.%Y') or False, - 'description': len(each_dict['journal']) >= 30 and each_dict['journal'][0:30] or each_dict[ - 'journal'], - 'debit': debit, - 'credit': credit, - 'sec_curr_debit': sec_curr_debit, - 'sec_curr_credit': sec_curr_credit, - 'currency_rate': 1/rate, - 'sec_curr_balance': abs(sec_curr_balance) or 0.00, - 'sec_curr_dc': sec_curr_balance > 0.01 and 'B' or 'A', - 'balance': abs(balance) or 0.0, - 'dc': balance > 0.01 and 'B' or 'A', - 'sec_curr_total': sec_curr_balance or 0.00, - 'total': balance or 0.0, - 'secondary_currency': partner.secondary_curr_id.id, - 'primary_currency': currency_id.id}).id) + 'sequence': seq, + 'number': each_dict['state'] == 'draft' and '*' + str(each_dict['move_id']) or each_dict['name'], + 'date': each_dict['date'] and datetime.strptime(str(each_dict['date']), '%Y-%m-%d').strftime( + '%d.%m.%Y') or False, + 'due_date': each_dict['due_date'] and datetime.strptime(str(each_dict['due_date']), + '%Y-%m-%d').strftime('%d.%m.%Y') or False, + 'description': len(each_dict['journal']) >= 30 and each_dict['journal'][0:30] or each_dict[ + 'journal'], + 'debit': debit, + 'credit': credit, + 'sec_curr_debit': sec_curr_debit, + 'sec_curr_credit': sec_curr_credit, + 'currency_rate': 1 / rate, + 'sec_curr_balance': abs(sec_curr_balance) or 0.00, + 'sec_curr_dc': sec_curr_balance > 0.01 and 'B' or 'A', + 'balance': abs(balance) or 0.0, + 'dc': balance > 0.01 and 'B' or 'A', + 'sec_curr_total': sec_curr_balance or 0.00, + 'total': balance or 0.0, + 'secondary_currency': partner.property_account_receivable_id.currency_id.id or currency_id.id, + 'primary_currency': currency_id.id}).id) return statement_data diff --git a/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml b/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml index 6c6be531..e6ed29c6 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml +++ b/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml @@ -15,9 +15,9 @@ 'J2': 'partner_id.vat${value or ""}#{align=full_center;style=text}', 'L2': 'date_now${value.strftime("%d.%m.%Y") or ""}#{align=full_center;style=text}', 'B3': '${object.partner_id.phone or object.partner_id.mobile}#{align=left;vert-align=center;style=text}', - 'H6': '${"%s%.2f" % (object.partner_id.secondary_curr_id.symbol, object.results[-1].sec_curr_total) or "%s0.00" % object.partner_id.secondary_curr_id.symbol}#{align=right;style=text}', + 'H6': '${"%s%.2f" % (object.partner_id.property_account_receivable_id.currency_id.symbol, object.results[-1].sec_curr_total) or "%s0.00" % object.partner_id.property_account_receivable_id.currency_id.symbol}#{align=right;style=text}', 'I6': '${object.results[-1].sec_curr_dc or ""}#{align=full_center;style=text}', - 'K6': '${"%s%.2f" % (object.default_currency.symbol, object.results[-1].total) or "%s0.00" % object.default_currency.symbol}#{align=right;style=text}', + 'M6': '${"%s%.2f" % (object.default_currency.symbol, object.results[-1].total) or "%s0.00" % object.default_currency.symbol}#{align=right;style=text}', 'N6': '${object.results[-1].dc or ""}#{align=full_center;style=text}', }, 'results': { # prefix with _CONT_ to continue rows from previous row field From 21918bb1b1164d79adac44c168c42f48806bb1a1 Mon Sep 17 00:00:00 2001 From: yibudak Date: Wed, 30 Mar 2022 00:32:55 +0300 Subject: [PATCH 17/35] changed currency statement format --- altinkaya_excel_export/__init__.py | 1 + altinkaya_excel_export/__manifest__.py | 3 ++ .../__init__.py | 2 +- .../partner_statement_currency.xlsx | Bin 18856 -> 18836 bytes ...y => partner_statement_currency_export.py} | 45 +++++------------- .../reports.xml | 18 +++---- .../temp_partner_statement_currency.xml | 31 ++++++------ .../partner_statement.xlsx | Bin 18794 -> 18821 bytes .../partner_statement_export.py | 6 +-- .../export_partner_statement/reports.xml | 12 ++--- 10 files changed, 51 insertions(+), 67 deletions(-) rename altinkaya_excel_export/export_partner_currency_statement/{partner_statement_export.py => partner_statement_currency_export.py} (80%) diff --git a/altinkaya_excel_export/__init__.py b/altinkaya_excel_export/__init__.py index 96c30461..fad9f42c 100644 --- a/altinkaya_excel_export/__init__.py +++ b/altinkaya_excel_export/__init__.py @@ -3,3 +3,4 @@ from . import export_purchase_order_xlsx from . import export_account_invoice_xlsx from . import export_partner_currency_statement +from . import export_partner_statement diff --git a/altinkaya_excel_export/__manifest__.py b/altinkaya_excel_export/__manifest__.py index 35d10db9..2997b064 100644 --- a/altinkaya_excel_export/__manifest__.py +++ b/altinkaya_excel_export/__manifest__.py @@ -24,6 +24,9 @@ 'export_account_invoice_xlsx/temp_gelir_fatura.xml', 'export_account_invoice_xlsx/reports.xml', # Partner Statement + 'export_partner_statement/temp_partner_statement.xml', + 'export_partner_statement/reports.xml', + # Partner Statement Currency 'export_partner_currency_statement/temp_partner_statement_currency.xml', 'export_partner_currency_statement/reports.xml', ], diff --git a/altinkaya_excel_export/export_partner_currency_statement/__init__.py b/altinkaya_excel_export/export_partner_currency_statement/__init__.py index 6ce31394..7e972759 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/__init__.py +++ b/altinkaya_excel_export/export_partner_currency_statement/__init__.py @@ -1 +1 @@ -from . import partner_statement_export \ No newline at end of file +from . import partner_statement_currency_export \ No newline at end of file diff --git a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency.xlsx b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency.xlsx index 5ecc27c0052167a632171c65aa04328d785b606c..5a11c1476d9ecefb6bd5e4d685a256e65d71c946 100644 GIT binary patch delta 6343 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 delta 6325 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 z zi&a%dklVe-GI1qp0p=a8olgp;=5bnh>{w+Cj#SCNv^O2%xS) zU41bnnZW!J(yL7@`~%@O{feo3 z-3#>1&oe1&6Q$&55(|F*U58WH{is@Mz0S*S$s<|s+)(d)=C5DNTtQaVt}Pf-)}AQw z)le>0>a3Vl=X0C+!HX!3%YvCDE3Q%nk_c*92gxivQr^97!CVl_UBw>X(|SoY6|yi) z@N9ZqN=+g25GQG+e(8^SC-rOFsy<~a7A@WHfijD@_S@K}ZS-vv($Qkuf!9s{2V2Dk=*WFr zD$_Z7P96?}`MV+9ogC422(-JMvy-%>mxuEYUQEA-I8Xk8z3ej4STV`NAE zq;nT*qbtO`tFw#gVB>VT=%W$X2M7*qwJxjmuKau4W(U#v?mH?CgE@LSn0R}7`5^4P tyd?eI-F}Sjdq{!fyS*@&7FIw{;P|eG?{oO)=-A}2j(VbdMYVT#{sS25Z2|xQ diff --git a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency_export.py similarity index 80% rename from altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py rename to altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency_export.py index 79f5bb0e..cfb66759 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_export.py +++ b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency_export.py @@ -3,10 +3,11 @@ from odoo import fields, models, api, _ from odoo.exceptions import UserError from datetime import date, datetime +from odoo.tools.misc import formatLang -class ReportPartnerStatement(models.TransientModel): - _name = 'report.partner.statement' +class ReportPartnerStatementCurrency(models.TransientModel): + _name = 'report.partner.statement.currency' _description = 'Wizard for report.partner.statement' _inherit = 'xlsx.report' @@ -107,41 +108,19 @@ def _get_statement_data(self, partner_id): '%Y-%m-%d').strftime('%d.%m.%Y') or False, 'description': len(each_dict['journal']) >= 30 and each_dict['journal'][0:30] or each_dict[ 'journal'], - 'debit': debit, - 'credit': credit, - 'sec_curr_debit': sec_curr_debit, - 'sec_curr_credit': sec_curr_credit, - 'currency_rate': 1 / rate, - 'sec_curr_balance': abs(sec_curr_balance) or 0.00, + 'debit': formatLang(self.env, debit), + 'credit': formatLang(self.env, credit), + 'sec_curr_debit': formatLang(self.env, sec_curr_debit), + 'sec_curr_credit': formatLang(self.env, sec_curr_credit), + 'currency_rate': "%.4f" % (1/rate), + 'sec_curr_balance': formatLang(self.env, abs(sec_curr_balance)) or "0,00", 'sec_curr_dc': sec_curr_balance > 0.01 and 'B' or 'A', - 'balance': abs(balance) or 0.0, + 'balance': formatLang(self.env, abs(balance)) or "0,00", 'dc': balance > 0.01 and 'B' or 'A', - 'sec_curr_total': sec_curr_balance or 0.00, - 'total': balance or 0.0, + 'sec_curr_total': formatLang(self.env, sec_curr_balance) or "0,00", + 'total': formatLang(self.env, balance) or "0,00", 'secondary_currency': partner.property_account_receivable_id.currency_id.id or currency_id.id, 'primary_currency': currency_id.id}).id) return statement_data - -class StatementLines(models.TransientModel): - _name = 'partner.statement.lines' - - sequence = fields.Integer('Sequence') - number = fields.Char('Number') - date = fields.Char('Date') - due_date = fields.Char('Due Date') - description = fields.Char('Description') - debit = fields.Float('Debit') - credit = fields.Float('Credit') - balance = fields.Float('Balance') - currency_rate = fields.Float('Currency Rate') - sec_curr_debit = fields.Float('Secondary Currency Debit') - sec_curr_credit = fields.Float('Secondary Currency Credit') - sec_curr_balance = fields.Float('Secondary Currency Balance') - dc = fields.Char('dc') - sec_curr_dc = fields.Char('sec_curr_dc') - total = fields.Float('Total') - sec_curr_total = fields.Float('Secondary Currency Total') - primary_currency = fields.Many2one('res.currency') - secondary_currency = fields.Many2one('res.currency') diff --git a/altinkaya_excel_export/export_partner_currency_statement/reports.xml b/altinkaya_excel_export/export_partner_currency_statement/reports.xml index 919fa60d..17175e5c 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/reports.xml +++ b/altinkaya_excel_export/export_partner_currency_statement/reports.xml @@ -2,9 +2,9 @@ - - report.partner.statement - report.partner.statement + + report.partner.statement.currency + report.partner.statement.currency primary @@ -19,13 +19,13 @@ - + /> \ No newline at end of file diff --git a/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml b/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml index e6ed29c6..027e170d 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml +++ b/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml @@ -1,9 +1,9 @@ - - report.partner.statement + + report.partner.statement.currency partner_statement_currency.xlsx - Cari Dövizli Ekstre Şablonu + Cari Dövizli Ekstre Müşterilerin dövizli ekstresini excel olarak basan şablon. { @@ -13,11 +13,14 @@ 'B2': 'partner_id.name${value or ""}#{align=left;vert-align=center;style=text}', 'H2': 'partner_id.tax_office_name${value or ""}#{align=full_center;style=text}', 'J2': 'partner_id.vat${value or ""}#{align=full_center;style=text}', - 'L2': 'date_now${value.strftime("%d.%m.%Y") or ""}#{align=full_center;style=text}', + 'M2': 'date_now${value.strftime("%d.%m.%Y") or ""}#{align=full_center;style=text}', 'B3': '${object.partner_id.phone or object.partner_id.mobile}#{align=left;vert-align=center;style=text}', - 'H6': '${"%s%.2f" % (object.partner_id.property_account_receivable_id.currency_id.symbol, object.results[-1].sec_curr_total) or "%s0.00" % object.partner_id.property_account_receivable_id.currency_id.symbol}#{align=right;style=text}', + 'F4': '${"%s Borç" % object.partner_id.property_account_payable_id.currency_id.name}#{align=center;border=thin_border;style=text}', + 'G4': '${"%s Alacak" % object.partner_id.property_account_payable_id.currency_id.name}#{align=center;border=thin_border;style=text}', + 'H4': '${"%s Bakiye" % object.partner_id.property_account_payable_id.currency_id.name}#{align=center;border=thin_border;style=text}', + 'H6': '${object.results[-1].sec_curr_total or "0,00"}#{align=right;style=text}', 'I6': '${object.results[-1].sec_curr_dc or ""}#{align=full_center;style=text}', - 'M6': '${"%s%.2f" % (object.default_currency.symbol, object.results[-1].total) or "%s0.00" % object.default_currency.symbol}#{align=right;style=text}', + 'M6': '${object.results[-1].total or "0,00"}#{align=right;style=text}', 'N6': '${object.results[-1].dc or ""}#{align=full_center;style=text}', }, 'results': { # prefix with _CONT_ to continue rows from previous row field @@ -26,14 +29,14 @@ 'C5': 'date${value or ""}#{border=thin_border;align=left;style=text}', 'D5': 'due_date${value or ""}#{border=thin_border;align=left;style=text}', 'E5': 'description${value or ""}#{border=thin_border;align=left;style=text}', - 'F5': '${"%s%.2f" % (object.secondary_currency.symbol, object.sec_curr_debit) or "%s0.00" % object.secondary_currency.symbol}#{border=thin_border;align=right;style=text}', - 'G5': '${"%s%.2f" % (object.secondary_currency.symbol, object.sec_curr_credit) or "%s0.00" % object.secondary_currency.symbol}#{border=thin_border;align=right;style=text}', - 'H5': '${"%s%.2f" % (object.secondary_currency.symbol, object.sec_curr_balance) or "%s0.00" % object.secondary_currency.symbol}#{border=thin_border;align=right;style=text}', + 'F5': '${object.sec_curr_debit or "0,00"}#{border=thin_border;align=right;style=text}', + 'G5': '${object.sec_curr_credit or "0,00"}#{border=thin_border;align=right;style=text}', + 'H5': '${object.sec_curr_balance or "0,00"}#{border=thin_border;align=right;style=text}', 'I5': 'sec_curr_dc${value or ""}#{border=thin_border;align=center;style=text}', - 'J5': '${"%.2f" % object.currency_rate or 1.00}#{border=thin_border;align=right;style=text}', - 'K5': '${"%s%.2f" % (object.primary_currency.symbol, object.debit) or "%s0.00" % object.primary_currency.symbol}#{border=thin_border;align=right;style=text}', - 'L5': '${"%s%.2f" % (object.primary_currency.symbol, object.credit) or "%s0.00" % object.primary_currency.symbol}#{border=thin_border;align=right;style=text}', - 'M5': '${"%s%.2f" % (object.primary_currency.symbol, object.balance) or "%s0.00" % object.primary_currency.symbol}#{border=thin_border;align=right;style=text}', + 'J5': '${object.currency_rate or "1.0000"}#{border=thin_border;align=right;style=text}', + 'K5': '${object.debit or "0,00"}#{border=thin_border;align=right;style=text}', + 'L5': '${object.credit or "0,00"}#{border=thin_border;align=right;style=text}', + 'M5': '${object.balance or "0,00"}#{border=thin_border;align=right;style=text}', 'N5': 'dc${value or ""}#{border=thin_border;align=center;style=text}', }, }, @@ -43,6 +46,6 @@ - + \ No newline at end of file diff --git a/altinkaya_excel_export/export_partner_statement/partner_statement.xlsx b/altinkaya_excel_export/export_partner_statement/partner_statement.xlsx index 29be59dcfca4122a50d7cba0fc0c2810bf158732..b2a7c2a1e33c0ceb58a8aa85170bfaf7bff65d70 100644 GIT binary patch delta 6243 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 delta 6237 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 DOq?$- diff --git a/altinkaya_excel_export/export_partner_statement/partner_statement_export.py b/altinkaya_excel_export/export_partner_statement/partner_statement_export.py index 63db6e55..f60c2d42 100644 --- a/altinkaya_excel_export/export_partner_statement/partner_statement_export.py +++ b/altinkaya_excel_export/export_partner_statement/partner_statement_export.py @@ -1,7 +1,6 @@ import time from odoo import fields, models, api, _ -from odoo.exceptions import UserError from datetime import date, datetime from odoo.tools.misc import formatLang @@ -82,10 +81,9 @@ def _get_statement_data(self): 'description': len(each_dict['journal']) >= 30 and each_dict['journal'][0:30] or each_dict['journal'], 'debit': formatLang(self.env, debit), 'credit': formatLang(self.env, credit), - 'balance': formatLang(self.env, abs(balance)) or 0.0, + 'balance': formatLang(self.env, abs(balance)) or "0,00", 'dc': balance > 0.01 and 'B' or 'A', - 'total': formatLang(self.env, balance) or 0.0, - 'currency_symbol': currency_id['symbol'], + 'total': formatLang(self.env, balance) or "0,00", }).id) return statement_data diff --git a/altinkaya_excel_export/export_partner_statement/reports.xml b/altinkaya_excel_export/export_partner_statement/reports.xml index a726ba63..ac22af7e 100644 --- a/altinkaya_excel_export/export_partner_statement/reports.xml +++ b/altinkaya_excel_export/export_partner_statement/reports.xml @@ -19,13 +19,13 @@ - + /> \ No newline at end of file From ecf7d0cc5478d579e8e32a5aef65f03c0618218f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?yi=C4=9Fit=20budak?= Date: Mon, 18 Apr 2022 21:26:29 +0300 Subject: [PATCH 18/35] added payments excel export and batch quant update --- altinkaya_excel_export/__init__.py | 1 + altinkaya_excel_export/__manifest__.py | 3 ++ .../export_account_payment_xlsx/__init__.py | 1 + .../account_payment_export.py | 24 ++++++++++++ .../export_account_payment_xlsx/payments.xlsx | Bin 0 -> 5660 bytes .../export_account_payment_xlsx/reports.xml | 26 +++++++++++++ .../temp_payments.xml | 35 ++++++++++++++++++ 7 files changed, 90 insertions(+) create mode 100644 altinkaya_excel_export/export_account_payment_xlsx/__init__.py create mode 100644 altinkaya_excel_export/export_account_payment_xlsx/account_payment_export.py create mode 100644 altinkaya_excel_export/export_account_payment_xlsx/payments.xlsx create mode 100644 altinkaya_excel_export/export_account_payment_xlsx/reports.xml create mode 100644 altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml diff --git a/altinkaya_excel_export/__init__.py b/altinkaya_excel_export/__init__.py index fad9f42c..24f78fb6 100644 --- a/altinkaya_excel_export/__init__.py +++ b/altinkaya_excel_export/__init__.py @@ -4,3 +4,4 @@ from . import export_account_invoice_xlsx from . import export_partner_currency_statement from . import export_partner_statement +from . import export_account_payment_xlsx diff --git a/altinkaya_excel_export/__manifest__.py b/altinkaya_excel_export/__manifest__.py index 2997b064..cde9023f 100644 --- a/altinkaya_excel_export/__manifest__.py +++ b/altinkaya_excel_export/__manifest__.py @@ -29,6 +29,9 @@ # Partner Statement Currency 'export_partner_currency_statement/temp_partner_statement_currency.xml', 'export_partner_currency_statement/reports.xml', + # Payment Excel + 'export_account_payment_xlsx/reports.xml', + 'export_account_payment_xlsx/temp_payments.xml', ], 'installable': True, } diff --git a/altinkaya_excel_export/export_account_payment_xlsx/__init__.py b/altinkaya_excel_export/export_account_payment_xlsx/__init__.py new file mode 100644 index 00000000..d94f44b5 --- /dev/null +++ b/altinkaya_excel_export/export_account_payment_xlsx/__init__.py @@ -0,0 +1 @@ +from . import account_payment_export diff --git a/altinkaya_excel_export/export_account_payment_xlsx/account_payment_export.py b/altinkaya_excel_export/export_account_payment_xlsx/account_payment_export.py new file mode 100644 index 00000000..0e352da1 --- /dev/null +++ b/altinkaya_excel_export/export_account_payment_xlsx/account_payment_export.py @@ -0,0 +1,24 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from odoo import fields,models,api + + +class ReportAccountPayment(models.TransientModel): + _name = 'report.account.payment' + _description = 'Wizard for report.account.payment' + _inherit = 'xlsx.report' + + # Report Result, account.invoice + results = fields.Many2many( + comodel_name='account.payment', + string='Payments', + compute='_get_payments', + help='Use compute fields, so there is nothing stored in database', + ) + + @api.multi + def _get_payments(self): + selected_ids = self.env.context.get('active_ids', []) + ids = self.env['account.payment'].browse(selected_ids) + for rec in self: + rec.results = ids diff --git a/altinkaya_excel_export/export_account_payment_xlsx/payments.xlsx b/altinkaya_excel_export/export_account_payment_xlsx/payments.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..059440e8cf4f36d64713ba3a490bde36390c25ea GIT binary patch literal 5660 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 RjDtgb`beGz$mXA1{{sh2k2C-P literal 0 HcmV?d00001 diff --git a/altinkaya_excel_export/export_account_payment_xlsx/reports.xml b/altinkaya_excel_export/export_account_payment_xlsx/reports.xml new file mode 100644 index 00000000..1caa9ad9 --- /dev/null +++ b/altinkaya_excel_export/export_account_payment_xlsx/reports.xml @@ -0,0 +1,26 @@ + + + + + + report.account.payment + report.account.payment + + primary + + + Ödemeleri, Zirve Yazılım sistemine uygun şekilde çıktı almak için aşağıdaki butonları kullanınız. + + + + + + + + \ No newline at end of file diff --git a/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml b/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml new file mode 100644 index 00000000..dfc9c786 --- /dev/null +++ b/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml @@ -0,0 +1,35 @@ + + + + report.account.payment + payments.xlsx + Ödemeler Excel + Zirve Muhasebe programına uygun biçimde ödemelerin içeri aktarılabilmesini sağlayan Excel şablonu. + + { + '__EXPORT__': { + 'Fatura': { # sheet can be name (string) or index (integer) + 'results': { # prefix with _CONT_ to continue rows from previous row field + 'A2': '${object.payment_date.strftime("%d.%m.%Y") or ""}#{border=thin_border;align=left;style=date}', + 'B2': 'x_cek_no${value or ""}#{border=thin_border;align=left;style=text}', + 'C2': 'journal_id.name${value or ""}#{border=thin_border;align=left;style=text}', + 'D2': 'partner_id.name${value or ""}#{border=thin_border;align=left;style=text}', + 'E2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', + 'F2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', + 'G2': 'amount${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=text}', + 'H2': '${"\'%s" % (object.partner_id.z_receivable_export or "")}#{border=thin_border;align=left;style=text}', + 'I2': 'partner_id.z_receivable_export${value or ""}#{border=thin_border;align=left;style=text}', + 'J2': 'name${value or ""}#{border=thin_border;align=left;style=text}', + 'K2': '${"\'%s" % (object.x_cek_no or "")}#{border=thin_border;align=left;style=text}', + 'L2': 'x_cek_no${value or ""}#{border=thin_border;align=left;style=text}', + }, + }, + }, + } + + + + + + + \ No newline at end of file From 4d1d7c3807277fd0b5c0f3cb20b114129fee3b3d Mon Sep 17 00:00:00 2001 From: Ahmet Altinisik Date: Wed, 4 May 2022 22:02:42 +0300 Subject: [PATCH 19/35] updated excel export template --- .../temp_gelir_fatura.xml | 14 +++---- .../temp_zirve_masraf_fatura.xml | 26 ++++++------ .../export_account_payment_xlsx/reports.xml | 23 +++++++++++ .../temp_payments.xml | 40 +++++++++++++++++-- 4 files changed, 80 insertions(+), 23 deletions(-) diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/temp_gelir_fatura.xml b/altinkaya_excel_export/export_account_invoice_xlsx/temp_gelir_fatura.xml index 1d81f194..8b5dfc32 100644 --- a/altinkaya_excel_export/export_account_invoice_xlsx/temp_gelir_fatura.xml +++ b/altinkaya_excel_export/export_account_invoice_xlsx/temp_gelir_fatura.xml @@ -16,14 +16,14 @@ 'D2': 'partner_id.name${value or ""}#{border=thin_border;align=left;style=text}', 'E2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', 'F2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', - 'G2': '${"%.2f" % (object.currency_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=text}', - 'H2': '${"%.2f" % (object.currency_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=text}', - 'I2': '${"%.2f" % (object.currency_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=text}', - 'J2': '${"%.2f" % (object.currency_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=text}', + 'G2': '${"%.2f" % (object.currency_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=number}', + 'H2': '${"%.2f" % (object.currency_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=number}', + 'I2': '${"%.2f" % (object.currency_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=number}', + 'J2': '${"%.2f" % (object.currency_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=number}', - 'K2': 'amount_untaxed${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=text}', - 'L2': 'amount_tax${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=text}', - 'M2': '${"%.f" % (object.amount_tax / object.amount_untaxed * 100) if object.amount_tax > 0.0 else 0}#{border=thin_border;align=left;style=text}', + 'K2': 'amount_untaxed${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=number}', + 'L2': 'amount_tax${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=number}', + 'M2': '${"%.f" % (object.amount_tax / object.amount_untaxed * 100) if object.amount_tax > 0.0 else 0}#{border=thin_border;align=left;style=number}', 'N2': '${"\'%s" % (object.partner_id.z_receivable_export or "")}#{border=thin_border;align=left;style=text}', 'O2': 'partner_id.z_receivable_export${value or ""}#{border=thin_border;align=left;style=text}', 'P2': 'currency_id.name${value or ""}#{border=thin_border;align=left;style=text}', diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml index 8c3e0a5e..28a4552f 100644 --- a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml +++ b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml @@ -18,7 +18,7 @@ 'F2': 'partner_id.name${value or ""}#{border=thin_border;align=left;style=text}', 'G2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', 'H2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', - 'I2': 'amount_untaxed${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=text}', + 'I2': 'amount_untaxed${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=number}', 'J2': '${"\'%s" % (object.partner_id.z_payable_export or "")}#{border=thin_border;align=left;style=text}', 'K2': 'partner_id.z_payable_export${value or ""}#{border=thin_border;align=left;style=text}', @@ -27,24 +27,24 @@ 'N2': '${"".join("\'%s" % tax.account_id.code for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=text}', 'O2': '${"".join("%s" % tax.account_id.code for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=text}', - 'P2': '${"".join("\'%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=text}', - 'Q2': '${"".join("%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=text}', - 'R2': '${"".join("\'%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=text}', - 'S2': '${"".join("%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=text}', + 'P2': '${"".join("\'%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=number}', + 'Q2': '${"".join("%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=number}', + 'R2': '${"".join("\'%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=number}', + 'S2': '${"".join("%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=number}', 'T2': '${"".join("\'%s" % tax.account_id.code for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=text}', 'U2': '${"".join("%s" % tax.account_id.code for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=text}', - 'V2': '${"".join("\'%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=text}', - 'W2': '${"".join("%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=text}', - 'X2': '${"".join("\'%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=text}', - 'Y2': '${"".join("%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=text}', + 'V2': '${"".join("\'%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=number}', + 'W2': '${"".join("%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=number}', + 'X2': '${"".join("\'%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=number}', + 'Y2': '${"".join("%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=number}', 'Z2': '${"".join("\'%s" % tax.account_id.code for index, tax in enumerate(object.tax_line_ids) if index == 2) or ""}#{border=thin_border;align=left;style=text}', 'AA2': '${"".join("%s" % tax.account_id.code for index, tax in enumerate(object.tax_line_ids) if index == 2) or ""}#{border=thin_border;align=left;style=text}', - 'AB2': '${"".join("\'%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 2) or ""}#{border=thin_border;align=left;style=text}', - 'AC2': '${"".join("%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 2) or ""}#{border=thin_border;align=left;style=text}', - 'AD2': '${"".join("\'%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 2) or ""}#{border=thin_border;align=left;style=text}', - 'AE2': '${"".join("%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 2) or ""}#{border=thin_border;align=left;style=text}', + 'AB2': '${"".join("\'%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 2) or ""}#{border=thin_border;align=left;style=number}', + 'AC2': '${"".join("%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 2) or ""}#{border=thin_border;align=left;style=number}', + 'AD2': '${"".join("\'%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 2) or ""}#{border=thin_border;align=left;style=number}', + 'AE2': '${"".join("%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 2) or ""}#{border=thin_border;align=left;style=number}', }, }, diff --git a/altinkaya_excel_export/export_account_payment_xlsx/reports.xml b/altinkaya_excel_export/export_account_payment_xlsx/reports.xml index 1caa9ad9..21483690 100644 --- a/altinkaya_excel_export/export_account_payment_xlsx/reports.xml +++ b/altinkaya_excel_export/export_account_payment_xlsx/reports.xml @@ -23,4 +23,27 @@ ('fname', '=', 'payments.xlsx'), ('gname', '=', False)]}"/> + + + report.account.payment + report.account.payment + + primary + + + Ödemeleri, Zirve Yazılım sistemine uygun şekilde çıktı almak için aşağıdaki butonları kullanınız. + + + + + + + + \ No newline at end of file diff --git a/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml b/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml index dfc9c786..09a481e2 100644 --- a/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml +++ b/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml @@ -16,9 +16,9 @@ 'D2': 'partner_id.name${value or ""}#{border=thin_border;align=left;style=text}', 'E2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', 'F2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', - 'G2': 'amount${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=text}', - 'H2': '${"\'%s" % (object.partner_id.z_receivable_export or "")}#{border=thin_border;align=left;style=text}', - 'I2': 'partner_id.z_receivable_export${value or ""}#{border=thin_border;align=left;style=text}', + 'G2': 'amount${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', + 'H2': '${"%s" % (object.partner_id.z_receivable_export or destination_account_id.code or "")}#{border=thin_border;align=left;style=text}', + 'I2': 'partner_id.z_receivable_export${value or destination_account_id.code or ""}#{border=thin_border;align=left;style=text}', 'J2': 'name${value or ""}#{border=thin_border;align=left;style=text}', 'K2': '${"\'%s" % (object.x_cek_no or "")}#{border=thin_border;align=left;style=text}', 'L2': 'x_cek_no${value or ""}#{border=thin_border;align=left;style=text}', @@ -32,4 +32,38 @@ + + + report.account.payment + payments2.xlsx + Tedarikçi Ödemeler Excel + Zirve Muhasebe programına uygun biçimde Tedarikçi ödemelerinini içeri aktarılabilmesini sağlayan Excel şablonu. + + { + '__EXPORT__': { + 'Fatura': { # sheet can be name (string) or index (integer) + 'results': { # prefix with _CONT_ to continue rows from previous row field + 'A2': '${object.payment_date.strftime("%d.%m.%Y") or ""}#{border=thin_border;align=left;style=date}', + 'B2': 'x_cek_no${value or ""}#{border=thin_border;align=left;style=text}', + 'C2': 'journal_id.name${value or ""}#{border=thin_border;align=left;style=text}', + 'D2': 'partner_id.name${value or ""}#{border=thin_border;align=left;style=text}', + 'E2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', + 'F2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', + 'G2': 'amount${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', + 'H2': '${"\'%s" % (object.partner_id.z_payable_export or "")}#{border=thin_border;align=left;style=text}', + 'I2': 'partner_id.z_payable_export${value or ""}#{border=thin_border;align=left;style=text}', + 'J2': 'name${value or ""}#{border=thin_border;align=left;style=text}', + 'K2': '${"\'%s" % (object.x_cek_no or "")}#{border=thin_border;align=left;style=text}', + 'L2': 'x_cek_no${value or ""}#{border=thin_border;align=left;style=text}', + }, + }, + }, + } + + + + + + + \ No newline at end of file From dfcc726d17cc5543bb4d8991a727d78f7bbba325 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?yi=C4=9Fit=20budak?= Date: Fri, 13 May 2022 08:53:24 +0300 Subject: [PATCH 20/35] [12.0][FIX] vendor and customer payments account difference --- .../export_account_payment_xlsx/temp_payments.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml b/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml index 09a481e2..8aea5a82 100644 --- a/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml +++ b/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml @@ -17,8 +17,8 @@ 'E2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', 'F2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', 'G2': 'amount${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', - 'H2': '${"%s" % (object.partner_id.z_receivable_export or destination_account_id.code or "")}#{border=thin_border;align=left;style=text}', - 'I2': 'partner_id.z_receivable_export${value or destination_account_id.code or ""}#{border=thin_border;align=left;style=text}', + 'H2': '${"\'%s" % ((object.partner_id.z_payable_export if object.payment_type == "outbound" else (object.partner_id.z_receivable_export or object.destination_account_id.code)) or "")}#{border=thin_border;align=left;style=text}', + 'I2': '${(object.partner_id.z_payable_export if object.payment_type == "outbound" else (object.partner_id.z_receivable_export or object.destination_account_id.code)) or ""}#{border=thin_border;align=left;style=text}', 'J2': 'name${value or ""}#{border=thin_border;align=left;style=text}', 'K2': '${"\'%s" % (object.x_cek_no or "")}#{border=thin_border;align=left;style=text}', 'L2': 'x_cek_no${value or ""}#{border=thin_border;align=left;style=text}', From d033b8d723c3642fa2d8671bcb5f456caad47783 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?yi=C4=9Fit=20budak?= Date: Sat, 14 May 2022 16:47:43 +0300 Subject: [PATCH 21/35] [12.0][FIX] gelir_fatura_excel --- .../gelir_fatura.xlsx | Bin 5773 -> 6144 bytes .../temp_gelir_fatura.xml | 31 ++++++----- .../export_account_payment_xlsx/payments.xlsx | Bin 5660 -> 5985 bytes .../export_account_payment_xlsx/reports.xml | 22 -------- .../temp_payments.xml | 50 +++--------------- 5 files changed, 26 insertions(+), 77 deletions(-) diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/gelir_fatura.xlsx b/altinkaya_excel_export/export_account_invoice_xlsx/gelir_fatura.xlsx index a60691c0aca2f98b0f4d9bc5cf91308de51ac334..98786490bdd74c8a46257d11bbd4ebb244e6e3b9 100644 GIT binary patch delta 4524 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 delta 4118 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 0.0 else 0}#{border=thin_border;align=left;style=number}', - 'N2': '${"\'%s" % (object.partner_id.z_receivable_export or "")}#{border=thin_border;align=left;style=text}', - 'O2': 'partner_id.z_receivable_export${value or ""}#{border=thin_border;align=left;style=text}', - 'P2': 'currency_id.name${value or ""}#{border=thin_border;align=left;style=text}', - }, + 'J2': 'amount_untaxed${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=number}', + 'K2': 'amount_tax${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=number}', + 'L2': '${"%.f" % (object.amount_tax / object.amount_untaxed * 100) if object.amount_tax > 0.0 else 0}#{border=thin_border;align=left;style=number}', + 'M2': 'partner_id.z_receivable_export${value or ""}#{border=thin_border;align=left;style=text}', + 'N2': '${"EURO" if object.currency_id.name == "EUR" else object.currency_id.name or ""}#{border=thin_border;align=left;style=text}', + 'O2': '${"%.2f" % (sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=number}', + 'P2': '${"%.2f" % (sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=number}', + 'Q2': '${"%.2f" % (sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=number}', + 'R2': '${"%.2f" % (sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=number}', + 'S2': 'amount_untaxed${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', + 'T2': 'amount_tax${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', + + }, }, }, } diff --git a/altinkaya_excel_export/export_account_payment_xlsx/payments.xlsx b/altinkaya_excel_export/export_account_payment_xlsx/payments.xlsx index 059440e8cf4f36d64713ba3a490bde36390c25ea..51dc13d0fdf444e6aa462d30fe4fe711695d10be 100644 GIT binary patch delta 4637 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 w_i58I_~it?z~3Lzq`7qb4;ugb`AMN55XaE2J delta 4240 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 - Ödemeleri, Zirve Yazılım sistemine uygun şekilde çıktı almak için aşağıdaki butonları kullanınız. - - - - - - - - \ No newline at end of file diff --git a/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml b/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml index 8aea5a82..1b4d86f0 100644 --- a/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml +++ b/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml @@ -8,20 +8,19 @@ { '__EXPORT__': { - 'Fatura': { # sheet can be name (string) or index (integer) + 'Fatura': { 'results': { # prefix with _CONT_ to continue rows from previous row field 'A2': '${object.payment_date.strftime("%d.%m.%Y") or ""}#{border=thin_border;align=left;style=date}', 'B2': 'x_cek_no${value or ""}#{border=thin_border;align=left;style=text}', 'C2': 'journal_id.name${value or ""}#{border=thin_border;align=left;style=text}', 'D2': 'partner_id.name${value or ""}#{border=thin_border;align=left;style=text}', - 'E2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', - 'F2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', - 'G2': 'amount${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', - 'H2': '${"\'%s" % ((object.partner_id.z_payable_export if object.payment_type == "outbound" else (object.partner_id.z_receivable_export or object.destination_account_id.code)) or "")}#{border=thin_border;align=left;style=text}', - 'I2': '${(object.partner_id.z_payable_export if object.payment_type == "outbound" else (object.partner_id.z_receivable_export or object.destination_account_id.code)) or ""}#{border=thin_border;align=left;style=text}', - 'J2': 'name${value or ""}#{border=thin_border;align=left;style=text}', - 'K2': '${"\'%s" % (object.x_cek_no or "")}#{border=thin_border;align=left;style=text}', - 'L2': 'x_cek_no${value or ""}#{border=thin_border;align=left;style=text}', + 'E2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', + 'F2': 'amount_in_try${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', + 'G2': '${(object.partner_id.z_payable_export if object.payment_type == "outbound" else (object.partner_id.z_receivable_export or object.destination_account_id.code)) or ""}#{border=thin_border;align=left;style=text}', + 'H2': 'name${value or ""}#{border=thin_border;align=left;style=text}', + 'I2': 'x_cek_no${value or ""}#{border=thin_border;align=left;style=text}', + 'J2': 'amount${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', + 'K2': '${"EURO" if object.currency_id.name == "EUR" else object.currency_id.name or ""}#{border=thin_border;align=left;style=text}', }, }, }, @@ -33,37 +32,4 @@ - - report.account.payment - payments2.xlsx - Tedarikçi Ödemeler Excel - Zirve Muhasebe programına uygun biçimde Tedarikçi ödemelerinini içeri aktarılabilmesini sağlayan Excel şablonu. - - { - '__EXPORT__': { - 'Fatura': { # sheet can be name (string) or index (integer) - 'results': { # prefix with _CONT_ to continue rows from previous row field - 'A2': '${object.payment_date.strftime("%d.%m.%Y") or ""}#{border=thin_border;align=left;style=date}', - 'B2': 'x_cek_no${value or ""}#{border=thin_border;align=left;style=text}', - 'C2': 'journal_id.name${value or ""}#{border=thin_border;align=left;style=text}', - 'D2': 'partner_id.name${value or ""}#{border=thin_border;align=left;style=text}', - 'E2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', - 'F2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', - 'G2': 'amount${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', - 'H2': '${"\'%s" % (object.partner_id.z_payable_export or "")}#{border=thin_border;align=left;style=text}', - 'I2': 'partner_id.z_payable_export${value or ""}#{border=thin_border;align=left;style=text}', - 'J2': 'name${value or ""}#{border=thin_border;align=left;style=text}', - 'K2': '${"\'%s" % (object.x_cek_no or "")}#{border=thin_border;align=left;style=text}', - 'L2': 'x_cek_no${value or ""}#{border=thin_border;align=left;style=text}', - }, - }, - }, - } - - - - - - - \ No newline at end of file From 1ea2954428b4337d5314620c527f45198c160e37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?yi=C4=9Fit=20budak?= Date: Fri, 22 Jul 2022 16:41:53 +0300 Subject: [PATCH 22/35] [12.0][FIX] style text on partner accounts --- .../export_account_payment_xlsx/temp_payments.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml b/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml index 1b4d86f0..cd25bcce 100644 --- a/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml +++ b/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml @@ -16,7 +16,7 @@ 'D2': 'partner_id.name${value or ""}#{border=thin_border;align=left;style=text}', 'E2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', 'F2': 'amount_in_try${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', - 'G2': '${(object.partner_id.z_payable_export if object.payment_type == "outbound" else (object.partner_id.z_receivable_export or object.destination_account_id.code)) or ""}#{border=thin_border;align=left;style=text}', + 'G2': '${"\'%s" % (object.partner_id.z_payable_export if object.payment_type == "outbound" else (object.partner_id.z_receivable_export or object.destination_account_id.code)) or ""}#{border=thin_border;align=left;style=text}', 'H2': 'name${value or ""}#{border=thin_border;align=left;style=text}', 'I2': 'x_cek_no${value or ""}#{border=thin_border;align=left;style=text}', 'J2': 'amount${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', From 6ee84c7ae469e36c21b4956fd466015e216206dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?yi=C4=9Fit=20budak?= Date: Fri, 22 Jul 2022 17:57:37 +0300 Subject: [PATCH 23/35] Revert "[12.0][FIX] style text on partner accounts" This reverts commit 832d108a1cc3d20f87b1ba9e735d844cd91f82f7. --- .../export_account_payment_xlsx/temp_payments.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml b/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml index cd25bcce..1b4d86f0 100644 --- a/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml +++ b/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml @@ -16,7 +16,7 @@ 'D2': 'partner_id.name${value or ""}#{border=thin_border;align=left;style=text}', 'E2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', 'F2': 'amount_in_try${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', - 'G2': '${"\'%s" % (object.partner_id.z_payable_export if object.payment_type == "outbound" else (object.partner_id.z_receivable_export or object.destination_account_id.code)) or ""}#{border=thin_border;align=left;style=text}', + 'G2': '${(object.partner_id.z_payable_export if object.payment_type == "outbound" else (object.partner_id.z_receivable_export or object.destination_account_id.code)) or ""}#{border=thin_border;align=left;style=text}', 'H2': 'name${value or ""}#{border=thin_border;align=left;style=text}', 'I2': 'x_cek_no${value or ""}#{border=thin_border;align=left;style=text}', 'J2': 'amount${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', From b3ef3484f1205cd4d7587427fcbf73d9f7cb2258 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?yi=C4=9Fit=20budak?= Date: Sat, 23 Jul 2022 13:33:24 +0300 Subject: [PATCH 24/35] [12.0][FIX] escape char in excel --- .../export_account_payment_xlsx/payments.xlsx | Bin 5985 -> 5989 bytes .../temp_payments.xml | 13 ++++++------- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/altinkaya_excel_export/export_account_payment_xlsx/payments.xlsx b/altinkaya_excel_export/export_account_payment_xlsx/payments.xlsx index 51dc13d0fdf444e6aa462d30fe4fe711695d10be..16896d7475356603ac63d7291fb15135a03fbdf7 100644 GIT binary patch delta 2453 zcmZ8j2{;sL7dFulkr*?E?j)2DCS!}JNMk5_F~($1+{P};&~Q;miCOGRLe`O#CC!ZL z5|wdfU$Qio7|Aw-f3BbTpQr!+|9PJ8Ip;aw`Of*C_nhy1XHtDyUDVowUjW1>BqYR_ zZnse@stDlU<#k#B#6F(j%Ma$?6Nqs@6Nf9rTj}-9_@~lmZU`p|5BaUI9V7v3 zf8fG*aId6R@WkH)r3pxi@yz8pi_O6r^A5B-gXGQab`2QrLOV5vCWNgx_$E$kVwcXJ z>OZ4lkG;5(qHM_ZB~$vS!(CGu^T*S19NVx}pDU-!kn5bg9%UI%MU+))?P&?^Ipvco z8e0$~`xAtrS)1GOgS}F%?mXXWSd6a7UpVq*vlq-rV`_F1Kp6$5MOezI%0`&#kOG4> zZ{hR4kJi{7`z3&2^j+5_-->AO|JW@|(S_;k|5KeVn+?iY)}9`z;0%>tbGP6K3_vSy zb8f-YeS)&U&PcMe?i)<)aryfk%Ws%U!=*z5n0k@+wZM|6;T;*iF1EGz4Dy!~zM{7A z1HY5!PJ|JxHsjjY_e;<{*_X4Fzuh)o{3>h6%EDxFKZT%dvcd7*S?H(iQ+`k-mKPH79j(R|LJF3y4Z4Z=xQccEh{1@8{H_@ z(=A%#z3S6Tr!wa4&s8PDM&h#Ge(y4n@%4w|z7Q7T#}fQ~impXoe>XN49-yDS5QfV6 zb9A8*c7(GQ%&k(popxixl-8LM^$wBe|Fq}f+!kkk3;BK4j#fhE;&gO9yu5y97u^pn zxj6Qz66jQddV3!-GMs;AyWG2cr!;|!DOck6tbc_bL-|MDSf35WJj|v%$#BZ&Fqtll zX#%QeWvYY%p)F5wFb{JmEQpgOkha{xZphVAQ_{eQX&x$5sx=$9#(|5=?>VMe@zX77LPKj*&5Qv88oN!l?iP zu7?iV4sP3$D<=6ordr@z7OV6S{=f=uM;mK$sX?}h;5oO38rHMdK|8O$TfGV zUKQ-QvT@xZ_x3w%a^Yp~#Uyk)b3z=QsHt7L9(|sM>0L}C7Jn?ctwO3M5He@fqw*9d zX98e41<8u#F8rUypS_Nym_WPXm zLtd9#BQqWyx1{ zFICCz9}a@&Bhv4}$&agFCcEAm1Pf@#+L0|m8itkhQSfQu1ueeo!r3jz{l_c>BxPQtc2^4>a6gnSm^*wTG?J~ITE1rBzJ2{b_)GU*S9#_8MJM2< za0ySsBK3U8F{;=y!`i2Hj{Xdns=h3ZyU-kqbR~^`?!RR8!koXdqS!@sYhkodAhkoH z-ew#&)@9HxNnP5PQTITT)f=tGre609ewR`{x@YjK{&!Ia{pt*Rf+0~GtZ-n@hL;(l8(0bu zL<|GV@pQb)5es*9P+~p!D9_hqKVMA7?#bodCAsI~7ugcm!1BE4P>3u*g{TcV0qo+1 F`!~3doRk0n delta 2461 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 diff --git a/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml b/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml index 1b4d86f0..ffc9c160 100644 --- a/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml +++ b/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml @@ -14,13 +14,12 @@ 'B2': 'x_cek_no${value or ""}#{border=thin_border;align=left;style=text}', 'C2': 'journal_id.name${value or ""}#{border=thin_border;align=left;style=text}', 'D2': 'partner_id.name${value or ""}#{border=thin_border;align=left;style=text}', - 'E2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', - 'F2': 'amount_in_try${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', - 'G2': '${(object.partner_id.z_payable_export if object.payment_type == "outbound" else (object.partner_id.z_receivable_export or object.destination_account_id.code)) or ""}#{border=thin_border;align=left;style=text}', - 'H2': 'name${value or ""}#{border=thin_border;align=left;style=text}', - 'I2': 'x_cek_no${value or ""}#{border=thin_border;align=left;style=text}', - 'J2': 'amount${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', - 'K2': '${"EURO" if object.currency_id.name == "EUR" else object.currency_id.name or ""}#{border=thin_border;align=left;style=text}', + 'E2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', + 'F2': '${"\'%s" % (object.partner_id.z_payable_export if object.payment_type == "outbound" else (object.partner_id.z_receivable_export or object.destination_account_id.code)) or ""}#{border=thin_border;align=left;style=text}', + 'G2': 'name${value or ""}#{border=thin_border;align=left;style=text}', + 'H2': 'x_cek_no${value or ""}#{border=thin_border;align=left;style=text}', + 'I2': 'amount${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', + 'J2': '${"EURO" if object.currency_id.name == "EUR" else object.currency_id.name or ""}#{border=thin_border;align=left;style=text}', }, }, }, From 66f12ad77a04b64f011f5cc05aafd65fa165450b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?yi=C4=9Fit=20budak?= Date: Sat, 23 Jul 2022 15:24:08 +0300 Subject: [PATCH 25/35] [12.0][ADD] export_account_move_line_xlsx --- altinkaya_excel_export/__init__.py | 1 + altinkaya_excel_export/__manifest__.py | 3 ++ .../export_account_move_line_xlsx/__init__.py | 1 + .../account_move_line_export.py | 24 ++++++++++++ .../move_lines.xlsx | Bin 0 -> 6027 bytes .../export_account_move_line_xlsx/reports.xml | 27 ++++++++++++++ .../temp_move_lines.xml | 35 ++++++++++++++++++ 7 files changed, 91 insertions(+) create mode 100644 altinkaya_excel_export/export_account_move_line_xlsx/__init__.py create mode 100644 altinkaya_excel_export/export_account_move_line_xlsx/account_move_line_export.py create mode 100644 altinkaya_excel_export/export_account_move_line_xlsx/move_lines.xlsx create mode 100644 altinkaya_excel_export/export_account_move_line_xlsx/reports.xml create mode 100644 altinkaya_excel_export/export_account_move_line_xlsx/temp_move_lines.xml diff --git a/altinkaya_excel_export/__init__.py b/altinkaya_excel_export/__init__.py index 24f78fb6..5f174899 100644 --- a/altinkaya_excel_export/__init__.py +++ b/altinkaya_excel_export/__init__.py @@ -5,3 +5,4 @@ from . import export_partner_currency_statement from . import export_partner_statement from . import export_account_payment_xlsx +from . import export_account_move_line_xlsx diff --git a/altinkaya_excel_export/__manifest__.py b/altinkaya_excel_export/__manifest__.py index cde9023f..ba4a4c6d 100644 --- a/altinkaya_excel_export/__manifest__.py +++ b/altinkaya_excel_export/__manifest__.py @@ -32,6 +32,9 @@ # Payment Excel 'export_account_payment_xlsx/reports.xml', 'export_account_payment_xlsx/temp_payments.xml', + # Move Line Excel + 'export_account_move_line_xlsx/reports.xml', + 'export_account_move_line_xlsx/temp_move_lines.xml', ], 'installable': True, } diff --git a/altinkaya_excel_export/export_account_move_line_xlsx/__init__.py b/altinkaya_excel_export/export_account_move_line_xlsx/__init__.py new file mode 100644 index 00000000..f196d0ae --- /dev/null +++ b/altinkaya_excel_export/export_account_move_line_xlsx/__init__.py @@ -0,0 +1 @@ +from . import account_move_line_export diff --git a/altinkaya_excel_export/export_account_move_line_xlsx/account_move_line_export.py b/altinkaya_excel_export/export_account_move_line_xlsx/account_move_line_export.py new file mode 100644 index 00000000..137a20b2 --- /dev/null +++ b/altinkaya_excel_export/export_account_move_line_xlsx/account_move_line_export.py @@ -0,0 +1,24 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from odoo import fields,models,api + + +class ReportAccountMoveLine(models.TransientModel): + _name = 'report.account.move.line' + _description = 'Wizard for report.account.move.line' + _inherit = 'xlsx.report' + + # Report Result, account.move.line + results = fields.Many2many( + comodel_name='account.move.line', + string='Move Lines', + compute='_get_move_lines', + help='Use compute fields, so there is nothing stored in database', + ) + + @api.multi + def _get_move_lines(self): + selected_ids = self.env.context.get('active_ids', []) + ids = self.env['account.move.line'].browse(selected_ids) + for rec in self: + rec.results = ids diff --git a/altinkaya_excel_export/export_account_move_line_xlsx/move_lines.xlsx b/altinkaya_excel_export/export_account_move_line_xlsx/move_lines.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..64906817f1d4293f6345d7ebc220ef5630b42b70 GIT binary patch literal 6027 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 + + + + + report.account.move.line + report.account.move.line + + primary + + + Yevmiye kalemlerini, Zirve Yazılım sistemine uygun şekilde çıktı almak için aşağıdaki butonları kullanınız. + + + + + + + + + \ No newline at end of file diff --git a/altinkaya_excel_export/export_account_move_line_xlsx/temp_move_lines.xml b/altinkaya_excel_export/export_account_move_line_xlsx/temp_move_lines.xml new file mode 100644 index 00000000..9c133d36 --- /dev/null +++ b/altinkaya_excel_export/export_account_move_line_xlsx/temp_move_lines.xml @@ -0,0 +1,35 @@ + + + + report.account.move.line + move_lines.xlsx + Yevmiyeler Excel + Zirve Muhasebe programına uygun biçimde yevmiyelerin içeri aktarılabilmesini sağlayan Excel şablonu. + + { + '__EXPORT__': { + 'Fatura': { + 'results': { # prefix with _CONT_ to continue rows from previous row field + 'A2': '${object.date.strftime("%d.%m.%Y") or ""}#{border=thin_border;align=left;style=date}', + 'B2': '${object.date_maturity.strftime("%d.%m.%Y") or ""}#{border=thin_border;align=left;style=date}', + 'C2': 'display_name${value or ""}#{border=thin_border;align=left;style=text}', + 'D2': 'move_ref${value or ""}#{border=thin_border;align=left;style=text}', + 'E2': 'partner_id.display_name${value or ""}#{border=thin_border;align=left;style=text}', + 'F2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', + 'G2': '${"\'%s" % (object.partner_id.z_payable_export if object.account_id.user_type_id.type == \'payable\' else (object.partner_id.z_receivable_export or object.account_id.code)) or ""}#{border=thin_border;align=left;style=text}', + 'H2': 'debit${value or ""}#{border=thin_border;align=left;style=number}', + 'I2': 'credit${value or ""}#{border=thin_border;align=left;style=number}', + 'J2': '${"EURO" if object.currency_id.name == "EUR" else object.currency_id.name or ""}#{border=thin_border;align=left;style=text}', + 'K2': 'amount_currency${value or ""}#{border=thin_border;align=left;style=number}', + }, + }, + }, + } + + + + + + + + \ No newline at end of file From 21b82f42c3619ae510a2413579e55f10dd9846f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?yi=C4=9Fit=20budak?= Date: Sat, 23 Jul 2022 16:23:43 +0300 Subject: [PATCH 26/35] [12.0][FIX] move ref on excel --- .../move_lines.xlsx | Bin 6027 -> 6023 bytes .../temp_move_lines.xml | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/altinkaya_excel_export/export_account_move_line_xlsx/move_lines.xlsx b/altinkaya_excel_export/export_account_move_line_xlsx/move_lines.xlsx index 64906817f1d4293f6345d7ebc220ef5630b42b70..be8fbfaf468bd0701f093322dd213589e919cb16 100644 GIT binary patch delta 2665 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 Date: Tue, 13 Sep 2022 14:43:46 +0300 Subject: [PATCH 27/35] [12.0][FIX] 120 account on out_refund --- .../export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml index 28a4552f..237ded16 100644 --- a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml +++ b/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml @@ -19,9 +19,9 @@ 'G2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', 'H2': 'partner_id.vat${value or ""}#{border=thin_border;align=left;style=text}', 'I2': 'amount_untaxed${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=number}', - 'J2': '${"\'%s" % (object.partner_id.z_payable_export or "")}#{border=thin_border;align=left;style=text}', + 'J2': '${"\'%s" % (object.partner_id.z_payable_export or "") if object.type != "out_refund" else "\'%s" % (object.partner_id.z_receivable_export or "")}#{border=thin_border;align=left;style=text}', - 'K2': 'partner_id.z_payable_export${value or ""}#{border=thin_border;align=left;style=text}', + 'K2': '${"%s" % (object.partner_id.z_payable_export or "") if object.type != "out_refund" else "%s" % (object.partner_id.z_receivable_export or "")}#{border=thin_border;align=left;style=text}', 'L2': '${" ".join("* %s ^" % x.account_id.code for x in object.invoice_line_ids)}#{border=thin_border;align=left;style=text}', 'M2': '${object.invoice_line_ids[0].account_id.code if object.invoice_line_ids else ""}#{border=thin_border;align=left;style=text}', From d4d1f78d45148c1fe37c324ec9332635ca1d6a7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?yi=C4=9Fit=20budak?= Date: Tue, 6 Dec 2022 22:18:03 +0300 Subject: [PATCH 28/35] [12.0][ADD] account.invoice.kviks --- altinkaya_excel_export/__init__.py | 1 + altinkaya_excel_export/__manifest__.py | 3 ++ .../__init__.py | 1 + .../account_invoice_kviks_export.py | 25 ++++++++++++++ .../kviks.xlsx | Bin 0 -> 6313 bytes .../reports.xml | 27 +++++++++++++++ .../temp_kviks.xml | 31 ++++++++++++++++++ 7 files changed, 88 insertions(+) create mode 100644 altinkaya_excel_export/export_account_invoice_kviks_xlsx/__init__.py create mode 100644 altinkaya_excel_export/export_account_invoice_kviks_xlsx/account_invoice_kviks_export.py create mode 100644 altinkaya_excel_export/export_account_invoice_kviks_xlsx/kviks.xlsx create mode 100644 altinkaya_excel_export/export_account_invoice_kviks_xlsx/reports.xml create mode 100644 altinkaya_excel_export/export_account_invoice_kviks_xlsx/temp_kviks.xml diff --git a/altinkaya_excel_export/__init__.py b/altinkaya_excel_export/__init__.py index 5f174899..142e194a 100644 --- a/altinkaya_excel_export/__init__.py +++ b/altinkaya_excel_export/__init__.py @@ -6,3 +6,4 @@ from . import export_partner_statement from . import export_account_payment_xlsx from . import export_account_move_line_xlsx +from . import export_account_invoice_kviks_xlsx diff --git a/altinkaya_excel_export/__manifest__.py b/altinkaya_excel_export/__manifest__.py index ba4a4c6d..5716fd99 100644 --- a/altinkaya_excel_export/__manifest__.py +++ b/altinkaya_excel_export/__manifest__.py @@ -35,6 +35,9 @@ # Move Line Excel 'export_account_move_line_xlsx/reports.xml', 'export_account_move_line_xlsx/temp_move_lines.xml', + # Kviks Excel + 'export_account_invoice_kviks_xlsx/reports.xml', + 'export_account_invoice_kviks_xlsx/temp_kviks.xml', ], 'installable': True, } diff --git a/altinkaya_excel_export/export_account_invoice_kviks_xlsx/__init__.py b/altinkaya_excel_export/export_account_invoice_kviks_xlsx/__init__.py new file mode 100644 index 00000000..724f73ea --- /dev/null +++ b/altinkaya_excel_export/export_account_invoice_kviks_xlsx/__init__.py @@ -0,0 +1 @@ +from . import account_invoice_kviks_export diff --git a/altinkaya_excel_export/export_account_invoice_kviks_xlsx/account_invoice_kviks_export.py b/altinkaya_excel_export/export_account_invoice_kviks_xlsx/account_invoice_kviks_export.py new file mode 100644 index 00000000..afb6373c --- /dev/null +++ b/altinkaya_excel_export/export_account_invoice_kviks_xlsx/account_invoice_kviks_export.py @@ -0,0 +1,25 @@ +# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from odoo import fields, models, api + + +class ReportAccountInvoiceKVIKS(models.TransientModel): + _name = 'report.account.invoice.kviks' + _description = 'Wizard for report.account.invoice.kviks' + _inherit = 'xlsx.report' + + # Report Result, account.invoice + results = fields.Many2many( + comodel_name='account.invoice', + string='Invoices', + compute='_get_invoices', + help='Use compute fields, so there is nothing stored in database', + ) + + @api.multi + def _get_invoices(self): + selected_ids = self.env.context.get('active_ids', []) + ids = self.env['account.invoice'].browse(selected_ids) + for rec in self: + rec.results = ids diff --git a/altinkaya_excel_export/export_account_invoice_kviks_xlsx/kviks.xlsx b/altinkaya_excel_export/export_account_invoice_kviks_xlsx/kviks.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..09188c078b4b510d7aedbdfa9cc7828f301aa6b1 GIT binary patch literal 6313 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 + + + + + report.account.invoice.kviks + report.account.invoice.kviks + + primary + + + KVIKS sistemine uygun şekilde çıktı almak için aşağıdaki + butonları kullanınız. + + + + + + + + \ No newline at end of file diff --git a/altinkaya_excel_export/export_account_invoice_kviks_xlsx/temp_kviks.xml b/altinkaya_excel_export/export_account_invoice_kviks_xlsx/temp_kviks.xml new file mode 100644 index 00000000..0839402d --- /dev/null +++ b/altinkaya_excel_export/export_account_invoice_kviks_xlsx/temp_kviks.xml @@ -0,0 +1,31 @@ + + + + report.account.invoice.kviks + kviks.xlsx + KVIKS Sevkiyat Bildirimi + KVIKS sistemine uygun biçimde faturaların içeri aktarılabilmesini sağlayan Excel şablonu. + + { + '__EXPORT__': { + 'Bilgilendirme Formu': { # sheet can be name (string) or index (integer) + 'results': { # prefix with _CONT_ to continue rows from previous row field + 'A2': 'number${value or ""}#{border=thin_border;align=left;style=text}', + 'B2': 'gtb_declaration_no${value or ""}#{border=thin_border;align=left;style=text}', + 'C2': '${object.gtb_intac_date and object.gtb_intac_date.strftime("%d.%m.%Y") or ""}#{border=thin_border;align=left;style=date}', + 'D2': '${object.invoice_line_ids[0].product_id.hs_code_id.local_code or object.invoice_line_ids[0].product_id.categ_id.hs_code_id.local_code or ""}#{border=thin_border;align=left;style=text}', + 'F2': 'partner_id${value.display_name or ""}#{border=thin_border;align=left;style=text}', + 'G2': 'partner_id${value.country_id.display_name or ""}#{border=thin_border;align=left;style=text}', + 'M2': 'amount_total${value or ""}#{border=thin_border;align=left;style=number}', + 'N2': 'currency_id${value.name or ""}#{border=thin_border;align=left;style=text}', + }, + }, + }, + } + + + + + + + \ No newline at end of file From 2db04b0f644d85b592f263d5553ff81939be0da6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?yi=C4=9Fit=20budak?= Date: Wed, 4 Jan 2023 11:08:17 +0300 Subject: [PATCH 29/35] [12.0][FIX] tax office name changed --- .../export_purchase_order_xlsx/temp_po_en.xml | 2 +- .../export_purchase_order_xlsx/temp_po_tr.xml | 2 +- .../export_purchase_order_xlsx/temp_rfq_tr.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_en.xml b/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_en.xml index a8b2cbf8..0db468d6 100644 --- a/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_en.xml +++ b/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_en.xml @@ -22,7 +22,7 @@ 'B19': '${"ALTINKAYA ELEKTRONIK CIH. KUT.SAN.TIC.A.Ş." or ""}#{align=left;style=text}', 'B20': '${"1469 SOK NO:10 ivedik OSB" or ""}#{align=left;style=text}', 'B21': '${"Yenimahalle ANKARA / TURKEY" or ""}#{align=left;style=text}', - 'B22': '${"ULUS TAX OFFICE VAT 0610422947" or ""}#{align=left;style=text}', + 'B22': '${"İVEDİK TAX OFFICE VAT 0610422947" or ""}#{align=left;style=text}', 'B23': '${"Phone: +903123952768" or ""}#{align=left;style=text}', 'C14': '${"FOB" or ""}#{align=left;font=bold;style=text}', 'F9': '${"Total" or ""}#{align=right;font=bold;style=text}', diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_tr.xml b/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_tr.xml index ed448110..6bcbe7ce 100644 --- a/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_tr.xml +++ b/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_tr.xml @@ -21,7 +21,7 @@ 'B20': '${"%s" % (object.picking_type_id.warehouse_id.partner_id.name) or ""}#{align=left;style=text}', 'B21': '${"%s %s %s" % (object.picking_type_id.warehouse_id.partner_id.neighbour_id.name or "", object.picking_type_id.warehouse_id.partner_id.street or "", object.picking_type_id.warehouse_id.partner_id.street2 or "") or ""}#{align=left;style=text}', 'B22': '${"%s %s %s %s" % (object.picking_type_id.warehouse_id.partner_id.region_id.name or "", object.picking_type_id.warehouse_id.partner_id.zip or "", object.picking_type_id.warehouse_id.partner_id.district_id.name or "", object.picking_type_id.warehouse_id.partner_id.state_id.name or "")}#{align=left;style=text}', - 'B23': '${"Ulus V.D. %s" % (object.picking_type_id.warehouse_id.partner_id.vat) or ""}#{align=left;style=text}', + 'B23': '${"İvedik V.D. %s" % (object.picking_type_id.warehouse_id.partner_id.vat) or ""}#{align=left;style=text}', 'B24': '${"Tel: %s" % (object.picking_type_id.warehouse_id.partner_id.phone) or ""}#{align=left;style=text}', 'F9': '${"Toplam" or ""}#{align=right;font=bold;style=text}', 'F10': '${"KDV (%18)" or ""}#{align=right;font=bold;style=text}', diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_tr.xml b/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_tr.xml index 7fd4cac8..551ec0b1 100644 --- a/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_tr.xml +++ b/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_tr.xml @@ -19,7 +19,7 @@ 'B20': '${"%s" % (object.picking_type_id.warehouse_id.partner_id.name) or ""}#{style=text}', 'B21': '${"%s %s %s" % (object.picking_type_id.warehouse_id.partner_id.neighbour_id.name or "", object.picking_type_id.warehouse_id.partner_id.street or "", object.picking_type_id.warehouse_id.partner_id.street2 or "") or ""}#{style=text}', 'B22': '${"%s %s %s %s" % (object.picking_type_id.warehouse_id.partner_id.region_id.name or "", object.picking_type_id.warehouse_id.partner_id.zip or "", object.picking_type_id.warehouse_id.partner_id.district_id.name or "", object.picking_type_id.warehouse_id.partner_id.state_id.name or "")}#{style=text}', - 'B23': '${"Ulus V.D. %s" % (object.picking_type_id.warehouse_id.partner_id.vat) or ""}#{style=text}', + 'B23': '${"İvedik V.D. %s" % (object.picking_type_id.warehouse_id.partner_id.vat) or ""}#{style=text}', 'B24': '${"Tel: %s" % (object.picking_type_id.warehouse_id.partner_id.phone) or ""}#{align=left;style=text}', 'F9': '${"Toplam" or ""}#{align=right;font=bold;style=text}', 'F10': '${"KDV (%18)" or ""}#{align=right;font=bold;style=text}', From 5ba0206ff54ae3f6be01e08f8f326bfe31659ea0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yi=C4=9Fit=20Budak?= Date: Mon, 22 May 2023 17:56:56 +0300 Subject: [PATCH 30/35] [12.0][FIX] Add missing descriptions to models --- .../export_partner_statement/partner_statement_export.py | 1 + 1 file changed, 1 insertion(+) diff --git a/altinkaya_excel_export/export_partner_statement/partner_statement_export.py b/altinkaya_excel_export/export_partner_statement/partner_statement_export.py index f60c2d42..e0896e64 100644 --- a/altinkaya_excel_export/export_partner_statement/partner_statement_export.py +++ b/altinkaya_excel_export/export_partner_statement/partner_statement_export.py @@ -91,6 +91,7 @@ def _get_statement_data(self): class StatementLines(models.TransientModel): _name = 'partner.statement.lines' + _description = "Transient model for partner statement" sequence = fields.Integer('Sequence') number = fields.Char('Number') From 6f79251fe76dac81f88135f33d72a6621abc90cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?yi=C4=9Fit=20budak?= Date: Fri, 7 Jul 2023 10:01:24 +0300 Subject: [PATCH 31/35] [12.0][FIX] Tax rates changed --- .../export_purchase_order_xlsx/temp_po_tr.xml | 2 +- .../export_purchase_order_xlsx/temp_rfq_tr.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_tr.xml b/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_tr.xml index 6bcbe7ce..236fbaad 100644 --- a/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_tr.xml +++ b/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_tr.xml @@ -24,7 +24,7 @@ 'B23': '${"İvedik V.D. %s" % (object.picking_type_id.warehouse_id.partner_id.vat) or ""}#{align=left;style=text}', 'B24': '${"Tel: %s" % (object.picking_type_id.warehouse_id.partner_id.phone) or ""}#{align=left;style=text}', 'F9': '${"Toplam" or ""}#{align=right;font=bold;style=text}', - 'F10': '${"KDV (%18)" or ""}#{align=right;font=bold;style=text}', + 'F10': '${"KDV" or ""}#{align=right;font=bold;style=text}', 'F11': '${"Genel Toplam" or ""}#{align=right;font=bold;style=text}', 'F20': '${"Satınalma Emri Onayı" or ""}#{font=bold;align=center;style=text}', 'F21': 'user_id.name${value or ""}#{align=center;style=text}', diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_tr.xml b/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_tr.xml index 551ec0b1..7a702835 100644 --- a/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_tr.xml +++ b/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_tr.xml @@ -22,7 +22,7 @@ 'B23': '${"İvedik V.D. %s" % (object.picking_type_id.warehouse_id.partner_id.vat) or ""}#{style=text}', 'B24': '${"Tel: %s" % (object.picking_type_id.warehouse_id.partner_id.phone) or ""}#{align=left;style=text}', 'F9': '${"Toplam" or ""}#{align=right;font=bold;style=text}', - 'F10': '${"KDV (%18)" or ""}#{align=right;font=bold;style=text}', + 'F10': '${"KDV" or ""}#{align=right;font=bold;style=text}', 'F11': '${"Genel Toplam" or ""}#{align=right;font=bold;style=text}', 'F20': '${"Satınalma Emri Onayı" or ""}#{font=bold;align=center;style=text}', 'F21': 'user_id.name${value or ""}#{align=center;style=text}', From 778d4ed1db48917ddf4d5af7cff08a7d68729d2c Mon Sep 17 00:00:00 2001 From: samet Date: Wed, 16 Aug 2023 15:54:34 +0300 Subject: [PATCH 32/35] [12.0][FIX] added %10 and %20 tax rates to zirve excel report. --- .../gelir_fatura.xlsx | Bin 6144 -> 6377 bytes .../temp_gelir_fatura.xml | 31 ++++++++++-------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/gelir_fatura.xlsx b/altinkaya_excel_export/export_account_invoice_xlsx/gelir_fatura.xlsx index 98786490bdd74c8a46257d11bbd4ebb244e6e3b9..ff77a322581c201b74d1bef75406b4cbf9fe6291 100644 GIT binary patch delta 2819 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 0.0 else 0}#{border=thin_border;align=left;style=number}', - 'M2': 'partner_id.z_receivable_export${value or ""}#{border=thin_border;align=left;style=text}', - 'N2': '${"EURO" if object.currency_id.name == "EUR" else object.currency_id.name or ""}#{border=thin_border;align=left;style=text}', - 'O2': '${"%.2f" % (sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=number}', - 'P2': '${"%.2f" % (sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=number}', - 'Q2': '${"%.2f" % (sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=number}', - 'R2': '${"%.2f" % (sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=number}', - 'S2': 'amount_untaxed${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', - 'T2': 'amount_tax${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', + 'H2': '${"%.2f" % (object.currency_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 9 < (x.amount/x.base*100) < 11)) or 0.0}#{border=thin_border;align=left;style=number}', + 'I2': '${"%.2f" % (object.currency_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 9 < (x.amount/x.base*100) < 11)) or 0.0}#{border=thin_border;align=left;style=number}', + 'J2': '${"%.2f" % (object.currency_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=number}', + 'K2': '${"%.2f" % (object.currency_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=number}', + 'L2': '${"%.2f" % (object.currency_rate * sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 19 < (x.amount/x.base*100) < 21)) or 0.0}#{border=thin_border;align=left;style=number}', + 'M2': '${"%.2f" % (object.currency_rate * sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 19 < (x.amount/x.base*100) < 21)) or 0.0}#{border=thin_border;align=left;style=number}', + 'N2': 'amount_untaxed${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=number}', + 'O2': 'amount_tax${"%.2f" % (object.currency_rate * value) or ""}#{border=thin_border;align=left;style=number}', + 'P2': '${"%.f" % (object.amount_tax / object.amount_untaxed * 100) if object.amount_tax > 0.0 else 0}#{border=thin_border;align=left;style=number}', + 'Q2': 'partner_id.z_receivable_export${value or ""}#{border=thin_border;align=left;style=text}', + 'R2': '${"EURO" if object.currency_id.name == "EUR" else object.currency_id.name or ""}#{border=thin_border;align=left;style=text}', + 'S2': '${"%.2f" % (sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=number}', + 'T2': '${"%.2f" % (sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 7 < (x.amount/x.base*100) < 9)) or 0.0}#{border=thin_border;align=left;style=number}', + 'U2': '${"%.2f" % (sum(x.base for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=number}', + 'V2': '${"%.2f" % (sum(x.amount for x in object.tax_line_ids if 0.0 < x.base and 17 < (x.amount/x.base*100) < 19)) or 0.0}#{border=thin_border;align=left;style=number}', + 'W2': 'amount_untaxed${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', + 'X2': 'amount_tax${"%.2f" % (value) or ""}#{border=thin_border;align=left;style=number}', }, }, From da02ec9bf66b6d6fa72b55ff1b1dd836eb0f085e Mon Sep 17 00:00:00 2001 From: yibudak Date: Tue, 1 Oct 2024 14:54:40 +0000 Subject: [PATCH 33/35] [FIX] Move line exporting payable account code --- .../export_account_move_line_xlsx/temp_move_lines.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/altinkaya_excel_export/export_account_move_line_xlsx/temp_move_lines.xml b/altinkaya_excel_export/export_account_move_line_xlsx/temp_move_lines.xml index 8c2df14b..8c1bb442 100644 --- a/altinkaya_excel_export/export_account_move_line_xlsx/temp_move_lines.xml +++ b/altinkaya_excel_export/export_account_move_line_xlsx/temp_move_lines.xml @@ -16,7 +16,7 @@ 'D2': 'name${"%s %s" % (object.name, object.move_ref or object.move_id.name) or ""}#{border=thin_border;align=left;style=text}', 'E2': 'partner_id.display_name${value or ""}#{border=thin_border;align=left;style=text}', 'F2': '${"\'%s" % (object.partner_id.vat or "")}#{border=thin_border;align=left;style=text}', - 'G2': '${"\'%s" % (object.partner_id.z_payable_export if object.account_id.user_type_id.type == \'payable\' else (object.partner_id.z_receivable_export if object.account_id.user_type_id.type == \'receivable\' else object.account_id.code)) or ""}#{border=thin_border;align=left;style=text}', + 'G2': '${"\'%s" % ((object.partner_id.z_payable_export or object.account_id.code) if object.account_id.user_type_id.type == \'payable\' else (object.partner_id.z_receivable_export if object.account_id.user_type_id.type == \'receivable\' else object.account_id.code)) or ""}#{border=thin_border;align=left;style=text}', 'H2': 'debit${value or ""}#{border=thin_border;align=left;style=number}', 'I2': 'credit${value or ""}#{border=thin_border;align=left;style=number}', 'J2': '${"EURO" if object.currency_id.name == "EUR" else object.currency_id.name or ""}#{border=thin_border;align=left;style=text}', From aa3e2ecd5660b9e469f5f2f9a5bf30e389708d16 Mon Sep 17 00:00:00 2001 From: Ismail Cagan Yilmaz Date: Tue, 14 Jan 2025 17:47:45 +0300 Subject: [PATCH 34/35] [MIG] altinkaya_excel_export: Migration to 16.0 --- altinkaya_excel_export/__init__.py | 6 +- altinkaya_excel_export/__manifest__.py | 65 ++++--- .../__init__.py | 1 - .../account_invoice_kviks_export.py | 25 --- .../reports.xml | 27 --- .../export_account_invoice_xlsx/__init__.py | 1 - .../account_invoice_export.py | 25 --- .../export_account_invoice_xlsx/reports.xml | 35 ---- .../__init__.py | 1 + .../account_move_kviks_export.py | 27 +++ .../kviks.xlsx | Bin .../reports.xml | 28 +++ .../temp_kviks.xml | 12 +- .../account_move_line_export.py | 26 +-- .../export_account_move_line_xlsx/reports.xml | 26 +-- .../temp_move_lines.xml | 8 +- .../export_account_move_xlsx/__init__.py | 1 + .../account_move_export.py | 27 +++ .../gelir_fatura.xlsx | Bin .../export_account_move_xlsx/reports.xml | 40 ++++ .../temp_gelir_fatura.xml | 12 +- .../temp_zirve_masraf_fatura.xml | 12 +- .../zirve_masraf_fatura.xlsx | Bin .../account_payment_export.py | 26 +-- .../export_account_payment_xlsx/reports.xml | 27 +-- .../temp_payments.xml | 8 +- .../__init__.py | 2 +- .../partner_statement_currency_export.py | 183 +++++++++++------- .../reports.xml | 32 +-- .../temp_partner_statement_currency.xml | 8 +- .../export_partner_statement/__init__.py | 2 +- .../partner_statement_export.py | 183 +++++++++++------- .../export_partner_statement/reports.xml | 30 +-- .../temp_partner_statement.xml | 8 +- .../export_purchase_order_xlsx/reports.xml | 66 +++---- .../export_purchase_order_xlsx/temp_po_en.xml | 8 +- .../export_purchase_order_xlsx/temp_po_tr.xml | 8 +- .../temp_rfq_en.xml | 8 +- .../temp_rfq_tr.xml | 8 +- .../security/ir.model.access.csv | 12 ++ 40 files changed, 578 insertions(+), 446 deletions(-) delete mode 100644 altinkaya_excel_export/export_account_invoice_kviks_xlsx/__init__.py delete mode 100644 altinkaya_excel_export/export_account_invoice_kviks_xlsx/account_invoice_kviks_export.py delete mode 100644 altinkaya_excel_export/export_account_invoice_kviks_xlsx/reports.xml delete mode 100644 altinkaya_excel_export/export_account_invoice_xlsx/__init__.py delete mode 100644 altinkaya_excel_export/export_account_invoice_xlsx/account_invoice_export.py delete mode 100644 altinkaya_excel_export/export_account_invoice_xlsx/reports.xml create mode 100644 altinkaya_excel_export/export_account_move_kviks_xlsx/__init__.py create mode 100644 altinkaya_excel_export/export_account_move_kviks_xlsx/account_move_kviks_export.py rename altinkaya_excel_export/{export_account_invoice_kviks_xlsx => export_account_move_kviks_xlsx}/kviks.xlsx (100%) create mode 100644 altinkaya_excel_export/export_account_move_kviks_xlsx/reports.xml rename altinkaya_excel_export/{export_account_invoice_kviks_xlsx => export_account_move_kviks_xlsx}/temp_kviks.xml (83%) create mode 100644 altinkaya_excel_export/export_account_move_xlsx/__init__.py create mode 100644 altinkaya_excel_export/export_account_move_xlsx/account_move_export.py rename altinkaya_excel_export/{export_account_invoice_xlsx => export_account_move_xlsx}/gelir_fatura.xlsx (100%) create mode 100644 altinkaya_excel_export/export_account_move_xlsx/reports.xml rename altinkaya_excel_export/{export_account_invoice_xlsx => export_account_move_xlsx}/temp_gelir_fatura.xml (92%) rename altinkaya_excel_export/{export_account_invoice_xlsx => export_account_move_xlsx}/temp_zirve_masraf_fatura.xml (93%) rename altinkaya_excel_export/{export_account_invoice_xlsx => export_account_move_xlsx}/zirve_masraf_fatura.xlsx (100%) create mode 100644 altinkaya_excel_export/security/ir.model.access.csv diff --git a/altinkaya_excel_export/__init__.py b/altinkaya_excel_export/__init__.py index 142e194a..9bf406bf 100644 --- a/altinkaya_excel_export/__init__.py +++ b/altinkaya_excel_export/__init__.py @@ -1,9 +1,7 @@ -# -*- coding: utf-8 -*- - from . import export_purchase_order_xlsx -from . import export_account_invoice_xlsx +from . import export_account_move_xlsx from . import export_partner_currency_statement from . import export_partner_statement from . import export_account_payment_xlsx from . import export_account_move_line_xlsx -from . import export_account_invoice_kviks_xlsx +from . import export_account_move_kviks_xlsx diff --git a/altinkaya_excel_export/__manifest__.py b/altinkaya_excel_export/__manifest__.py index 5716fd99..82969e0c 100644 --- a/altinkaya_excel_export/__manifest__.py +++ b/altinkaya_excel_export/__manifest__.py @@ -1,43 +1,44 @@ -# -*- coding: utf-8 -*- +# Copyright 2025 Ismail Cagan Yilmaz (https://github.com/milleniumkid) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + { - 'name': "Altinkaya Excel Reports", - 'summary': """ + "name": "Altinkaya Excel Reports", + "summary": """ Various Excel reports""", - 'description': """ - This module will allow exporting in Excel using - OCA/server-tools/excel_import_export module. - """, - 'author': "Yavuz Avcı,Yiğit Budak", - 'website': "", - 'category': 'Uncategorized', - 'version': '1.0', - 'depends': ['excel_import_export', 'purchase', 'account'], - 'data': [ + "author": "Yavuz Avcı,Yiğit Budak, Altinkaya Enclosures", + "website": "https://github.com/altinkaya-opensource/odoo-addons", + "license": "LGPL-3", + "category": "Uncategorized", + "version": "16.0.1.0.0", + "depends": ["excel_import_export", "purchase", "account"], + "data": [ # Purchase - 'export_purchase_order_xlsx/reports.xml', - 'export_purchase_order_xlsx/temp_po_en.xml', - 'export_purchase_order_xlsx/temp_po_tr.xml', - 'export_purchase_order_xlsx/temp_rfq_en.xml', - 'export_purchase_order_xlsx/temp_rfq_tr.xml', + "export_purchase_order_xlsx/reports.xml", + "export_purchase_order_xlsx/temp_po_en.xml", + "export_purchase_order_xlsx/temp_po_tr.xml", + "export_purchase_order_xlsx/temp_rfq_en.xml", + "export_purchase_order_xlsx/temp_rfq_tr.xml", # Account - 'export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml', - 'export_account_invoice_xlsx/temp_gelir_fatura.xml', - 'export_account_invoice_xlsx/reports.xml', + "export_account_move_xlsx/temp_zirve_masraf_fatura.xml", + "export_account_move_xlsx/temp_gelir_fatura.xml", + "export_account_move_xlsx/reports.xml", # Partner Statement - 'export_partner_statement/temp_partner_statement.xml', - 'export_partner_statement/reports.xml', + "export_partner_statement/temp_partner_statement.xml", + "export_partner_statement/reports.xml", # Partner Statement Currency - 'export_partner_currency_statement/temp_partner_statement_currency.xml', - 'export_partner_currency_statement/reports.xml', + "export_partner_currency_statement/temp_partner_statement_currency.xml", + "export_partner_currency_statement/reports.xml", # Payment Excel - 'export_account_payment_xlsx/reports.xml', - 'export_account_payment_xlsx/temp_payments.xml', + "export_account_payment_xlsx/reports.xml", + "export_account_payment_xlsx/temp_payments.xml", # Move Line Excel - 'export_account_move_line_xlsx/reports.xml', - 'export_account_move_line_xlsx/temp_move_lines.xml', + "export_account_move_line_xlsx/reports.xml", + "export_account_move_line_xlsx/temp_move_lines.xml", # Kviks Excel - 'export_account_invoice_kviks_xlsx/reports.xml', - 'export_account_invoice_kviks_xlsx/temp_kviks.xml', + "export_account_move_kviks_xlsx/reports.xml", + "export_account_move_kviks_xlsx/temp_kviks.xml", + # Access Rights + "security/ir.model.access.csv", ], - 'installable': True, + "installable": True, } diff --git a/altinkaya_excel_export/export_account_invoice_kviks_xlsx/__init__.py b/altinkaya_excel_export/export_account_invoice_kviks_xlsx/__init__.py deleted file mode 100644 index 724f73ea..00000000 --- a/altinkaya_excel_export/export_account_invoice_kviks_xlsx/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import account_invoice_kviks_export diff --git a/altinkaya_excel_export/export_account_invoice_kviks_xlsx/account_invoice_kviks_export.py b/altinkaya_excel_export/export_account_invoice_kviks_xlsx/account_invoice_kviks_export.py deleted file mode 100644 index afb6373c..00000000 --- a/altinkaya_excel_export/export_account_invoice_kviks_xlsx/account_invoice_kviks_export.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/) -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) - -from odoo import fields, models, api - - -class ReportAccountInvoiceKVIKS(models.TransientModel): - _name = 'report.account.invoice.kviks' - _description = 'Wizard for report.account.invoice.kviks' - _inherit = 'xlsx.report' - - # Report Result, account.invoice - results = fields.Many2many( - comodel_name='account.invoice', - string='Invoices', - compute='_get_invoices', - help='Use compute fields, so there is nothing stored in database', - ) - - @api.multi - def _get_invoices(self): - selected_ids = self.env.context.get('active_ids', []) - ids = self.env['account.invoice'].browse(selected_ids) - for rec in self: - rec.results = ids diff --git a/altinkaya_excel_export/export_account_invoice_kviks_xlsx/reports.xml b/altinkaya_excel_export/export_account_invoice_kviks_xlsx/reports.xml deleted file mode 100644 index f5de2824..00000000 --- a/altinkaya_excel_export/export_account_invoice_kviks_xlsx/reports.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - report.account.invoice.kviks - report.account.invoice.kviks - - primary - - - KVIKS sistemine uygun şekilde çıktı almak için aşağıdaki - butonları kullanınız. - - - - - - - - \ No newline at end of file diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/__init__.py b/altinkaya_excel_export/export_account_invoice_xlsx/__init__.py deleted file mode 100644 index 6b247ebd..00000000 --- a/altinkaya_excel_export/export_account_invoice_xlsx/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import account_invoice_export \ No newline at end of file diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/account_invoice_export.py b/altinkaya_excel_export/export_account_invoice_xlsx/account_invoice_export.py deleted file mode 100644 index dcce1901..00000000 --- a/altinkaya_excel_export/export_account_invoice_xlsx/account_invoice_export.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/) -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) - -from odoo import fields,models,api - - -class ReportAccountInvoice(models.TransientModel): - _name = 'report.account.invoice' - _description = 'Wizard for report.account.invoice' - _inherit = 'xlsx.report' - - # Report Result, account.invoice - results = fields.Many2many( - comodel_name='account.invoice', - string='Invoices', - compute='_get_invoices', - help='Use compute fields, so there is nothing stored in database', - ) - - @api.multi - def _get_invoices(self): - selected_ids = self.env.context.get('active_ids', []) - ids = self.env['account.invoice'].browse(selected_ids) - for rec in self: - rec.results = ids diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/reports.xml b/altinkaya_excel_export/export_account_invoice_xlsx/reports.xml deleted file mode 100644 index 3f10d3b1..00000000 --- a/altinkaya_excel_export/export_account_invoice_xlsx/reports.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - report.account.invoice - report.account.invoice - - primary - - - Faturaları, Zirve Yazılım sistemine uygun şekilde çıktı almak için aşağıdaki butonları kullanınız. - - - - - - - - - - - \ No newline at end of file diff --git a/altinkaya_excel_export/export_account_move_kviks_xlsx/__init__.py b/altinkaya_excel_export/export_account_move_kviks_xlsx/__init__.py new file mode 100644 index 00000000..7007e2d7 --- /dev/null +++ b/altinkaya_excel_export/export_account_move_kviks_xlsx/__init__.py @@ -0,0 +1 @@ +from . import account_move_kviks_export diff --git a/altinkaya_excel_export/export_account_move_kviks_xlsx/account_move_kviks_export.py b/altinkaya_excel_export/export_account_move_kviks_xlsx/account_move_kviks_export.py new file mode 100644 index 00000000..b86e4c0c --- /dev/null +++ b/altinkaya_excel_export/export_account_move_kviks_xlsx/account_move_kviks_export.py @@ -0,0 +1,27 @@ +# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +# Copyright 2025 Ismail Cagan Yilmaz (https://github.com/milleniumkid) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import api, fields, models + + +class ReportAccountInvoiceKVIKS(models.TransientModel): + _name = "report.account.move.kviks" + _description = "Wizard for report.account.move.kviks" + _inherit = "xlsx.report" + + # Report Result, account.move + results = fields.Many2many( + comodel_name="account.move", + string="Invoices", + compute="_compute_invoices", + help="Use compute fields, so there is nothing stored in database", + ) + + def _compute_invoices(self): + selected_ids = self.env.context.get("active_ids", []) + ids = self.env["account.move"].browse(selected_ids) + for rec in self: + rec.results = ids diff --git a/altinkaya_excel_export/export_account_invoice_kviks_xlsx/kviks.xlsx b/altinkaya_excel_export/export_account_move_kviks_xlsx/kviks.xlsx similarity index 100% rename from altinkaya_excel_export/export_account_invoice_kviks_xlsx/kviks.xlsx rename to altinkaya_excel_export/export_account_move_kviks_xlsx/kviks.xlsx diff --git a/altinkaya_excel_export/export_account_move_kviks_xlsx/reports.xml b/altinkaya_excel_export/export_account_move_kviks_xlsx/reports.xml new file mode 100644 index 00000000..d84d28d8 --- /dev/null +++ b/altinkaya_excel_export/export_account_move_kviks_xlsx/reports.xml @@ -0,0 +1,28 @@ + + + + + report.account.move.kviks + report.account.move.kviks + + primary + + + KVIKS sistemine uygun şekilde çıktı almak için aşağıdaki + butonları kullanınız. + + + + + + + KVIKS Sevkiyat bildirimi + report.account.move.kviks + + form + form + new + {'template_domain': [('res_model', '=', 'report.account.move.kviks'), ('fname', '=', 'kviks.xlsx'), ('gname', '=', False)]} + + + diff --git a/altinkaya_excel_export/export_account_invoice_kviks_xlsx/temp_kviks.xml b/altinkaya_excel_export/export_account_move_kviks_xlsx/temp_kviks.xml similarity index 83% rename from altinkaya_excel_export/export_account_invoice_kviks_xlsx/temp_kviks.xml rename to altinkaya_excel_export/export_account_move_kviks_xlsx/temp_kviks.xml index 0839402d..7a63bf3f 100644 --- a/altinkaya_excel_export/export_account_invoice_kviks_xlsx/temp_kviks.xml +++ b/altinkaya_excel_export/export_account_move_kviks_xlsx/temp_kviks.xml @@ -1,10 +1,12 @@ - - report.account.invoice.kviks + + report.account.move.kviks kviks.xlsx KVIKS Sevkiyat Bildirimi - KVIKS sistemine uygun biçimde faturaların içeri aktarılabilmesini sağlayan Excel şablonu. + KVIKS sistemine uygun biçimde faturaların içeri aktarılabilmesini sağlayan Excel şablonu. { '__EXPORT__': { @@ -26,6 +28,6 @@ - + - \ No newline at end of file + diff --git a/altinkaya_excel_export/export_account_move_line_xlsx/account_move_line_export.py b/altinkaya_excel_export/export_account_move_line_xlsx/account_move_line_export.py index 137a20b2..93abf3a3 100644 --- a/altinkaya_excel_export/export_account_move_line_xlsx/account_move_line_export.py +++ b/altinkaya_excel_export/export_account_move_line_xlsx/account_move_line_export.py @@ -1,24 +1,26 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) -from odoo import fields,models,api +# Copyright 2025 Ismail Cagan Yilmaz (https://github.com/milleniumkid) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import fields, models class ReportAccountMoveLine(models.TransientModel): - _name = 'report.account.move.line' - _description = 'Wizard for report.account.move.line' - _inherit = 'xlsx.report' + _name = "report.account.move.line" + _description = "Wizard for report.account.move.line" + _inherit = "xlsx.report" # Report Result, account.move.line results = fields.Many2many( - comodel_name='account.move.line', - string='Move Lines', - compute='_get_move_lines', - help='Use compute fields, so there is nothing stored in database', + comodel_name="account.move.line", + string="Move Lines", + compute="_compute_move_lines", + help="Use compute fields, so there is nothing stored in database", ) - @api.multi - def _get_move_lines(self): - selected_ids = self.env.context.get('active_ids', []) - ids = self.env['account.move.line'].browse(selected_ids) + def _compute_move_lines(self): + selected_ids = self.env.context.get("active_ids", []) + ids = self.env["account.move.line"].browse(selected_ids) for rec in self: rec.results = ids diff --git a/altinkaya_excel_export/export_account_move_line_xlsx/reports.xml b/altinkaya_excel_export/export_account_move_line_xlsx/reports.xml index 499509c5..b65beeb7 100644 --- a/altinkaya_excel_export/export_account_move_line_xlsx/reports.xml +++ b/altinkaya_excel_export/export_account_move_line_xlsx/reports.xml @@ -1,27 +1,29 @@ - - + report.account.move.line report.account.move.line - + primary Yevmiye kalemlerini, Zirve Yazılım sistemine uygun şekilde çıktı almak için aşağıdaki butonları kullanınız. - + - + + Yevmiye Excel + report.account.move.line + + form + new + {'template_domain': [('res_model', '=', 'report.account.move.line'), ('fname', '=', 'move_lines.xlsx'), ('gname', '=', False)]} + - \ No newline at end of file + diff --git a/altinkaya_excel_export/export_account_move_line_xlsx/temp_move_lines.xml b/altinkaya_excel_export/export_account_move_line_xlsx/temp_move_lines.xml index 8c1bb442..f6a59ab1 100644 --- a/altinkaya_excel_export/export_account_move_line_xlsx/temp_move_lines.xml +++ b/altinkaya_excel_export/export_account_move_line_xlsx/temp_move_lines.xml @@ -4,7 +4,9 @@ report.account.move.line move_lines.xlsx Yevmiyeler Excel - Zirve Muhasebe programına uygun biçimde yevmiyelerin içeri aktarılabilmesini sağlayan Excel şablonu. + Zirve Muhasebe programına uygun biçimde yevmiyelerin içeri aktarılabilmesini sağlayan Excel şablonu. { '__EXPORT__': { @@ -29,7 +31,7 @@ - + - \ No newline at end of file + diff --git a/altinkaya_excel_export/export_account_move_xlsx/__init__.py b/altinkaya_excel_export/export_account_move_xlsx/__init__.py new file mode 100644 index 00000000..1bbd1c5c --- /dev/null +++ b/altinkaya_excel_export/export_account_move_xlsx/__init__.py @@ -0,0 +1 @@ +from . import account_move_export diff --git a/altinkaya_excel_export/export_account_move_xlsx/account_move_export.py b/altinkaya_excel_export/export_account_move_xlsx/account_move_export.py new file mode 100644 index 00000000..a5fad1b3 --- /dev/null +++ b/altinkaya_excel_export/export_account_move_xlsx/account_move_export.py @@ -0,0 +1,27 @@ +# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +# Copyright 2025 Ismail Cagan Yilmaz (https://github.com/milleniumkid) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import api, fields, models + + +class ReportAccountInvoice(models.TransientModel): + _name = "report.account.move" + _description = "Wizard for report.account.move" + _inherit = "xlsx.report" + + # Report Result, account.move + results = fields.Many2many( + comodel_name="account.move", + string="Invoices", + compute="_compute_invoices", + help="Use compute fields, so there is nothing stored in database", + ) + + def _compute_invoices(self): + selected_ids = self.env.context.get("active_ids", []) + ids = self.env["account.move"].browse(selected_ids) + for rec in self: + rec.results = ids diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/gelir_fatura.xlsx b/altinkaya_excel_export/export_account_move_xlsx/gelir_fatura.xlsx similarity index 100% rename from altinkaya_excel_export/export_account_invoice_xlsx/gelir_fatura.xlsx rename to altinkaya_excel_export/export_account_move_xlsx/gelir_fatura.xlsx diff --git a/altinkaya_excel_export/export_account_move_xlsx/reports.xml b/altinkaya_excel_export/export_account_move_xlsx/reports.xml new file mode 100644 index 00000000..2edec745 --- /dev/null +++ b/altinkaya_excel_export/export_account_move_xlsx/reports.xml @@ -0,0 +1,40 @@ + + + + + report.account.move + report.account.move + + primary + + + Faturaları, Zirve Yazılım sistemine uygun şekilde çıktı almak için aşağıdaki butonları kullanınız. + + + + + + + Gelir Fatura Excel + report.account.move + + form + new + {'template_domain': [('res_model', '=', 'report.account.move'), + ('fname', '=', 'gelir_fatura.xlsx'), + ('gname', '=', False)]} + + + + + Zirve Masraf Fatura + report.account.move + + form + new + {'template_domain': [('res_model', '=', 'report.account.move'), + ('fname', '=', 'zirve_masraf_fatura.xlsx'), + ('gname', '=', False)]} + + + diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/temp_gelir_fatura.xml b/altinkaya_excel_export/export_account_move_xlsx/temp_gelir_fatura.xml similarity index 92% rename from altinkaya_excel_export/export_account_invoice_xlsx/temp_gelir_fatura.xml rename to altinkaya_excel_export/export_account_move_xlsx/temp_gelir_fatura.xml index e8f54b31..44bf988f 100644 --- a/altinkaya_excel_export/export_account_invoice_xlsx/temp_gelir_fatura.xml +++ b/altinkaya_excel_export/export_account_move_xlsx/temp_gelir_fatura.xml @@ -1,10 +1,12 @@ - - report.account.invoice + + report.account.move gelir_fatura.xlsx Gelir Fatura Şablonu - Zirve Muhasebe programına uygun biçimde faturaların içeri aktarılabilmesini sağlayan Excel şablonu. + Zirve Muhasebe programına uygun biçimde faturaların içeri aktarılabilmesini sağlayan Excel şablonu. { '__EXPORT__': { @@ -43,6 +45,6 @@ - + - \ No newline at end of file + diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml b/altinkaya_excel_export/export_account_move_xlsx/temp_zirve_masraf_fatura.xml similarity index 93% rename from altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml rename to altinkaya_excel_export/export_account_move_xlsx/temp_zirve_masraf_fatura.xml index 237ded16..e5a54646 100644 --- a/altinkaya_excel_export/export_account_invoice_xlsx/temp_zirve_masraf_fatura.xml +++ b/altinkaya_excel_export/export_account_move_xlsx/temp_zirve_masraf_fatura.xml @@ -1,10 +1,12 @@ - - report.account.invoice + + report.account.move zirve_masraf_fatura.xlsx Zirve Masraf Fatura Şablonu - Zirve Muhasebe programına uygun biçimde faturaların içeri aktarılabilmesini sağlayan Excel şablonu. + Zirve Muhasebe programına uygun biçimde faturaların içeri aktarılabilmesini sağlayan Excel şablonu. { '__EXPORT__': { @@ -54,6 +56,6 @@ - + - \ No newline at end of file + diff --git a/altinkaya_excel_export/export_account_invoice_xlsx/zirve_masraf_fatura.xlsx b/altinkaya_excel_export/export_account_move_xlsx/zirve_masraf_fatura.xlsx similarity index 100% rename from altinkaya_excel_export/export_account_invoice_xlsx/zirve_masraf_fatura.xlsx rename to altinkaya_excel_export/export_account_move_xlsx/zirve_masraf_fatura.xlsx diff --git a/altinkaya_excel_export/export_account_payment_xlsx/account_payment_export.py b/altinkaya_excel_export/export_account_payment_xlsx/account_payment_export.py index 0e352da1..58b239ea 100644 --- a/altinkaya_excel_export/export_account_payment_xlsx/account_payment_export.py +++ b/altinkaya_excel_export/export_account_payment_xlsx/account_payment_export.py @@ -1,24 +1,26 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) -from odoo import fields,models,api +# Copyright 2025 Ismail Cagan Yilmaz (https://github.com/milleniumkid) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import fields, models class ReportAccountPayment(models.TransientModel): - _name = 'report.account.payment' - _description = 'Wizard for report.account.payment' - _inherit = 'xlsx.report' + _name = "report.account.payment" + _description = "Wizard for report.account.payment" + _inherit = "xlsx.report" # Report Result, account.invoice results = fields.Many2many( - comodel_name='account.payment', - string='Payments', - compute='_get_payments', - help='Use compute fields, so there is nothing stored in database', + comodel_name="account.payment", + string="Payments", + compute="_compute_payments", + help="Use compute fields, so there is nothing stored in database", ) - @api.multi - def _get_payments(self): - selected_ids = self.env.context.get('active_ids', []) - ids = self.env['account.payment'].browse(selected_ids) + def _compute_payments(self): + selected_ids = self.env.context.get("active_ids", []) + ids = self.env["account.payment"].browse(selected_ids) for rec in self: rec.results = ids diff --git a/altinkaya_excel_export/export_account_payment_xlsx/reports.xml b/altinkaya_excel_export/export_account_payment_xlsx/reports.xml index 249b055c..09d62c0a 100644 --- a/altinkaya_excel_export/export_account_payment_xlsx/reports.xml +++ b/altinkaya_excel_export/export_account_payment_xlsx/reports.xml @@ -1,27 +1,28 @@ - - + report.account.payment report.account.payment - + primary Ödemeleri, Zirve Yazılım sistemine uygun şekilde çıktı almak için aşağıdaki butonları kullanınız. - + - - + + Ödemeler Excel + report.account.payment + + form + new + {'template_domain': [('res_model', '=', 'report.account.payment'), ('fname', '=', 'payments.xlsx'), ('gname', '=', False)]} + - \ No newline at end of file + diff --git a/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml b/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml index ffc9c160..b52367ee 100644 --- a/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml +++ b/altinkaya_excel_export/export_account_payment_xlsx/temp_payments.xml @@ -4,7 +4,9 @@ report.account.payment payments.xlsx Ödemeler Excel - Zirve Muhasebe programına uygun biçimde ödemelerin içeri aktarılabilmesini sağlayan Excel şablonu. + Zirve Muhasebe programına uygun biçimde ödemelerin içeri aktarılabilmesini sağlayan Excel şablonu. { '__EXPORT__': { @@ -28,7 +30,7 @@ - + - \ No newline at end of file + diff --git a/altinkaya_excel_export/export_partner_currency_statement/__init__.py b/altinkaya_excel_export/export_partner_currency_statement/__init__.py index 7e972759..b0f80d86 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/__init__.py +++ b/altinkaya_excel_export/export_partner_currency_statement/__init__.py @@ -1 +1 @@ -from . import partner_statement_currency_export \ No newline at end of file +from . import partner_statement_currency_export diff --git a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency_export.py b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency_export.py index cfb66759..f5173d93 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency_export.py +++ b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency_export.py @@ -1,97 +1,124 @@ -import time +# Copyright 2025 Ismail Cagan Yilmaz (https://github.com/milleniumkid) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). -from odoo import fields, models, api, _ -from odoo.exceptions import UserError from datetime import date, datetime + +from odoo import _, fields, models +from odoo.exceptions import UserError from odoo.tools.misc import formatLang class ReportPartnerStatementCurrency(models.TransientModel): - _name = 'report.partner.statement.currency' - _description = 'Wizard for report.partner.statement' - _inherit = 'xlsx.report' + _name = "report.partner.statement.currency" + _description = "Wizard for report.partner.statement" + _inherit = "xlsx.report" def _default_date_start(self): - return date(date.today().year, 1, 1).strftime('%Y-%m-%d') + return date(date.today().year, 1, 1).strftime("%Y-%m-%d") def _default_date_end(self): - return date(date.today().year, 12, 31).strftime('%Y-%m-%d') + return date(date.today().year, 12, 31).strftime("%Y-%m-%d") def _default_date_now(self): - return date.today().strftime('%Y-%m-%d') + return date.today().strftime("%Y-%m-%d") def _default_partner(self): - selected_ids = self.env.context.get('active_ids', []) - return self.env['res.partner'].browse(selected_ids)[0] + selected_ids = self.env.context.get("active_ids", []) + return self.env["res.partner"].browse(selected_ids)[0] def _default_comp_curr(self): return self.env.user.currency_id.id - date_start = fields.Date('Start Date', required=1, default=_default_date_start, store=True) - date_end = fields.Date('End Date', required=1, default=_default_date_end, store=True) - date_now = fields.Date('Date', required=1, default=_default_date_now, store=True) - partner_id = fields.Many2one('res.partner', string='Customer Name', default=_default_partner) - default_currency = fields.Many2one('res.currency', string='Currency', default=_default_comp_curr) + date_start = fields.Date( + "Start Date", required=1, default=_default_date_start, store=True + ) + date_end = fields.Date( + "End Date", required=1, default=_default_date_end, store=True + ) + date_now = fields.Date("Date", required=1, default=_default_date_now, store=True) + partner_id = fields.Many2one( + "res.partner", string="Customer Name", default=_default_partner + ) + default_currency = fields.Many2one( + "res.currency", string="Currency", default=_default_comp_curr + ) results = fields.Many2many( - comodel_name='partner.statement.lines', - string='Statement Lines', - compute='_get_lines', - help='Use compute fields, so there is nothing stored in database', + comodel_name="partner.statement.lines", + string="Statement Lines", + compute="_compute_lines", + help="Use compute fields, so there is nothing stored in database", ) - @api.multi - def _get_lines(self): + def _compute_lines(self): for rec in self: rec.results = self._get_statement_data(self.partner_id) - @api.multi def _get_statement_data(self, partner_id): cr = self.env.cr statement_data = [] - diff_inv_journal = self.env['account.journal'].search([('code', '=', 'KFARK')], limit=1) + diff_inv_journal = self.env["account.journal"].search( + [("code", "=", "KFARK")], limit=1 + ) balance, sec_curr_balance, seq = 0.00, 0.00, 0 start_date = self.date_start partner = partner_id end_date = self.date_end - currency = self.env['res.currency'] - move_type = ('payable', 'receivable') - if not (partner.property_account_receivable_id.currency_id or partner.property_account_payable_id.currency_id): - raise UserError(_( - 'Bu müşteri için dövizli ekstre çıkartamazsınız. Müşteri hesaplarının dövizli olduğunu kontrol ediniz.')) - cr.execute('SELECT aj.id as journal_id, aj.name as journal, l.date_maturity as due_date, l.date, am.name, am.state, move_id, SUM(l.debit) AS debit, SUM(l.credit) AS credit,\ - l.amount_currency as amount_currency,l.currency_id as currency_id,l.company_currency_id as company_currency_id\ + currency = self.env["res.currency"] + move_type = ("asset_receivable", "liability_payable") + if not ( + partner.property_account_receivable_id.currency_id + or partner.property_account_payable_id.currency_id + ): + raise UserError( + _( + """Bu müşteri için dövizli ekstre çıkartamazsınız. + Müşteri hesaplarının dövizli olduğunu kontrol ediniz.""" + ) + ) + cr.execute( + """SELECT aj.id as journal_id, aj.name as + journal, l.date_maturity as due_date, + l.date, am.name, am.state, move_id, + SUM(l.debit) AS debit, SUM(l.credit) AS credit,\ + l.amount_currency as amount_currency,l.currency_id as + currency_id,l.company_currency_id as company_currency_id\ FROM account_move_line AS l \ LEFT JOIN account_account a ON (l.account_id=a.id) \ LEFT JOIN account_move am ON (l.move_id=am.id) \ LEFT JOIN account_journal aj ON (am.journal_id=aj.id) \ - LEFT JOIN account_account_type at ON (a.user_type_id =at.id) \ - WHERE (l.date BETWEEN %s AND %s) AND l.partner_id = ' + str( - partner.commercial_partner_id.id) + ' AND at.type IN ' + str(move_type) + - 'GROUP BY aj.id,aj.name,move_id,am.name,am.state,l.date,l.date_maturity ,l.amount_currency,l.currency_id,l.company_currency_id\ - ORDER BY l.date , l.currency_id ', (str(start_date), str(end_date))) + WHERE (l.date BETWEEN %s AND %s) AND l.partner_id = %s AND a.account_type IN %s + GROUP BY aj.id,aj.name,move_id,am.name,am.state,l.date,l.date_maturity + ,l.amount_currency,l.currency_id,l.company_currency_id\ + ORDER BY l.date , l.currency_id """, + (str(start_date), str(end_date), str(partner.commercial_partner_id.id), move_type), + ) for each_dict in self.env.cr.dictfetchall(): seq += 1 - balance = (each_dict['debit'] - each_dict['credit']) + balance + balance = (each_dict["debit"] - each_dict["credit"]) + balance debit = 0.0 rate = 1.0 credit = 0.0 sec_curr_debit = 0.00 sec_curr_credit = 0.00 - currency_id = currency.browse(each_dict['company_currency_id']) - if (each_dict['debit'] - each_dict['credit']) > 0.0: - debit = (each_dict['debit'] - each_dict['credit']) + currency_id = currency.browse(each_dict["company_currency_id"]) + if (each_dict["debit"] - each_dict["credit"]) > 0.0: + debit = each_dict["debit"] - each_dict["credit"] else: - credit = (each_dict['credit'] - each_dict['debit']) + credit = each_dict["credit"] - each_dict["debit"] - if partner.property_account_receivable_id.currency_id and each_dict['journal_id'] != diff_inv_journal.id: - move_date = each_dict['date'].strftime("%Y-%m-%d") + if ( + partner.property_account_receivable_id.currency_id + and each_dict["journal_id"] != diff_inv_journal.id + ): + move_date = each_dict["date"].strftime("%Y-%m-%d") cr.execute( "SELECT rate\ FROM res_currency_rate\ WHERE currency_id = %s\ AND name <= %s\ - ORDER BY name desc LIMIT 1", (partner.property_account_receivable_id.currency_id.id, - move_date)) + ORDER BY name desc LIMIT 1", + (partner.property_account_receivable_id.currency_id.id, move_date), + ) if cr.rowcount: rate = cr.fetchall()[0][0] @@ -99,28 +126,48 @@ def _get_statement_data(self, partner_id): sec_curr_credit = credit * rate sec_curr_balance = (sec_curr_debit - sec_curr_credit) + sec_curr_balance - statement_data.append(self.env['partner.statement.lines'].create(vals_list={ - 'sequence': seq, - 'number': each_dict['state'] == 'draft' and '*' + str(each_dict['move_id']) or each_dict['name'], - 'date': each_dict['date'] and datetime.strptime(str(each_dict['date']), '%Y-%m-%d').strftime( - '%d.%m.%Y') or False, - 'due_date': each_dict['due_date'] and datetime.strptime(str(each_dict['due_date']), - '%Y-%m-%d').strftime('%d.%m.%Y') or False, - 'description': len(each_dict['journal']) >= 30 and each_dict['journal'][0:30] or each_dict[ - 'journal'], - 'debit': formatLang(self.env, debit), - 'credit': formatLang(self.env, credit), - 'sec_curr_debit': formatLang(self.env, sec_curr_debit), - 'sec_curr_credit': formatLang(self.env, sec_curr_credit), - 'currency_rate': "%.4f" % (1/rate), - 'sec_curr_balance': formatLang(self.env, abs(sec_curr_balance)) or "0,00", - 'sec_curr_dc': sec_curr_balance > 0.01 and 'B' or 'A', - 'balance': formatLang(self.env, abs(balance)) or "0,00", - 'dc': balance > 0.01 and 'B' or 'A', - 'sec_curr_total': formatLang(self.env, sec_curr_balance) or "0,00", - 'total': formatLang(self.env, balance) or "0,00", - 'secondary_currency': partner.property_account_receivable_id.currency_id.id or currency_id.id, - 'primary_currency': currency_id.id}).id) + statement_data.append( + self.env["partner.statement.lines"] + .create( + vals_list={ + "sequence": seq, + "number": each_dict["state"] == "draft" + and "*" + str(each_dict["move_id"]) + or each_dict["name"], + "date": each_dict["date"] + and datetime.strptime( + str(each_dict["date"]), "%Y-%m-%d" + ).strftime("%d.%m.%Y") + or False, + "due_date": each_dict["due_date"] + and datetime.strptime( + str(each_dict["due_date"]), "%Y-%m-%d" + ).strftime("%d.%m.%Y") + or False, + "description": len(each_dict["journal"]) >= 30 + and each_dict["journal"][0:30] + or each_dict["journal"], + "debit": formatLang(self.env, debit), + "credit": formatLang(self.env, credit), + "sec_curr_debit": formatLang(self.env, sec_curr_debit), + "sec_curr_credit": formatLang(self.env, sec_curr_credit), + "currency_rate": "%.4f" % (1 / rate), + "sec_curr_balance": formatLang(self.env, abs(sec_curr_balance)) + or "0,00", + "sec_curr_dc": sec_curr_balance > 0.01 and "B" or "A", + "balance": formatLang(self.env, abs(balance)) or "0,00", + "dc": balance > 0.01 and "B" or "A", + "sec_curr_total": formatLang(self.env, sec_curr_balance) + or "0,00", + "total": formatLang(self.env, balance) or "0,00", + "secondary_currency": ( + partner.property_account_receivable_id.currency_id.id + ) + or currency_id.id, + "primary_currency": currency_id.id, + } + ) + .id + ) return statement_data - diff --git a/altinkaya_excel_export/export_partner_currency_statement/reports.xml b/altinkaya_excel_export/export_partner_currency_statement/reports.xml index 17175e5c..62b39205 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/reports.xml +++ b/altinkaya_excel_export/export_partner_currency_statement/reports.xml @@ -1,31 +1,35 @@ - - + report.partner.statement.currency report.partner.statement.currency - + primary Carinin dövizli ekstresini çıkartmak için aşağıdaki butonları kullanınız. - - + + - + + Cari Dövizli Ekstre + report.partner.statement.currency + + form + new + {'template_domain': [('res_model', '=', 'report.partner.statement.currency'), ('fname', '=', 'partner_statement_currency.xlsx'), ('gname', '=', False)]} + - \ No newline at end of file + diff --git a/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml b/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml index 027e170d..18d5bf1d 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml +++ b/altinkaya_excel_export/export_partner_currency_statement/temp_partner_statement_currency.xml @@ -4,7 +4,9 @@ report.partner.statement.currency partner_statement_currency.xlsx Cari Dövizli Ekstre - Müşterilerin dövizli ekstresini excel olarak basan şablon. + Müşterilerin dövizli ekstresini excel olarak basan şablon. { '__EXPORT__': { @@ -46,6 +48,6 @@ - + - \ No newline at end of file + diff --git a/altinkaya_excel_export/export_partner_statement/__init__.py b/altinkaya_excel_export/export_partner_statement/__init__.py index 6ce31394..0cf4c100 100644 --- a/altinkaya_excel_export/export_partner_statement/__init__.py +++ b/altinkaya_excel_export/export_partner_statement/__init__.py @@ -1 +1 @@ -from . import partner_statement_export \ No newline at end of file +from . import partner_statement_export diff --git a/altinkaya_excel_export/export_partner_statement/partner_statement_export.py b/altinkaya_excel_export/export_partner_statement/partner_statement_export.py index e0896e64..80853dc2 100644 --- a/altinkaya_excel_export/export_partner_statement/partner_statement_export.py +++ b/altinkaya_excel_export/export_partner_statement/partner_statement_export.py @@ -1,113 +1,146 @@ -import time +# Copyright 2025 Ismail Cagan Yilmaz (https://github.com/milleniumkid) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). -from odoo import fields, models, api, _ from datetime import date, datetime + +from odoo import fields, models from odoo.tools.misc import formatLang + class ReportPartnerStatement(models.TransientModel): - _name = 'report.partner.statement' - _description = 'Wizard for report.partner.statement' - _inherit = 'xlsx.report' + _name = "report.partner.statement" + _description = "Wizard for report.partner.statement" + _inherit = "xlsx.report" def _default_date_start(self): - return date(date.today().year, 1, 1).strftime('%Y-%m-%d') + return date(date.today().year, 1, 1).strftime("%Y-%m-%d") def _default_date_end(self): - return date(date.today().year, 12, 31).strftime('%Y-%m-%d') + return date(date.today().year, 12, 31).strftime("%Y-%m-%d") def _default_date_now(self): - return date.today().strftime('%Y-%m-%d') + return date.today().strftime("%Y-%m-%d") def _default_partner(self): - selected_ids = self.env.context.get('active_ids', []) - return self.env['res.partner'].browse(selected_ids)[0] + selected_ids = self.env.context.get("active_ids", []) + return self.env["res.partner"].browse(selected_ids)[0] def _default_comp_curr(self): return self.env.user.company_id.currency_id.id - date_start = fields.Date('Start Date', required=1, default=_default_date_start, store=True) - date_end = fields.Date('End Date', required=1, default=_default_date_end, store=True) - date_now = fields.Date('Date', required=1, default=_default_date_now, store=True) - partner_id = fields.Many2one('res.partner', string='Customer Name', default=_default_partner) - default_currency = fields.Many2one('res.currency', string='Currency', default=_default_comp_curr) + date_start = fields.Date( + "Start Date", required=1, default=_default_date_start, store=True + ) + date_end = fields.Date( + "End Date", required=1, default=_default_date_end, store=True + ) + date_now = fields.Date("Date", required=1, default=_default_date_now, store=True) + partner_id = fields.Many2one( + "res.partner", string="Customer Name", default=_default_partner + ) + default_currency = fields.Many2one( + "res.currency", string="Currency", default=_default_comp_curr + ) results = fields.Many2many( - comodel_name='partner.statement.lines', - string='Statement Lines', - compute='_get_lines', - help='Use compute fields, so there is nothing stored in database', + comodel_name="partner.statement.lines", + string="Statement Lines", + compute="_compute_lines", + help="Use compute fields, so there is nothing stored in database", ) - @api.multi - def _get_lines(self): + def _compute_lines(self): for rec in self: rec.results = self._get_statement_data() - - @api.multi def _get_statement_data(self): statement_data = [] balance, seq = 0.0, 0 - start_date=self.date_start - partner= self.partner_id - end_date =self.date_end - Currency = self.env['res.currency'] - move_type = ('payable','receivable') - self.env.cr.execute('SELECT aj.name as journal, l.date_maturity as due_date, l.date, am.name, am.state, move_id, SUM(l.debit) AS debit, SUM(l.credit) AS credit,\ - l.amount_currency as amount_currency,l.currency_id as currency_id,l.company_currency_id as company_currency_id\ - FROM account_move_line AS l \ - LEFT JOIN account_account a ON (l.account_id=a.id) \ - LEFT JOIN account_move am ON (l.move_id=am.id) \ - LEFT JOIN account_journal aj ON (am.journal_id=aj.id) \ - LEFT JOIN account_account_type at ON (a.user_type_id =at.id) \ - WHERE (l.date BETWEEN %s AND %s) AND l.partner_id = '+ str(partner.commercial_partner_id.id) + ' AND at.type IN ' + str(move_type) + - 'GROUP BY aj.name,move_id,am.name,am.state,l.date,l.date_maturity ,l.amount_currency,l.currency_id,l.company_currency_id\ - ORDER BY l.date , l.currency_id ',(str(start_date),str(end_date))) + start_date = self.date_start + partner = self.partner_id + end_date = self.date_end + # Currency = self.env["res.currency"] + move_type = ("asset_receivable", "liability_payable") + self.env.cr.execute( + """SELECT aj.name as journal, l.date_maturity as due_date, + l.date, am.name, am.state, move_id, SUM(l.debit) + AS debit, SUM(l.credit) AS credit, + l.amount_currency as amount_currency,l.currency_id as + currency_id,l.company_currency_id as company_currency_id + FROM account_move_line AS l + LEFT JOIN account_account a ON (l.account_id=a.id) + LEFT JOIN account_move am ON (l.move_id=am.id) + LEFT JOIN account_journal aj ON (am.journal_id=aj.id) + WHERE (l.date BETWEEN %s AND %s) AND l.partner_id = %s AND a.account_type IN %s + GROUP BY aj.name,move_id,am.name,am.state,l.date,l.date_maturity + ,l.amount_currency,l.currency_id,l.company_currency_id\ + ORDER BY l.date , l.currency_id """, + (str(start_date), str(end_date), str(partner.commercial_partner_id.id), move_type), + ) for each_dict in self.env.cr.dictfetchall(): seq += 1 - balance = (each_dict['debit'] - each_dict['credit']) + balance + balance = (each_dict["debit"] - each_dict["credit"]) + balance debit = 0.0 credit = 0.0 - currency_id = Currency.browse(each_dict['company_currency_id']) - if (each_dict['debit'] - each_dict['credit']) > 0.0: - debit = (each_dict['debit'] - each_dict['credit']) + # currency_id = Currency.browse(each_dict["company_currency_id"]) + if (each_dict["debit"] - each_dict["credit"]) > 0.0: + debit = each_dict["debit"] - each_dict["credit"] else: - credit = (each_dict['credit'] - each_dict['debit']) - - statement_data.append(self.env['partner.statement.lines'].create(vals_list={ - 'sequence': seq, - 'number': each_dict['state'] == 'draft' and '*'+str(each_dict['move_id']) or each_dict['name'], - 'date': each_dict['date'] and datetime.strptime(str(each_dict['date']), '%Y-%m-%d').strftime('%d.%m.%Y') or False, - 'due_date': each_dict['due_date'] and datetime.strptime(str(each_dict['due_date']), '%Y-%m-%d').strftime('%d.%m.%Y') or False, - 'description': len(each_dict['journal']) >= 30 and each_dict['journal'][0:30] or each_dict['journal'], - 'debit': formatLang(self.env, debit), - 'credit': formatLang(self.env, credit), - 'balance': formatLang(self.env, abs(balance)) or "0,00", - 'dc': balance > 0.01 and 'B' or 'A', - 'total': formatLang(self.env, balance) or "0,00", - }).id) + credit = each_dict["credit"] - each_dict["debit"] + + statement_data.append( + self.env["partner.statement.lines"] + .create( + vals_list={ + "sequence": seq, + "number": each_dict["state"] == "draft" + and "*" + str(each_dict["move_id"]) + or each_dict["name"], + "date": each_dict["date"] + and datetime.strptime( + str(each_dict["date"]), "%Y-%m-%d" + ).strftime("%d.%m.%Y") + or False, + "due_date": each_dict["due_date"] + and datetime.strptime( + str(each_dict["due_date"]), "%Y-%m-%d" + ).strftime("%d.%m.%Y") + or False, + "description": len(each_dict["journal"]) >= 30 + and each_dict["journal"][0:30] + or each_dict["journal"], + "debit": formatLang(self.env, debit), + "credit": formatLang(self.env, credit), + "balance": formatLang(self.env, abs(balance)) or "0,00", + "dc": balance > 0.01 and "B" or "A", + "total": formatLang(self.env, balance) or "0,00", + } + ) + .id + ) return statement_data class StatementLines(models.TransientModel): - _name = 'partner.statement.lines' + _name = "partner.statement.lines" _description = "Transient model for partner statement" - sequence = fields.Integer('Sequence') - number = fields.Char('Number') - date = fields.Char('Date') - due_date = fields.Char('Due Date') - description = fields.Char('Description') - debit = fields.Char('Debit') - credit = fields.Char('Credit') - balance = fields.Char('Balance') - currency_rate = fields.Char('Currency Rate') - sec_curr_debit = fields.Char('Secondary Currency Debit') - sec_curr_credit = fields.Char('Secondary Currency Credit') - sec_curr_balance = fields.Char('Secondary Currency Balance') - dc = fields.Char('dc') - sec_curr_dc = fields.Char('sec_curr_dc') - total = fields.Char('Total') - sec_curr_total = fields.Char('Secondary Currency Total') - primary_currency = fields.Many2one('res.currency') - secondary_currency = fields.Many2one('res.currency') + sequence = fields.Integer() + number = fields.Char() + date = fields.Char() + due_date = fields.Char() + description = fields.Char() + debit = fields.Char() + credit = fields.Char() + balance = fields.Char() + currency_rate = fields.Char() + sec_curr_debit = fields.Char() + sec_curr_credit = fields.Char() + sec_curr_balance = fields.Char() + dc = fields.Char() + sec_curr_dc = fields.Char() + total = fields.Char() + sec_curr_total = fields.Char() + primary_currency = fields.Many2one("res.currency") + secondary_currency = fields.Many2one("res.currency") + diff --git a/altinkaya_excel_export/export_partner_statement/reports.xml b/altinkaya_excel_export/export_partner_statement/reports.xml index ac22af7e..e822d940 100644 --- a/altinkaya_excel_export/export_partner_statement/reports.xml +++ b/altinkaya_excel_export/export_partner_statement/reports.xml @@ -1,31 +1,31 @@ - - + report.partner.statement report.partner.statement - + primary Carinin ekstresini çıkartmak için aşağıdaki butonları kullanınız. - - + + + + Cari Ekstresi + report.partner.statement + + form + new + {'template_domain': [('res_model', '=', 'report.partner.statement'), ('fname', '=', 'partner_statement.xlsx'), ('gname', '=', False)]} + - - - \ No newline at end of file + diff --git a/altinkaya_excel_export/export_partner_statement/temp_partner_statement.xml b/altinkaya_excel_export/export_partner_statement/temp_partner_statement.xml index ca85d79f..49d679e8 100644 --- a/altinkaya_excel_export/export_partner_statement/temp_partner_statement.xml +++ b/altinkaya_excel_export/export_partner_statement/temp_partner_statement.xml @@ -4,7 +4,9 @@ report.partner.statement partner_statement.xlsx Cari Ekstre - Müşterilerin ekstresini excel olarak basan şablon. + Müşterilerin ekstresini excel olarak basan şablon. { '__EXPORT__': { @@ -36,6 +38,6 @@ - + - \ No newline at end of file + diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/reports.xml b/altinkaya_excel_export/export_purchase_order_xlsx/reports.xml index de36b013..b1eb4fc1 100644 --- a/altinkaya_excel_export/export_purchase_order_xlsx/reports.xml +++ b/altinkaya_excel_export/export_purchase_order_xlsx/reports.xml @@ -1,40 +1,38 @@ + + Purchase Order (.xlsx) + purchase.order + purchase_order_en.xlsx + export_purchase_order_xlsx + ('Altinkaya_PO_%s' % (object.name)) + excel + - + + Satınalma Siparişi (.xlsx) + purchase.order + purchase_order_tr.xlsx + export_purchase_order_xlsx + ('Altinkaya_satinalma_%s' % (object.name)) + excel + - - - - - + + Request for Quotation (.xlsx) + purchase.order + po_rfq_en.xlsx + export_purchase_order_xlsx + ('Altinkaya_RFQ_%s' % (object.name)) + excel + + + Teklif Talebi (.xlsx) + purchase.order + po_rfq_tr.xlsx + export_purchase_order_xlsx + ('Altinkaya_Talep_%s' % (object.name)) + excel + diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_en.xml b/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_en.xml index 0db468d6..fc526da8 100644 --- a/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_en.xml +++ b/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_en.xml @@ -4,7 +4,9 @@ purchase.order purchase_order_en.xlsx Purchase Order Template - Sample Purchase Order Template for use in international purchases. + Sample Purchase Order Template for use in international purchases. { '__EXPORT__': { @@ -48,7 +50,7 @@ - + - \ No newline at end of file + diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_tr.xml b/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_tr.xml index 236fbaad..f29e6a94 100644 --- a/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_tr.xml +++ b/altinkaya_excel_export/export_purchase_order_xlsx/temp_po_tr.xml @@ -4,7 +4,9 @@ purchase.order purchase_order_tr.xlsx Satınalma Siparişi Şablonu - Türkiye sınırları içinde yapılan satınalmalarda kullanılmak üzere tasarlanmış Satınalma Siparişi Şablonu. + Türkiye sınırları içinde yapılan satınalmalarda kullanılmak üzere tasarlanmış Satınalma Siparişi Şablonu. { '__EXPORT__': { @@ -50,6 +52,6 @@ - + - \ No newline at end of file + diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_en.xml b/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_en.xml index 812c2f67..77958862 100644 --- a/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_en.xml +++ b/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_en.xml @@ -4,7 +4,9 @@ purchase.order po_rfq_en.xlsx Purchase Order RFQ Template - Sample Purchase Order RFQ Template for use in international purchases. + Sample Purchase Order RFQ Template for use in international purchases. { '__EXPORT__': { @@ -35,6 +37,6 @@ - + - \ No newline at end of file + diff --git a/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_tr.xml b/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_tr.xml index 7a702835..b036d15c 100644 --- a/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_tr.xml +++ b/altinkaya_excel_export/export_purchase_order_xlsx/temp_rfq_tr.xml @@ -4,7 +4,9 @@ purchase.order po_rfq_tr.xlsx Teklif Talebi Şablonu - Türkiye sınırları içinde yapılan teklif taleplerinde kullanılmak üzere tasarlanmış Teklif Talebi Şablonu. + Türkiye sınırları içinde yapılan teklif taleplerinde kullanılmak üzere tasarlanmış Teklif Talebi Şablonu. { '__EXPORT__': { @@ -43,6 +45,6 @@ - + - \ No newline at end of file + diff --git a/altinkaya_excel_export/security/ir.model.access.csv b/altinkaya_excel_export/security/ir.model.access.csv new file mode 100644 index 00000000..6e994638 --- /dev/null +++ b/altinkaya_excel_export/security/ir.model.access.csv @@ -0,0 +1,12 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_export_account_move_kviks_xlsx,access.export.account.move.kviks.xlsx,model_report_account_move_kviks,base.group_user,1,1,1,1 +access_export_account_move_line_xlsx,access.export.account.move.line.xlsx,model_report_account_move_line,base.group_user,1,1,1,1 +access_export_account_move_xlsx,access.export.acocunt.move.xlsx,model_report_account_move,base.group_user,1,1,1,1 +access_export_account_payment_xlsx,access.export.account.payment.xlsx,model_report_account_payment,base.group_user,1,1,1,1 +access_export_partner_currency_statement,access.export.partner.currency.statement,model_report_partner_statement_currency,base.group_user,1,1,1,1 +access_export_partner_statement,access.export.partner.statement,model_report_partner_statement,base.group_user,1,1,1,1 +access_export_purchase_order_xlsx,access.export.purchase.order.xlsx,purchase.model_purchase_order,base.group_user,1,1,1,1 +access_export_partner_statement_lines,access.export.partner.statement.lines,model_partner_statement_lines,base.group_user,1,1,1,1 + + + From 624bfca1e9e376a49d59aaa6077af64a385852db Mon Sep 17 00:00:00 2001 From: Ismail Cagan Yilmaz Date: Tue, 14 Jan 2025 17:51:32 +0300 Subject: [PATCH 35/35] [FIX] pre-commit stuff --- .../account_move_kviks_export.py | 2 +- .../export_account_move_kviks_xlsx/reports.xml | 6 ++++-- .../export_account_move_line_xlsx/reports.xml | 2 +- .../export_account_move_xlsx/account_move_export.py | 2 +- .../export_account_move_xlsx/reports.xml | 13 ++++++++++--- .../temp_zirve_masraf_fatura.xml | 4 ++-- .../partner_statement_currency_export.py | 10 ++++++++-- .../partner_statement_export.py | 11 ++++++++--- .../export_partner_statement/reports.xml | 2 +- altinkaya_excel_export/security/ir.model.access.csv | 3 --- 10 files changed, 36 insertions(+), 19 deletions(-) diff --git a/altinkaya_excel_export/export_account_move_kviks_xlsx/account_move_kviks_export.py b/altinkaya_excel_export/export_account_move_kviks_xlsx/account_move_kviks_export.py index b86e4c0c..b8b4eed7 100644 --- a/altinkaya_excel_export/export_account_move_kviks_xlsx/account_move_kviks_export.py +++ b/altinkaya_excel_export/export_account_move_kviks_xlsx/account_move_kviks_export.py @@ -4,7 +4,7 @@ # Copyright 2025 Ismail Cagan Yilmaz (https://github.com/milleniumkid) # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). -from odoo import api, fields, models +from odoo import fields, models class ReportAccountInvoiceKVIKS(models.TransientModel): diff --git a/altinkaya_excel_export/export_account_move_kviks_xlsx/reports.xml b/altinkaya_excel_export/export_account_move_kviks_xlsx/reports.xml index d84d28d8..c9a84853 100644 --- a/altinkaya_excel_export/export_account_move_kviks_xlsx/reports.xml +++ b/altinkaya_excel_export/export_account_move_kviks_xlsx/reports.xml @@ -18,11 +18,13 @@ KVIKS Sevkiyat bildirimi report.account.move.kviks - + form form new - {'template_domain': [('res_model', '=', 'report.account.move.kviks'), ('fname', '=', 'kviks.xlsx'), ('gname', '=', False)]} + {'template_domain': [('res_model', '=', 'report.account.move.kviks'), ('fname', '=', 'kviks.xlsx'), ('gname', '=', False)]} diff --git a/altinkaya_excel_export/export_account_move_line_xlsx/reports.xml b/altinkaya_excel_export/export_account_move_line_xlsx/reports.xml index b65beeb7..4b7cbce8 100644 --- a/altinkaya_excel_export/export_account_move_line_xlsx/reports.xml +++ b/altinkaya_excel_export/export_account_move_line_xlsx/reports.xml @@ -17,7 +17,7 @@ Yevmiye Excel report.account.move.line - + form new - + Gelir Fatura Excel report.account.move form new - {'template_domain': [('res_model', '=', 'report.account.move'), + {'template_domain': [('res_model', '=', 'report.account.move'), ('fname', '=', 'gelir_fatura.xlsx'), ('gname', '=', False)]} @@ -32,7 +37,9 @@ form new - {'template_domain': [('res_model', '=', 'report.account.move'), + {'template_domain': [('res_model', '=', 'report.account.move'), ('fname', '=', 'zirve_masraf_fatura.xlsx'), ('gname', '=', False)]} diff --git a/altinkaya_excel_export/export_account_move_xlsx/temp_zirve_masraf_fatura.xml b/altinkaya_excel_export/export_account_move_xlsx/temp_zirve_masraf_fatura.xml index e5a54646..879fbaa4 100644 --- a/altinkaya_excel_export/export_account_move_xlsx/temp_zirve_masraf_fatura.xml +++ b/altinkaya_excel_export/export_account_move_xlsx/temp_zirve_masraf_fatura.xml @@ -26,14 +26,14 @@ 'K2': '${"%s" % (object.partner_id.z_payable_export or "") if object.type != "out_refund" else "%s" % (object.partner_id.z_receivable_export or "")}#{border=thin_border;align=left;style=text}', 'L2': '${" ".join("* %s ^" % x.account_id.code for x in object.invoice_line_ids)}#{border=thin_border;align=left;style=text}', 'M2': '${object.invoice_line_ids[0].account_id.code if object.invoice_line_ids else ""}#{border=thin_border;align=left;style=text}', - + 'N2': '${"".join("\'%s" % tax.account_id.code for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=text}', 'O2': '${"".join("%s" % tax.account_id.code for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=text}', 'P2': '${"".join("\'%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=number}', 'Q2': '${"".join("%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=number}', 'R2': '${"".join("\'%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=number}', 'S2': '${"".join("%.2f" % tax.amount for index, tax in enumerate(object.tax_line_ids) if index == 0) or ""}#{border=thin_border;align=left;style=number}', - + 'T2': '${"".join("\'%s" % tax.account_id.code for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=text}', 'U2': '${"".join("%s" % tax.account_id.code for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=text}', 'V2': '${"".join("\'%.2f" % tax.base for index, tax in enumerate(object.tax_line_ids) if index == 1) or ""}#{border=thin_border;align=left;style=number}', diff --git a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency_export.py b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency_export.py index f5173d93..2d36e887 100644 --- a/altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency_export.py +++ b/altinkaya_excel_export/export_partner_currency_statement/partner_statement_currency_export.py @@ -86,11 +86,17 @@ def _get_statement_data(self, partner_id): LEFT JOIN account_account a ON (l.account_id=a.id) \ LEFT JOIN account_move am ON (l.move_id=am.id) \ LEFT JOIN account_journal aj ON (am.journal_id=aj.id) \ - WHERE (l.date BETWEEN %s AND %s) AND l.partner_id = %s AND a.account_type IN %s + WHERE (l.date BETWEEN %s AND %s) + AND l.partner_id = %s AND a.account_type IN %s GROUP BY aj.id,aj.name,move_id,am.name,am.state,l.date,l.date_maturity ,l.amount_currency,l.currency_id,l.company_currency_id\ ORDER BY l.date , l.currency_id """, - (str(start_date), str(end_date), str(partner.commercial_partner_id.id), move_type), + ( + str(start_date), + str(end_date), + str(partner.commercial_partner_id.id), + move_type, + ), ) for each_dict in self.env.cr.dictfetchall(): seq += 1 diff --git a/altinkaya_excel_export/export_partner_statement/partner_statement_export.py b/altinkaya_excel_export/export_partner_statement/partner_statement_export.py index 80853dc2..4d7b21f4 100644 --- a/altinkaya_excel_export/export_partner_statement/partner_statement_export.py +++ b/altinkaya_excel_export/export_partner_statement/partner_statement_export.py @@ -70,11 +70,17 @@ def _get_statement_data(self): LEFT JOIN account_account a ON (l.account_id=a.id) LEFT JOIN account_move am ON (l.move_id=am.id) LEFT JOIN account_journal aj ON (am.journal_id=aj.id) - WHERE (l.date BETWEEN %s AND %s) AND l.partner_id = %s AND a.account_type IN %s + WHERE (l.date BETWEEN %s AND %s) + AND l.partner_id = %s AND a.account_type IN %s GROUP BY aj.name,move_id,am.name,am.state,l.date,l.date_maturity ,l.amount_currency,l.currency_id,l.company_currency_id\ ORDER BY l.date , l.currency_id """, - (str(start_date), str(end_date), str(partner.commercial_partner_id.id), move_type), + ( + str(start_date), + str(end_date), + str(partner.commercial_partner_id.id), + move_type, + ), ) for each_dict in self.env.cr.dictfetchall(): seq += 1 @@ -143,4 +149,3 @@ class StatementLines(models.TransientModel): sec_curr_total = fields.Char() primary_currency = fields.Many2one("res.currency") secondary_currency = fields.Many2one("res.currency") - diff --git a/altinkaya_excel_export/export_partner_statement/reports.xml b/altinkaya_excel_export/export_partner_statement/reports.xml index e822d940..2ee4e5bb 100644 --- a/altinkaya_excel_export/export_partner_statement/reports.xml +++ b/altinkaya_excel_export/export_partner_statement/reports.xml @@ -20,7 +20,7 @@ Cari Ekstresi report.partner.statement - + form new