9 changed files with 444 additions and 0 deletions
-
47account_debtor_card/README.rst
-
5account_debtor_card/__init__.py
-
23account_debtor_card/__openerp__.py
-
126account_debtor_card/i18n/nl.po
-
5account_debtor_card/models/__init__.py
-
15account_debtor_card/models/res_partner.py
-
191account_debtor_card/report/report_debtor_card.xml
-
BINaccount_debtor_card/static/description/icon.png
-
32account_debtor_card/views/res_partner.xml
@ -0,0 +1,47 @@ |
|||||
|
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg |
||||
|
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html |
||||
|
:alt: License: AGPL-3 |
||||
|
|
||||
|
=================== |
||||
|
Account Debtor Card |
||||
|
=================== |
||||
|
|
||||
|
This module creates Debtor cards common in all accounting packages. |
||||
|
It prints all the customer's sale orders and the corresponding invoices. |
||||
|
|
||||
|
Usage |
||||
|
===== |
||||
|
|
||||
|
To use this module, you need to: |
||||
|
|
||||
|
* Go to *Customers* Tree/Form *Print Debtor Card*. |
||||
|
* In *Customers* Form View *Sales Order* tab. |
||||
|
* In Tree View you can select one or more and *Print* |
||||
|
|
||||
|
|
||||
|
Credits |
||||
|
======= |
||||
|
|
||||
|
Contributors |
||||
|
------------ |
||||
|
|
||||
|
* Dan Kiplangat <dan@sunflowerweb.nl> |
||||
|
* Tom Blauwendraat <tom@sunflowerweb.nl> |
||||
|
|
||||
|
Icon |
||||
|
---- |
||||
|
* Icon made by Freepik from http://flaticon.com. |
||||
|
|
||||
|
Maintainer |
||||
|
---------- |
||||
|
.. image:: http://odoo-community.org/logo.png |
||||
|
:alt: Odoo Community Association |
||||
|
:target: http://odoo-community.org |
||||
|
|
||||
|
This module is maintained by the OCA. |
||||
|
|
||||
|
OCA, or the Odoo Community Association, is a nonprofit organization whose |
||||
|
mission is to support the collaborative development of Odoo features and |
||||
|
promote its widespread use. |
||||
|
|
||||
|
To contribute to this module, please visit http://odoo-community.org. |
@ -0,0 +1,5 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# © 2018 Sunflower IT (http://sunflowerweb.nl) |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
from . import models |
@ -0,0 +1,23 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# © 2018 Sunflower IT (http://sunflowerweb.nl) |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
{ |
||||
|
"name": "Account Debtor Card", |
||||
|
"summary": "Adds an option to print sale orders and related invoices", |
||||
|
"version": "8.0.1.0.0", |
||||
|
"category": "Accounting", |
||||
|
"website": "https://sunflowerweb.nl", |
||||
|
"author": "Sunflower IT, Therp BV, Odoo Community Association (OCA)", |
||||
|
"license": "AGPL-3", |
||||
|
"application": False, |
||||
|
"installable": True, |
||||
|
"depends": [ |
||||
|
"sale", |
||||
|
"account", |
||||
|
], |
||||
|
"data": [ |
||||
|
"views/res_partner.xml", |
||||
|
"report/report_debtor_card.xml", |
||||
|
], |
||||
|
} |
@ -0,0 +1,126 @@ |
|||||
|
# This file contains the translation of the following modules: |
||||
|
# * account_debtor_card |
||||
|
# |
||||
|
msgid "" |
||||
|
msgstr "" |
||||
|
"Project-Id-Version: Odoo 8.0\n" |
||||
|
"Report-Msgid-Bugs-To: \n" |
||||
|
"POT-Creation-Date: 2018-01-26 09:52+0000\n" |
||||
|
"PO-Revision-Date: 2017-08-18 16:51+0000\n" |
||||
|
"Last-Translator: Tom Blauwendraat <info@sunflowerweb.nl>\n" |
||||
|
"Language-Team: Dutch (http://www.transifex.com/odoo/odoo-8/language/nl/)\n" |
||||
|
"Language: nl\n" |
||||
|
"MIME-Version: 1.0\n" |
||||
|
"Content-Type: text/plain; charset=UTF-8\n" |
||||
|
"Content-Transfer-Encoding: \n" |
||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "---- Printed:" |
||||
|
msgstr "---- Afgedrukt:" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "Customer:" |
||||
|
msgstr "Klant:" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "Date" |
||||
|
msgstr "Datum" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "Date Ordered:" |
||||
|
msgstr "Besteldatum:" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: model:ir.actions.report.xml,name:account_debtor_card.action_report_debtor_card |
||||
|
msgid "Debtor Card" |
||||
|
msgstr "Debiteurenkaart" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "Description" |
||||
|
msgstr "Omschrijving" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "No Invoices for this order" |
||||
|
msgstr "Geen fakturen voor deze verkooporder" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "Order N°:" |
||||
|
msgstr "Ordernr:" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: model:ir.model,name:account_debtor_card.model_res_partner |
||||
|
msgid "Partner" |
||||
|
msgstr "Relatie" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "Payment Term:" |
||||
|
msgstr "Betaalconditie:" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "Pending" |
||||
|
msgstr "In afwachting" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "Price" |
||||
|
msgstr "Bedrag" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:res.partner:account_debtor_card.view_partner_form_inherit |
||||
|
msgid "Print Debtor Card" |
||||
|
msgstr "Debiteurenkaart" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "Quantity" |
||||
|
msgstr "Hoeveelheid" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "Related Invoices" |
||||
|
msgstr "Bijbehorende fakturen" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:res.partner:account_debtor_card.view_partner_form_inherit |
||||
|
msgid "Sale Orders" |
||||
|
msgstr "Verkooporders" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "Salesperson:" |
||||
|
msgstr "Verkoper:" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "Status" |
||||
|
msgstr "Status" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "Status:" |
||||
|
msgstr "Status:" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "Total" |
||||
|
msgstr "Totaal" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "Unit Price" |
||||
|
msgstr "Prijs" |
||||
|
|
||||
|
#. module: account_debtor_card |
||||
|
#: view:website:account_debtor_card.report_debtor_card |
||||
|
msgid "Your Reference:" |
||||
|
msgstr "Uw referentie:" |
@ -0,0 +1,5 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# © 2018 Sunflower IT (http://sunflowerweb.nl) |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
from . import res_partner |
@ -0,0 +1,15 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# © 2018 Sunflower IT (http://sunflowerweb.nl) |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
from openerp import models, api |
||||
|
|
||||
|
|
||||
|
class ResPartner(models.Model): |
||||
|
_inherit = "res.partner" |
||||
|
|
||||
|
@api.multi |
||||
|
def print_debtor_card(self): |
||||
|
"""Button to print the sale orders and related invoices""" |
||||
|
return self.env['report'].get_action( |
||||
|
self, 'account_debtor_card.report_debtor_card') |
@ -0,0 +1,191 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<openerp> |
||||
|
<data> |
||||
|
<template id="report_debtor_card"> |
||||
|
<t t-call="report.html_container"> |
||||
|
<t t-call="report.internal_layout"> |
||||
|
<div class="page"> |
||||
|
<t t-foreach="docs" t-as="o"> |
||||
|
<div class="oe_structure"/> |
||||
|
<div class="row"> |
||||
|
<div class="col-xs-6" style="margin-top:30px;"> |
||||
|
<h2> |
||||
|
<span>Customer:</span> |
||||
|
<span t-field="o.name"/> |
||||
|
</h2> |
||||
|
</div> |
||||
|
</div> |
||||
|
<t t-foreach="o.sale_order_ids" t-as="so"> |
||||
|
<t t-set="state_name" t-value="dict(so.fields_get(allfields=['state'])['state']['selection'])[so.state]"/> |
||||
|
<h3> |
||||
|
<span>Order N°:</span> |
||||
|
<t t-esc="so.name"/>  <span>Status:</span> |
||||
|
<t t-esc="state_name"/> |
||||
|
</h3> |
||||
|
<div class="row mt32 mb32" id="informations"> |
||||
|
<div t-if="so.client_order_ref" |
||||
|
class="col-xs-3"> |
||||
|
<strong>Your Reference:</strong> |
||||
|
<p t-field="so.client_order_ref"/> |
||||
|
</div> |
||||
|
<div t-if="so.date_order" class="col-xs-3"> |
||||
|
<strong>Date Ordered:</strong> |
||||
|
<p t-field="so.date_order" t-options='{"format": "d MMMM y"}'/> |
||||
|
</div> |
||||
|
<div t-if="so.user_id.name" |
||||
|
class="col-xs-3"> |
||||
|
<strong>Salesperson:</strong> |
||||
|
<p t-field="so.user_id.name"/> |
||||
|
</div> |
||||
|
<div t-if="so.payment_term" |
||||
|
class="col-xs-3"> |
||||
|
<strong>Payment Term:</strong> |
||||
|
<p t-field="so.payment_term"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!--<table class="table table-condensed">--> |
||||
|
<table class="table table-condensed"> |
||||
|
<thead> |
||||
|
<tr> |
||||
|
<th>Description</th> |
||||
|
<th class="text-right">Quantity</th> |
||||
|
<th class="text-right">Unit Price |
||||
|
</th> |
||||
|
<th class="text-right">Price</th> |
||||
|
</tr> |
||||
|
</thead> |
||||
|
<tbody class="sale_tbody"> |
||||
|
<tr t-foreach="so.order_line" t-as="l"> |
||||
|
<td> |
||||
|
<span t-field="l.name"/> |
||||
|
</td> |
||||
|
<td class="text-right"> |
||||
|
<span t-esc="'%.1f'%(l.product_uom_qty)"/> |
||||
|
<span groups="product.group_uom" |
||||
|
t-field="l.product_uom"/> |
||||
|
</td> |
||||
|
<td class="text-right"> |
||||
|
<span t-field="l.price_unit"/> |
||||
|
</td> |
||||
|
<td class="text-right"> |
||||
|
<span t-field="l.price_subtotal"/> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
<div class="row"> |
||||
|
<div class="col-xs-4 pull-right"> |
||||
|
<table class="table table-condensed"> |
||||
|
<tr class="border-black"> |
||||
|
<td> |
||||
|
<strong>Total</strong> |
||||
|
</td> |
||||
|
<td class="text-right"> |
||||
|
<span t-field="so.amount_total" |
||||
|
t-options="{"widget": "monetary", "display_currency": "so.pricelist_id.currency_id"}"/> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</table> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- Related Invoices --> |
||||
|
<t t-if="so.invoice_ids"> |
||||
|
<table class="table table-condensed" |
||||
|
style="font-size:120%;"> |
||||
|
<tr> |
||||
|
<th style="text-align:center;">Related Invoices</th> |
||||
|
</tr> |
||||
|
</table> |
||||
|
|
||||
|
<table class="table table-striped table-condensed" |
||||
|
style="font-size:90%;"> |
||||
|
|
||||
|
<tr> |
||||
|
<th>Date</th> |
||||
|
<th>Description</th> |
||||
|
<th>Status</th> |
||||
|
<th>Quantity</th> |
||||
|
<th class="text-right">Unit Price |
||||
|
</th> |
||||
|
<th class="text-right">Total</th> |
||||
|
</tr> |
||||
|
<t t-foreach="so.invoice_ids" t-as="i"> |
||||
|
<t t-set="state_name" t-value="dict(i.fields_get(allfields=['state'])['state']['selection'])[i.state]"/> |
||||
|
<tr t-foreach="i.invoice_line" |
||||
|
t-as="il"> |
||||
|
<td> |
||||
|
<span t-esc="i.date_invoice"/> |
||||
|
</td> |
||||
|
<td> |
||||
|
<span t-esc="il.name"/> |
||||
|
</td> |
||||
|
<td> |
||||
|
<span t-esc="state_name"/> |
||||
|
</td> |
||||
|
<td> |
||||
|
<span t-esc="il.quantity"/> |
||||
|
</td> |
||||
|
<td class="text-right"> |
||||
|
<span t-esc="il.price_unit"/> |
||||
|
</td> |
||||
|
|
||||
|
<td class="text-right"> |
||||
|
<span t-esc="il.price_subtotal "/> |
||||
|
</td> |
||||
|
|
||||
|
</tr> |
||||
|
|
||||
|
</t> |
||||
|
</table> |
||||
|
<t t-set="total" |
||||
|
t-value="sum(so.mapped('invoice_ids.amount_total'))"/> |
||||
|
<t t-set="pending" |
||||
|
t-value="so.amount_total - total"/> |
||||
|
<div class="row"> |
||||
|
<div class="col-xs-4 pull-right"> |
||||
|
<table class="table table-condensed"> |
||||
|
<tr class="border-black"> |
||||
|
<td> |
||||
|
<strong>Total</strong> |
||||
|
</td> |
||||
|
<td class="text-right"> |
||||
|
<span t-esc="total"/> |
||||
|
</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td> |
||||
|
<strong>Pending</strong> |
||||
|
</td> |
||||
|
<td class="text-right"> |
||||
|
<span t-esc="pending"/> |
||||
|
</td> |
||||
|
</tr> |
||||
|
|
||||
|
</table> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<hr style="border-top: dotted 1px;"/> |
||||
|
</t> |
||||
|
<t t-if="not so.invoice_ids"> |
||||
|
<table class="table table-condensed" |
||||
|
style="font-size:120%;"> |
||||
|
<tr> |
||||
|
<th style="text-align:center;">No Invoices for this order</th> |
||||
|
</tr> |
||||
|
</table> |
||||
|
<hr style="border-top: dotted 1px;"/> |
||||
|
</t> |
||||
|
</t> |
||||
|
<p style="text-align: center;">---- Printed: |
||||
|
<span t-esc="context_timestamp(datetime.datetime.now()).strftime('%A, %B %d, %Y')"/> |
||||
|
---- |
||||
|
</p> |
||||
|
</t> |
||||
|
</div> |
||||
|
</t> |
||||
|
</t> |
||||
|
</template> |
||||
|
</data> |
||||
|
</openerp> |
After Width: 512 | Height: 512 | Size: 6.0 KiB |
@ -0,0 +1,32 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<openerp> |
||||
|
<data> |
||||
|
<report |
||||
|
id="action_report_debtor_card" |
||||
|
model="res.partner" |
||||
|
string="Debtor Card" |
||||
|
report_type="qweb-pdf" |
||||
|
file="account_debtor_card.report_debtor_card" |
||||
|
name="account_debtor_card.report_debtor_card" |
||||
|
/> |
||||
|
<record id="view_partner_form_inherit" model="ir.ui.view"> |
||||
|
<field name="name">view.partner.form.inherit</field> |
||||
|
<field name="model">res.partner</field> |
||||
|
<field name="inherit_id" ref="base.view_partner_form"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<xpath expr="//form/sheet" position="before"> |
||||
|
<header> |
||||
|
<button type="object" name="print_debtor_card" |
||||
|
string="Print Debtor Card" |
||||
|
attrs="{'invisible':[('sale_order_ids','=',[])]}"/> |
||||
|
</header> |
||||
|
</xpath> |
||||
|
<notebook position="inside"> |
||||
|
<page name="sale_orders" string="Sale Orders"> |
||||
|
<field name="sale_order_ids"/> |
||||
|
</page> |
||||
|
</notebook> |
||||
|
</field> |
||||
|
</record> |
||||
|
</data> |
||||
|
</openerp> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue