diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 17:14:58 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 17:14:58 +0700 |
| commit | 1ca3b3df3421961caec3b747a364071c80f5c7da (patch) | |
| tree | 6778a1f0f3f9b4c6e26d6d87ccde16e24da6c9d6 /custom_indoteknik | |
| parent | b57188be371d36d96caac4b8d65a40745c0e972c (diff) | |
initial commit
Diffstat (limited to 'custom_indoteknik')
| -rw-r--r-- | custom_indoteknik/__init__.py | 3 | ||||
| -rw-r--r-- | custom_indoteknik/__manifest__.py | 18 | ||||
| -rw-r--r-- | custom_indoteknik/models/__init__.py | 6 | ||||
| -rw-r--r-- | custom_indoteknik/models/account_move.py | 33 | ||||
| -rw-r--r-- | custom_indoteknik/models/account_period.py | 147 | ||||
| -rw-r--r-- | custom_indoteknik/models/export_product.py | 34 | ||||
| -rw-r--r-- | custom_indoteknik/models/manufacture.py | 26 | ||||
| -rw-r--r-- | custom_indoteknik/models/sale.py | 29 | ||||
| -rw-r--r-- | custom_indoteknik/security/ir.model.access.csv | 4 | ||||
| -rw-r--r-- | custom_indoteknik/static/description/icon.png | bin | 0 -> 1823 bytes | |||
| -rw-r--r-- | custom_indoteknik/views/account_move_view.xml | 16 | ||||
| -rw-r--r-- | custom_indoteknik/views/account_period_view.xml | 64 | ||||
| -rw-r--r-- | custom_indoteknik/views/export_product_view.xml | 50 | ||||
| -rw-r--r-- | custom_indoteknik/views/manufacture_view.xml | 54 | ||||
| -rw-r--r-- | custom_indoteknik/views/menu_items.xml | 22 | ||||
| -rw-r--r-- | custom_indoteknik/views/purchase_view.xml | 18 | ||||
| -rw-r--r-- | custom_indoteknik/wizard/__init__.py | 4 |
17 files changed, 528 insertions, 0 deletions
diff --git a/custom_indoteknik/__init__.py b/custom_indoteknik/__init__.py new file mode 100644 index 0000000..cde864b --- /dev/null +++ b/custom_indoteknik/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models diff --git a/custom_indoteknik/__manifest__.py b/custom_indoteknik/__manifest__.py new file mode 100644 index 0000000..53ec7c7 --- /dev/null +++ b/custom_indoteknik/__manifest__.py @@ -0,0 +1,18 @@ +{ + 'name': 'Customization for Indoteknik', + 'description': 'Feature for Monthlyu Periods in Accounting', + "category": 'Accounting', + 'author': 'Alfius Samuel', + 'version': '1.0', + 'depends': ['base','purchase','base_accounting_kit','account'], + 'data': [ + 'views/account_period_view.xml', + 'views/account_move_view.xml', + 'views/menu_items.xml', + 'views/purchase_view.xml', + 'security/ir.model.access.csv' + ], + 'qweb': [], + 'installable': True, + 'application': True, +} diff --git a/custom_indoteknik/models/__init__.py b/custom_indoteknik/models/__init__.py new file mode 100644 index 0000000..70d934c --- /dev/null +++ b/custom_indoteknik/models/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- + +from . import account_period +from . import export_product +from . import manufacture +from . import account_move
\ No newline at end of file diff --git a/custom_indoteknik/models/account_move.py b/custom_indoteknik/models/account_move.py new file mode 100644 index 0000000..a5c9eaf --- /dev/null +++ b/custom_indoteknik/models/account_move.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError, RedirectWarning, ValidationError, except_orm, Warning +from datetime import datetime + + +class AccountMove(models.Model): + _inherit = "account.move" + + period_id = fields.Many2one(compute="_get_period", comodel_name="account.period", string="Period") + + @api.depends('invoice_date') + def _get_period(self): + for res in self: + period_id = "" + + if res.invoice_date: + period_ids = self.env['account.period'].search([ + ('start_date', '<=', res.invoice_date), + ('end_date', '>=', res.invoice_date) + ]) + + if period_ids: + period_id = period_ids[0].id + + res.period_id = period_id + + def action_post(self): + if self.period_id and self.period_id.state == "Open": + super(AccountMove, self).action_post() + else: + raise ValidationError(_('Period of this Journal has been closed')) diff --git a/custom_indoteknik/models/account_period.py b/custom_indoteknik/models/account_period.py new file mode 100644 index 0000000..9e9b2c0 --- /dev/null +++ b/custom_indoteknik/models/account_period.py @@ -0,0 +1,147 @@ +# -*- coding: utf-8 -*- + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError, RedirectWarning, ValidationError, except_orm, Warning +from datetime import datetime + + +class AccountPeriodLine(models.Model): + _name = "account.period.line" + + reference = fields.Many2one('account.period', string="Reference") + period_name = fields.Char('Period Name') + start_date = fields.Date('Start Date') + end_date = fields.Date('End Date') + state = fields.Selection([('Open','Open'),('Closed','Closed')], string="Status", default="Open") + + def action_close_period(self): + for res in self: + res.write({'state': 'Closed'}) + + def action_open_period(self): + for res in self: + res.write({'state': 'Open'}) + +class AccountPeriod(models.Model): + _name = "account.period" + + name = fields.Char('Period Name') + year = fields.Char('Year') + start_date = fields.Date('Start Date') + end_date = fields.Date('End Date') + line_ids = fields.One2many('account.period.line', 'reference', string='Lines') + state = fields.Selection([('Open','Open'),('Closed','Closed')], string="Status", default="Open") + + def action_create_period(self): + for res in self: + if res.line_ids: + for line in res.line_ids: + line.unlink() + + start_date1 = datetime(int(res.year), 1, 1) + end_date1 = datetime(int(res.year), 1, 31) + self.env['account.period.line'].create({ + 'reference': res.id, + 'period_name': '01/' + str(res.year), + 'start_date': start_date1, + 'end_date': end_date1 + }) + + start_date2 = datetime(int(res.year), 2, 1) + end_date2 = datetime(int(res.year), 2, 28) + self.env['account.period.line'].create({ + 'reference': res.id, + 'period_name': '02/' + str(res.year), + 'start_date': start_date2, + 'end_date': end_date2 + }) + + start_date3 = datetime(int(res.year), 3, 1) + end_date3 = datetime(int(res.year), 3, 31) + self.env['account.period.line'].create({ + 'reference': res.id, + 'period_name': '03/' + str(res.year), + 'start_date': start_date3, + 'end_date': end_date3 + }) + + start_date4 = datetime(int(res.year), 4, 1) + end_date4 = datetime(int(res.year), 4, 30) + self.env['account.period.line'].create({ + 'reference': res.id, + 'period_name': '04/' + str(res.year), + 'start_date': start_date4, + 'end_date': end_date4 + }) + + start_date5 = datetime(int(res.year), 5, 1) + end_date5 = datetime(int(res.year), 5, 31) + self.env['account.period.line'].create({ + 'reference': res.id, + 'period_name': '05/' + str(res.year), + 'start_date': start_date5, + 'end_date': end_date5 + }) + + start_date6 = datetime(int(res.year), 6, 1) + end_date6 = datetime(int(res.year), 6, 30) + self.env['account.period.line'].create({ + 'reference': res.id, + 'period_name': '06/' + str(res.year), + 'start_date': start_date6, + 'end_date': end_date6 + }) + + start_date7 = datetime(int(res.year), 7, 1) + end_date7 = datetime(int(res.year), 7, 31) + self.env['account.period.line'].create({ + 'reference': res.id, + 'period_name': '07/' + str(res.year), + 'start_date': start_date7, + 'end_date': end_date7 + }) + + start_date8 = datetime(int(res.year), 8, 1) + end_date8 = datetime(int(res.year), 8, 31) + self.env['account.period.line'].create({ + 'reference': res.id, + 'name': '08/' + str(res.year), + 'start_date': start_date8, + 'end_date': end_date8 + }) + + start_date9 = datetime(int(res.year), 9, 1) + end_date9 = datetime(int(res.year), 9, 30) + self.env['account.period.line'].create({ + 'reference': res.id, + 'period_name': '09/' + str(res.year), + 'start_date': start_date9, + 'end_date': end_date9 + }) + + start_date10 = datetime(int(res.year), 10, 1) + end_date10 = datetime(int(res.year), 10, 31) + self.env['account.period.line'].create({ + 'reference': res.id, + 'period_name': '10/' + str(res.year), + 'start_date': start_date10, + 'end_date': end_date10 + }) + + start_date11 = datetime(int(res.year), 11, 1) + end_date11 = datetime(int(res.year), 11, 30) + self.env['account.period.line'].create({ + 'reference': res.id, + 'period_name': '11/' + str(res.year), + 'start_date': start_date11, + 'end_date': end_date11 + }) + + start_date12 = datetime(int(res.year), 12, 1) + end_date12 = datetime(int(res.year), 12, 31) + self.env['account.period.line'].create({ + 'reference': res.id, + 'period_name': '12/' + str(res.year), + 'start_date': start_date12, + 'end_date': end_date12 + })
\ No newline at end of file diff --git a/custom_indoteknik/models/export_product.py b/custom_indoteknik/models/export_product.py new file mode 100644 index 0000000..540891e --- /dev/null +++ b/custom_indoteknik/models/export_product.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError, RedirectWarning, ValidationError, except_orm, Warning +from datetime import datetime + + +class ExportProductLine(models.Model): + _name = "export.product.line" + + reference = fields.Many2one('Reference') + value = fields.Char('Value') + +class ExportProduct(models.Model): + _name = "export.product" + + product_template_id = fields.Char('Product External ID') + product_template_name = fields.Char('Product Name') + attribute_id = fields.Char('Attribute') + value_text = fields.Char(compute="_get_value_text", string="Values in Text") + line_ids = fields.One2many('export.product.line', 'reference', 'Lines') + + @api.depends('line_ids.value') + def _get_value_text(self): + for res in self: + value_text = "" + if res.line_ids: + for line in res.line_ids: + if not value_text: + value_text += line.value + elif value_text: + value_text += "," + line.value + + res.value_text = value_text diff --git a/custom_indoteknik/models/manufacture.py b/custom_indoteknik/models/manufacture.py new file mode 100644 index 0000000..55ffe6f --- /dev/null +++ b/custom_indoteknik/models/manufacture.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError, RedirectWarning, ValidationError, except_orm, Warning +from datetime import datetime + + +class XManufacture(models.Model): + _name = "x.manufacture" + + x_name = fields.Char('Name') + x_negara_asal = fields.Char('Negara Asal') + x_short_desc = fields.Text('Short Description') + x_manufacture_category = fields.Many2one('x.manufacture.category', string="Manufacture Category") + x_manufacture_level = fields.Selection([ + ('Prioritas','Prioritas'), + ('Gold','Gold'), + ('Silver','Silver') + ], string="Manufacture Level") + x_produk_aksesoris_sparepart = fields.Selection([ + ('Produk','Produk'), + ('Aksesoris','Aksesoris'), + ('Sparepart','Sparepart') + ], string="Jenis Produk") + x_description = fields.Text('Description') + x_logo_manufacture = fields.Binary('Logo Manufacture')
\ No newline at end of file diff --git a/custom_indoteknik/models/sale.py b/custom_indoteknik/models/sale.py new file mode 100644 index 0000000..f020e23 --- /dev/null +++ b/custom_indoteknik/models/sale.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError, RedirectWarning, ValidationError, except_orm, Warning +from datetime import datetime + + +# class SaleOrder(models.Model): +# _inherit = "sale.order" + +# @api.multi +# def action_confirm(self): +# for order in self: +# # Check Invoice Limit +# if order.partner_id.invoice_limit < order.partner_id.total_receivable: +# raise ValidationError(_("This Customer has reached the Limit of Outstanding Invoices")) +# elif order.partner_id.invoice_limit < order.amount_total: +# raise ValidationError(_("This order is more than this Customer Limit")) + +# # Check Overdue invoices +# outstanding_invoice = self.env['account.move'].search([ +# ('partner_id','=',order.partner_id.id), +# ('state','=','open'), +# ('date_due','<',fields.Date.today())]) + +# if outstanding_invoice: +# raise ValidationError(_("There are Overdue Invoices for this Customer")) + +# return super(SaleOrder, self).action_confirm()
\ No newline at end of file diff --git a/custom_indoteknik/security/ir.model.access.csv b/custom_indoteknik/security/ir.model.access.csv new file mode 100644 index 0000000..9fe08b9 --- /dev/null +++ b/custom_indoteknik/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink + +access_account_period,access_account_period,model_account_period,base.group_user,1,1,1,1 +access_account_period_line,access_account_period_line,model_account_period_line,base.group_user,1,1,1,1
\ No newline at end of file diff --git a/custom_indoteknik/static/description/icon.png b/custom_indoteknik/static/description/icon.png Binary files differnew file mode 100644 index 0000000..89dd872 --- /dev/null +++ b/custom_indoteknik/static/description/icon.png diff --git a/custom_indoteknik/views/account_move_view.xml b/custom_indoteknik/views/account_move_view.xml new file mode 100644 index 0000000..8abbb80 --- /dev/null +++ b/custom_indoteknik/views/account_move_view.xml @@ -0,0 +1,16 @@ +<odoo> + <data> + + <record model="ir.ui.view" id="view_move_form_indoteknik"> + <field name="name">account.move.form</field> + <field name="model">account.move</field> + <field name="inherit_id" ref="account.view_move_form"/> + <field name="arch" type="xml"> + <field name="ref" position="after"> + <field name="period_id"/> + </field> + </field> + </record> + + </data> +</odoo>
\ No newline at end of file diff --git a/custom_indoteknik/views/account_period_view.xml b/custom_indoteknik/views/account_period_view.xml new file mode 100644 index 0000000..6b4fd5a --- /dev/null +++ b/custom_indoteknik/views/account_period_view.xml @@ -0,0 +1,64 @@ +<odoo> + <data> + + <record id="account_period_tree" model="ir.ui.view"> + <field name="name">Periods</field> + <field name="model">account.period</field> + <field name="arch" type="xml"> + <tree> + <field name="name"/> + <field name="year"/> + <field name="start_date"/> + <field name="end_date"/> + </tree> + </field> + </record> + + <record id="account_period_form" model="ir.ui.view"> + <field name="name">Periods</field> + <field name="model">account.period</field> + <field name="arch" type="xml"> + <form> + <header> + <button name="action_create_period" string="Create Periods" + states="Open" type="object" class="oe_highlight"/> + <field name="state" readonly="1" widget="statusbar"/> + </header> + <sheet> + <group> + <group> + <field name="name" required="1"/> + <field name="year" required="1"/> + </group> + <group> + <field name="start_date" required="1"/> + <field name="end_date" required="1"/> + </group> + </group> + <group> + <notebook> + <page string="Periods"> + <group> + <field name="line_ids" nolabel="1" readonly="1"> + <tree> + <field name="period_name"/> + <field name="start_date"/> + <field name="end_date"/> + <field name="state"/> + <button name="action_close_period" type="object" + string="Close Period" class="oe_highlight" states="Open"/> + <button name="action_open_period" type="object" + string="Open Period" class="oe_highlight" states="Closed"/> + </tree> + </field> + </group> + </page> + </notebook> + </group> + </sheet> + </form> + </field> + </record> + + </data> +</odoo>
\ No newline at end of file diff --git a/custom_indoteknik/views/export_product_view.xml b/custom_indoteknik/views/export_product_view.xml new file mode 100644 index 0000000..f670734 --- /dev/null +++ b/custom_indoteknik/views/export_product_view.xml @@ -0,0 +1,50 @@ +<odoo> + <data> + + <record id="export_product_tree" model="ir.ui.view"> + <field name="name">Export Products</field> + <field name="model">export.product</field> + <field name="arch" type="xml"> + <tree> + <field name="product_template_id"/> + <field name="product_template_name"/> + <field name="attribute_id"/> + <field name="value_text"/> + </tree> + </field> + </record> + + <record id="export_product_form" model="ir.ui.view"> + <field name="name">Export Products</field> + <field name="model">export.product</field> + <field name="arch" type="xml"> + <form> + <sheet> + <group> + <group> + <field name="product_template_id"/> + <field name="product_template_name"/> + <field name="attribute_id"/> + <field name="value_text"/> + </group> + </group> + <group> + <notebook> + <page string="Values"> + <group> + <field name="line_ids" nolabel="1"> + <tree editable="bottom"> + <field name="value"/> + </tree> + </field> + </group> + </page> + </notebook> + </group> + </sheet> + </form> + </field> + </record> + + </data> +</odoo>
\ No newline at end of file diff --git a/custom_indoteknik/views/manufacture_view.xml b/custom_indoteknik/views/manufacture_view.xml new file mode 100644 index 0000000..834223d --- /dev/null +++ b/custom_indoteknik/views/manufacture_view.xml @@ -0,0 +1,54 @@ +<odoo> + <data> + + <record id="x_manufacture_tree" model="ir.ui.view"> + <field name="name">Manufacture</field> + <field name="model">x.manufacture</field> + <field name="arch" type="xml"> + <tree> + <field name="x_name"/> + <field name="x_negara_asal"/> + <field name="x_short_desc"/> + <field name="x_manufacture_category"/> + <field name="x_manufacture_level"/> + <field name="x_produk_aksesoris_sparepart"/> + <field name="x_description"/> + </tree> + </field> + </record> + + <record id="x_manufacture_form" model="ir.ui.view"> + <field name="name">Manufacture</field> + <field name="model">x.manufacture</field> + <field name="arch" type="xml"> + <form> + <sheet> + <group> + <group> + <field name="x_name"/> + <field name="x_negara_asal"/> + <field name="x_short_desc"/> + <field name="x_manufacture_category"/> + <field name="x_manufacture_level"/> + <field name="x_produk_aksesoris_sparepart"/> + </group> + <group> + <field name="x_logo_manufacture"/> + </group> + </group> + <group> + <notebook> + <page string="Description"> + <group> + <field name="x_description" nolabel="1"/> + </group> + </page> + </notebook> + </group> + </sheet> + </form> + </field> + </record> + + </data> +</odoo>
\ No newline at end of file diff --git a/custom_indoteknik/views/menu_items.xml b/custom_indoteknik/views/menu_items.xml new file mode 100644 index 0000000..68873ff --- /dev/null +++ b/custom_indoteknik/views/menu_items.xml @@ -0,0 +1,22 @@ +<odoo> + <data> + + <record id="account_period_action" model="ir.actions.act_window"> + <field name="name">Periods</field> + <field name="res_model">account.period</field> + <field name="view_mode">tree,form</field> + <field name="help" type="html"> + <p class="oe_view_nocontent_create"> + Click to Add New Data + </p> + </field> + </record> + + <menuitem id="menu_account_period" + name="Accounting Periods" + action="account_period_action" + parent="account.menu_finance_configuration" + sequence="0"/> + + </data> +</odoo>
\ No newline at end of file diff --git a/custom_indoteknik/views/purchase_view.xml b/custom_indoteknik/views/purchase_view.xml new file mode 100644 index 0000000..869cfad --- /dev/null +++ b/custom_indoteknik/views/purchase_view.xml @@ -0,0 +1,18 @@ +<odoo> + <data> + + <record model="ir.ui.view" id="purchase_order_form_indoteknik"> + <field name="name">purchase.order.form</field> + <field name="model">purchase.order</field> + <field name="inherit_id" ref="purchase.purchase_order_form"/> + <field name="arch" type="xml"> + <button name="button_confirm" position="replace"> + <button name="button_confirm" type="object" states="sent" + string="Confirm Order" class="oe_highlight" id="bid_confirm" + groups="purchase.group_purchase_manager"/> + </button> + </field> + </record> + + </data> +</odoo>
\ No newline at end of file diff --git a/custom_indoteknik/wizard/__init__.py b/custom_indoteknik/wizard/__init__.py new file mode 100644 index 0000000..4e3aa25 --- /dev/null +++ b/custom_indoteknik/wizard/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import mnc_document_approval_wizard +from . import mnc_document_reject_wizard |
