Ver Fonte

[ADD] api json builded

Gogs há 7 anos atrás
pai
commit
42804f4673

+ 1 - 9
__init__.py

@@ -1,10 +1,2 @@
 # -*- coding: utf-8 -*
-from models import account_invoice_line
-from models import account_journal
-from models import account_payment_term
-from models import account_voucher
-from models import product_template
-from models import res_company
-from models import res_currency
-from models import res_partner
-from models import sale_order_line
+import controllers

+ 1 - 1
__openerp__.py

@@ -4,7 +4,7 @@
     'author': "Robert Gauto",
     'category': 'Uncategorized',
     'version': '0.1',
-    'depends': ['base', 'sale', 'account', 'multi_store', 'eiru_product_extra_price'],
+    'depends': ['base', 'sale', 'account', 'multi_store', 'eiru_product_extra_price', 'currency_utility'],
     'data': [
         'templates.xml'
     ]

+ 0 - 1
models/__init__.py

@@ -1 +0,0 @@
-# -*- coding: utf-8 -*

+ 0 - 6
models/account_invoice_line.py

@@ -1,6 +0,0 @@
-from openerp import models, fields
-
-class AccountInvoiceLine(models.Model):
-    _inherit = 'account.invoice.line'
-
-    discount = fields.Float(digits=(12,9))

+ 0 - 77
models/account_journal.py

@@ -1,77 +0,0 @@
-from openerp import api, fields, models
-
-class AccountJournal(models.Model):
-    _inherit = 'account.journal'
-
-    @api.model
-    def get_journals(self):
-        domain = [
-            ('active', '=', True),
-            ('type', 'in', ['bank', 'cash']),
-            ('default_credit_account_id.currency_id', '=', False)
-        ]
-        journals = []
-
-        for journal in self.env['account.journal'].search(domain, order='id'):
-            if not (journal.store_ids >= self.env.user.store_ids):
-                continue
-
-            journals.append({
-                'id': journal.id,
-                'name': journal.name,
-                'display_name': journal.display_name,
-                'code': journal.code,
-                'cash_control': journal.cash_control,
-                'type': journal.type,
-                'currency': {
-                    'id': journal.currency.id,
-                    'name': journal.currency.name,
-                    'display_name': journal.currency.display_name
-                },
-                'default_credit_account': {
-                    'id': journal.default_credit_account_id.id,
-                    'name': journal.default_credit_account_id.name,
-                    'display_name': journal.default_credit_account_id.display_name,
-                    'code': journal.default_credit_account_id.code,
-                    'exchange_rate': journal.default_credit_account_id.exchange_rate,
-                    'foreign_balance': journal.default_credit_account_id.foreign_balance,
-                    'reconcile': journal.default_credit_account_id.reconcile,
-                    'debit': journal.default_credit_account_id.debit,
-                    'credit': journal.default_credit_account_id.credit,
-                    'currency_mode': journal.default_credit_account_id.currency_mode,
-                    'company_currency': {
-                        'id': journal.default_credit_account_id.company_currency_id.id,
-                        'name': journal.default_credit_account_id.company_currency_id.name,
-                        'display_name': journal.default_credit_account_id.company_currency_id.display_name,
-                    },
-                    'currency': {
-                        'id': journal.default_credit_account_id.currency_id.id,
-                        'name': journal.default_credit_account_id.currency_id.name,
-                        'display_name': journal.default_credit_account_id.currency_id.display_name
-                    }
-                },
-                'default_debit_account': {
-                    'id': journal.default_debit_account_id.id,
-                    'name': journal.default_debit_account_id.name,
-                    'display_name': journal.default_debit_account_id.display_name,
-                    'code': journal.default_debit_account_id.code,
-                    'exchange_rate': journal.default_credit_account_id.exchange_rate,
-                    'foreign_balance': journal.default_credit_account_id.foreign_balance,
-                    'reconcile': journal.default_credit_account_id.reconcile,
-                    'debit': journal.default_credit_account_id.debit,
-                    'credit': journal.default_credit_account_id.credit,
-                    'currency_mode': journal.default_credit_account_id.currency_mode,
-                    'company_currency': {
-                        'id': journal.default_credit_account_id.company_currency_id.id,
-                        'name': journal.default_credit_account_id.company_currency_id.name,
-                        'display_name': journal.default_credit_account_id.company_currency_id.display_name,
-                    },
-                    'currency': {
-                        'id': journal.default_credit_account_id.currency_id.id,
-                        'name': journal.default_credit_account_id.currency_id.name,
-                        'display_name': journal.default_credit_account_id.currency_id.display_name
-                    }
-                }
-            })
-
-        return journals

+ 0 - 30
models/account_payment_term.py

@@ -1,30 +0,0 @@
-from openerp import api, fields, models
-
-class AccountPaymentTerm(models.Model):
-    _inherit = 'account.payment.term'
-
-    @api.model
-    def get_account_payment_terms(self):
-        domain = [('active', '=', True)]
-        terms = []
-
-        for term in self.env['account.payment.term'].search(domain):
-                lines = []
-
-                for line in term.line_ids:
-                    lines.append({
-                        'id': line.id,
-                        'days': line.days,
-                        'days2': line.days2,
-                        'value': line.value,
-                        'value_amount': line.value_amount
-                    })
-
-                terms.append({
-                    'id': term.id,
-                    'name': term.name,
-                    'display_name': term.display_name,
-                    'lines': lines
-                })
-
-        return terms

+ 0 - 237
models/account_voucher.py

@@ -1,237 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from openerp import api, fields, models
-from openerp.exceptions import except_orm
-
-from datetime import datetime
-from dateutil.relativedelta import relativedelta as rd
-from dateutil.parser import parse
-
-class AccountVoucher(models.Model):
-    _inherit = 'account.voucher'
-
-    @api.model
-    def create_from_pos(self, values):
-        date_now = fields.Date.context_today(self)
-        date_format = '%Y-%m-%d'
-
-        # Step 1: Select currency based on selected journal
-        journal = self.env['account.journal'].browse(int(values['journal_id']))
-        currency_id = journal.default_credit_account_id.currency_id.id or journal.default_credit_account_id.company_currency_id.id
-
-        # Step 2: Check product pricelist
-        pricelist_model = self.env['product.pricelist']
-        pricelist = pricelist_model.search([('active', '=', True), ('type', '=', 'sale')])
-
-        if not len([p.id for p in pricelist if p.currency_id.id == currency_id]):
-            pricelist = pricelist[0].copy()
-            pricelist.write({
-                'currency_id': currency_id
-            })
-        else:
-            pricelist = pricelist[0]
-
-        # Step 3: Create sale order and confirm
-        sale_order = self.env['sale.order'].create({
-            'partner_id': values.get('customer_id'),
-            'order_line': [[0, False, { 
-                'product_id': int(v.get('id')), 
-                'product_uom_qty': float(v.get('qty')), 
-                'price_unit': float(v.get('price')),
-                'discount': (1.0 - float(v.get('discount'))) * 100,
-            }] for v in values.get('cart_items', [])],
-            'picking_policy': 'direct',
-            'state': 'manual',
-            'date_confirm': date_now,
-            'currency_id': currency_id,
-            'pricelist_id': pricelist.id,
-            'payment_term': values.get('payment_term_id')
-        })
-
-        sale_order.action_button_confirm()
-
-        # Step 4: Create invoice and calculate due date
-        invoice = self.env['account.invoice'].browse(sale_order.action_invoice_create())
-
-
-        due_date = parse(date_now) + rd(days=max(invoice.payment_term.line_ids.mapped(lambda x: x.days + x.days2)))
-
-        invoice.write({
-            'currency_id': currency_id,
-            'date_invoice': date_now,
-            'date_due': due_date.strftime(date_format),
-            'state': 'open'
-        })
-
-        # Step 5: Create invoice move lines
-        amount_paid = float(values['amount_paid'])
-
-        decimal_precision = self.env['decimal.precision'].precision_get('Account')
-
-        invoice_move_lines = invoice._get_analytic_lines()
-
-        compute_taxes = self.env['account.invoice.tax'].compute(invoice)
-        invoice.check_tax_lines(compute_taxes)
-        invoice._recompute_tax_amount()
-
-        invoice_move_lines += self.env['account.invoice.tax'].move_line_get(invoice.id)
-
-        total, total_currency, invoice_move_lines = invoice.compute_invoice_totals(invoice.company_id.currency_id, invoice.reference, invoice_move_lines)
-
-        percent_paid = amount_paid / round(total, decimal_precision)
-        distribute_percent = -(percent_paid / len(invoice.payment_term.line_ids))
-
-        total_lines = []
-
-        for line in invoice.payment_term.line_ids:
-            due_date = (parse(date_now) + rd(days=line.days + line.days2)).strftime(date_format)
-
-            if percent_paid and percent_paid < 1:
-                total_lines.append([date_now, percent_paid])
-                percent_paid = amount_paid = 0
-
-                if due_date == date_now and line.value_amount:
-                    distribute_percent = -((total_lines[0][1] - line.value_amount)  / (len(invoice.payment_term.line_ids) - 1))
-                    continue
-
-            if line.value != 'balance':
-                total_lines.append([due_date, line.value_amount + distribute_percent])
-                continue
-
-            total_lines.append([due_date, line.value_amount])
-
-            for total_line in total_lines:
-                current_price = round(total * total_line[1], decimal_precision)
-
-                if current_price < 0.0:
-                    continue
-
-                amount_paid += current_price
-
-                invoice_move_lines.append({
-                    'type': 'dest',
-                    'name': '/',
-                    'price': current_price if total_line[1] else round(total - amount_paid, decimal_precision) or total,
-                    'account_id': invoice.account_id.id,
-                    'date_maturity': total_line[0],            
-                    'amount_currency': invoice.company_id.currency_id.compute(total_line[1], invoice.currency_id) if invoice.currency_id != invoice.company_id.currency_id else False,
-                    'currency_id': invoice.currency_id != invoice.company_id.currency_id and invoice.currency_id.id,
-                    'ref': invoice.reference
-                })
-
-            total_lines = []
-
-        # Step 6: Create account move
-        accounting_partner = self.env['res.partner']._find_accounting_partner(invoice.partner_id)
-        move_line_values = [(0, 0, invoice.line_get_convert(line, accounting_partner.id, invoice.date_invoice)) for line in invoice_move_lines]
-        move_line_values = invoice.group_lines(invoice_move_lines, move_line_values)
-        move_line_values = invoice.finalize_invoice_move_lines(move_line_values)
-
-        ctx = dict(self._context, lang=invoice.partner_id.lang, company_id=invoice.company_id.id)
-        period = invoice.period_id
-
-        if not period:
-            period = period.with_context(ctx).find(invoice.date_invoice)[:1]
-
-        if period:
-            for line in move_line_values:
-                line[2]['period_id'] = period.id
-
-        ctx['invoice'] = invoice
-        ctx_nolang = ctx.copy()
-        ctx_nolang.pop('lang', None)
- 
-        account_move = self.env['account.move'].with_context(ctx_nolang).create({
-            'ref': invoice.reference or invoice.name,
-            'line_id': move_line_values,
-            'journal_id': invoice.journal_id.id,
-            'date': invoice.date_invoice,
-            'narration': invoice.comment,
-            'company_id': invoice.company_id.id,
-            'period_id': period.id
-        })
-
-        invoice.with_context(ctx).write({
-            'move_id': account_move.id,
-            'period_id': account_move.period_id.id,
-            'move_name': account_move.name,
-        })
-
-        account_move.post()
-
-        # Step 7: Write a number for invoice
-        invoice.action_number()
-
-        # Step 8: Create voucher
-        account_voucher = self.create({
-            'reference': account_move.name,
-            'type': 'receipt',
-            'journal_id': int(values['journal_id']),
-            'company_id': account_move.company_id.id,
-            'pre_line': True,
-            'amount': float(values['amount_paid']),
-            'period_id': account_move.period_id.id,
-            'date': account_move.date,
-            'partner_id': account_move.partner_id.id,
-            'account_id': int(values['account_id']),
-            'currency_id': currency_id,
-            'line_cr_ids': [[0, False, {
-                'date_due': l.date_maturity,
-                'account_id': l.account_id.id,
-                'date_original': l.invoice.date_invoice,
-                'move_line_id': l.id,
-                'amount_original': abs(l.credit or l.debit or 0.0),
-                'amount_unreconciled': abs(l.amount_residual),
-                'amount': abs(l.debit) if account_move.date == l.date_maturity else 0.0,
-                'reconcile': account_move.date == l.date_maturity,
-                'currency_id': currency_id
-            }] for l in account_move.line_id]
-        })
-
-        account_voucher.action_move_line_create()
-
-        # Step 9: Close a invoice
-        if invoice.residual == 0:
-            invoice.write({
-                'state': 'paid'
-            })
-
-
-        # Step 10: Save bank statement
-        bank_statement_lines = [[0, False, {
-            'name': account_voucher.reference,
-            'amount': account_voucher.amount,
-            'partner_id': account_voucher.partner_id.id,
-            'voucher_id': account_voucher.id,
-            'journal_id': account_voucher.journal_id.id,
-            'account_id': account_voucher.account_id.id,
-            'journal_entry_id': account_voucher.move_id.id,
-            'currency_id': account_voucher.currency_id.id,
-            'ref': 'POS/' + values.get('payment_reference') or ''
-        }]]
-
-        account_bank_statement = self.env['account.bank.statement'].search([('journal_id', '=', account_voucher.journal_id.id), ('date', '=', date_now)])
-
-        account_bank_statement_values = {
-            'date': date_now,
-            'user_id': self.env.user.id,
-            'journal_id': account_voucher.journal_id.id,
-            'period_id': account_voucher.period_id.id,
-            'line_ids': bank_statement_lines,
-            'state': 'open' if account_voucher.journal_id.type == 'cash' else 'draft'
-        }
-
-        if account_bank_statement:
-            if len(account_bank_statement) == 1:
-                account_bank_statement.write(account_bank_statement_values) 
-            else: 
-                account_bank_statement[len(account_bank_statement) - 1].write(account_bank_statement_values)
-        else:
-            account_bank_statement.create(account_bank_statement_values)
-            
-        # Step 11: Return values
-        return {
-            'action_id': self.env['ir.actions.report.xml'].search([('report_name', '=', 'account.report_invoice')]).id,
-            'invoice_id': invoice.id
-        }
-        

+ 0 - 92
models/product_template.py

@@ -1,92 +0,0 @@
-from openerp import api, fields, models
-
-class ProductTemplate(models.Model):
-    _inherit = 'product.template'
-
-    @api.model
-    def get_products(self):
-        domain = [('sale_ok', '=', True), ('active', '=', True)]
-        products = []
-
-        # map products
-        for product in self.env['product.template'].search(domain):
-            variants = []
-
-            # map variants
-            for variant in product.product_variant_ids:
-                if not variant.active:
-                    continue
-
-                # prices = []
-                attributes = []
-
-                # for price in variant.product_tmpl_id.pricelist_item_ids.filtered(lambda x: x.product_id.id == variant.id):
-                #     prices.append({
-                #         'id': price.id,
-                #         'price': price.price_surcharge
-                #     })
-
-                # map product attribute
-                for attribute_value in variant.attribute_value_ids:
-                    attributes.append({
-                        'id': attribute_value.id,
-                        'price': attribute_value.name,
-                        'display_name': attribute_value.display_name
-                    })
-
-                variants.append({
-                    'id': variant.id,
-                    'display_name': variant.display_name,
-                    'ean13': variant.ean13,
-                    'image_medium': variant.image_medium,
-                    'list_price': variant.list_price,
-                    'minimum_price': variant.minimum_price,
-                    'maximum_price': variant.maximum_price,
-                    'name': variant.name,
-                    'qty_available': variant.qty_available,
-                    'attributes': attributes
-                })
-
-            products.append({
-                'id': product.id,
-                'display_name': product.display_name,
-                'ean13': product.ean13,
-                'image_medium': product.image_medium,
-                'list_price': product.list_price,
-                'name': product.name,
-                'qty_available': product.qty_available,
-                'category': {
-                    'id': product.categ_id.id,
-                    'display_name': product.categ_id.display_name,
-                    'name': product.categ_id.name,
-                    'account_journal': {
-                        'id': product.categ_id.property_stock_journal.id,
-                        'code': product.categ_id.property_stock_journal.code,
-                        'company': {
-                            'id': product.categ_id.property_stock_journal.company_id.id,
-                            'name': product.categ_id.property_stock_journal.company_id.name,
-                            'currency': {
-                                'id': product.categ_id.property_stock_journal.company_id.currency_id.id,
-                                'name': product.categ_id.property_stock_journal.company_id.currency_id.name
-                            }
-                        },
-                        'currency': {
-                            'id': product.categ_id.property_stock_journal.currency.id,
-                            'name': product.categ_id.property_stock_journal.currency.name
-                        },
-                        'display_name': product.categ_id.property_stock_journal.display_name,
-                        'name': product.categ_id.property_stock_journal.name,
-                    }
-                },
-                'uom': {
-                    'id': product.uom_id.id,
-                    'name': product.uom_id.name
-                },
-                'uos': {
-                    'id': product.uos_id.id,
-                    'name': product.uos_id.name
-                },
-                'variant_count': product.product_variant_count,
-                'variants': variants
-            })
-        return products

+ 0 - 20
models/res_company.py

@@ -1,20 +0,0 @@
-from openerp import api, fields, models
-
-class ResCompany(models.Model):
-    _inherit = 'res.company'
-
-    @api.model
-    def get_company(self):
-        user = self.env.user
-
-        return {
-            'id': user.company_id.id,
-            'name': user.company_id.name,
-            'currency': {
-                'id': user.company_id.currency_id.id,
-                'name': user.company_id.currency_id.name,
-                'display_name': user.company_id.currency_id.display_name,
-                'symbol': user.company_id.currency_id.symbol
-            },
-            'today': fields.Date.context_today(self)
-        }

+ 0 - 35
models/res_currency.py

@@ -1,35 +0,0 @@
-from openerp import api, fields, models
-
-class ResCurrency(models.Model):
-    _inherit = 'res.currency'
-
-    @api.model
-    def get_currencies(self):
-        domain = [('active', '=', True)]
-        currencies = []
-        
-        # if self.env.user.store_id:
-        #     domain.append(('company_id', '=', self.env.user.store_id.company_id.id))
-        # else:
-        #     domain.append(('company_id', '=', self.env.user.company_id.id))
-
-        # print domain
-
-        for currency in self.env['res.currency'].search(domain):
-            currencies.append({
-                'id': currency.id,
-                'name': currency.name,
-                'display_name': currency.display_name,
-                'accuracy': currency.accuracy,
-                'base': currency.base,
-                'position': currency.position,
-                'rate': currency.rate,
-                'rounding': currency.rounding,
-                'symbol': currency.symbol,
-                'company': {
-                    'id': currency.company_id.id,
-                    'name': currency.company_id.name
-                }
-            })
-
-        return currencies

+ 0 - 40
models/res_partner.py

@@ -1,40 +0,0 @@
-from openerp import api, fields, models
-
-class ResPartner(models.Model):
-    _inherit = 'res.partner'
-
-    @api.model
-    def create_from_pos(self, values):
-        return self.create(values).id
-
-    @api.model
-    def get_customers(self):
-        domain = [('customer', '=', True), ('active', '=', True)]
-        customers = []
-
-        for customer in self.env['res.partner'].search(domain):
-            categories = []
-
-            for category in customer.category_id:
-                categories.append({
-                    'id': category.id,
-                    'name': category.name,
-                    'display_name': category.display_name
-                })
-
-            customers.append({
-                'id': customer.id,
-                'name': customer.name,
-                'display_name': customer.display_name,
-                'ruc': customer.ruc,
-                'image_medium': customer.image_medium,
-                'phone': customer.phone,
-                'mobile': customer.mobile,
-                'email': customer.email,
-                'credit': customer.credit,
-                'credit_limit': customer.credit_limit,
-                'categories': categories
-            })
-        
-
-        return customers

+ 0 - 7
models/sale_order_line.py

@@ -1,7 +0,0 @@
-from openerp import models, fields, api
-
-
-class SaleOrderLine(models.Model):
-    _inherit = 'sale.order.line'
-
-    discount = fields.Float(digits=(12, 9))

+ 1 - 2
templates.xml

@@ -2,14 +2,13 @@
     <data>
         <template id="eiru_pos.assets" name="Eiru Pos Assets" inherit_id="eiru_assets.assets">
             <xpath expr="." position="inside">
-                <script src="http://localhost:35729/livereload.js" />
                 <link rel="stylesheet" href="/eiru_pos/static/src/main.css" />
                 <script type="text/javascript" src="/eiru_pos/static/src/main.js" />
             </xpath>
         </template>
 
         <record id="eiru_pos.client_action_launch" model="ir.actions.client">
-            <field name="name">Eiru Dashboard Configuration</field>
+            <field name="name">Eiru Ventas</field>
             <field name="tag">eiru_pos.action_launch</field>
         </record>