summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2024-05-30 18:04:00 +0700
committerstephanchrst <stephanchrst@gmail.com>2024-05-30 18:04:00 +0700
commit1e9824d861f2208e1beb477ea8028cd007ecbd89 (patch)
tree335f7f5324d92216dac1bdcba6edf4f4b779581d
parent89ff021709e23d2adefd08298c49be8a7eccf21a (diff)
add api create invoice
-rw-r--r--fixco_api/controllers/api_v1/sale.py23
-rw-r--r--fixco_custom/models/sale.py36
2 files changed, 55 insertions, 4 deletions
diff --git a/fixco_api/controllers/api_v1/sale.py b/fixco_api/controllers/api_v1/sale.py
index 7096ccb..a4bc7d0 100644
--- a/fixco_api/controllers/api_v1/sale.py
+++ b/fixco_api/controllers/api_v1/sale.py
@@ -152,7 +152,6 @@ class Sales(controller.Controller):
@http.route(prefix + 'do/confirm', auth='public', methods=['POST', 'OPTIONS'], csrf=False)
@controller.Controller.must_authorized()
def complete_delivery_order(self, **kw):
- # stock_picking.action_assign
sale_id = int(kw.get('id', '0'))
ref = str(kw.get('ref', '0'))
if sale_id == 0 and ref == '0':
@@ -180,7 +179,25 @@ class Sales(controller.Controller):
'reserved': reserved,
'validated': str(validated)
})
- test = data
- print(test)
return self.response(data)
+ @http.route(prefix + 'invoice/create', auth='public', methods=['POST', 'OPTIONS'], csrf=False)
+ @controller.Controller.must_authorized()
+ def complete_delivery_order(self, **kw):
+ print(1)
+ sale_id = int(kw.get('id', '0'))
+ ref = str(kw.get('ref', '0'))
+ if sale_id == 0 and ref == '0':
+ return self.response(code=500, description='Internal Server Error')
+ if sale_id > 0:
+ query = [('id', '=', sale_id)]
+ else:
+ query = [('client_order_ref', '=', ref)]
+
+ sales = request.env['sale.order'].search(query)
+ invoiced = ''
+ for sale in sales:
+ invoiced = sale.api_create_invoices(sale.id)
+ return self.response([{
+ 'invoiced': str(invoiced)
+ }])
diff --git a/fixco_custom/models/sale.py b/fixco_custom/models/sale.py
index 6c49ac8..ceea0ab 100644
--- a/fixco_custom/models/sale.py
+++ b/fixco_custom/models/sale.py
@@ -1,7 +1,41 @@
-from odoo import models, fields, api
+from odoo import api, fields, models, _
+from odoo.exceptions import UserError
class SaleOrder(models.Model):
_inherit = "sale.order"
carrier_id = fields.Many2one('delivery.carrier', string='Shipping Method')
+
+ def api_create_invoices(self, sale_order_id):
+ sale_orders = self.env['sale.order'].search([('id', '=', sale_order_id)])
+
+ # if self.advance_payment_method == 'delivered':
+ sale_orders._create_invoices(final=False)
+ # else:
+ # # Create deposit product if necessary
+ # if not self.product_id:
+ # vals = self._prepare_deposit_product()
+ # self.product_id = self.env['product.product'].create(vals)
+ # self.env['ir.config_parameter'].sudo().set_param('sale.default_deposit_product_id', self.product_id.id)
+ #
+ # sale_line_obj = self.env['sale.order.line']
+ # for order in sale_orders:
+ # amount, name = self._get_advance_details(order)
+ #
+ # if self.product_id.invoice_policy != 'order':
+ # raise UserError(_('The product used to invoice a down payment should have an invoice policy set to "Ordered quantities". Please update your deposit product to be able to create a deposit invoice.'))
+ # if self.product_id.type != 'service':
+ # raise UserError(_("The product used to invoice a down payment should be of type 'Service'. Please use another product or update this product."))
+ # taxes = self.product_id.taxes_id.filtered(lambda r: not order.company_id or r.company_id == order.company_id)
+ # tax_ids = order.fiscal_position_id.map_tax(taxes, self.product_id, order.partner_shipping_id).ids
+ # analytic_tag_ids = []
+ # for line in order.order_line:
+ # analytic_tag_ids = [(4, analytic_tag.id, None) for analytic_tag in line.analytic_tag_ids]
+ #
+ # so_line_values = self._prepare_so_line(order, analytic_tag_ids, tax_ids, amount)
+ # so_line = sale_line_obj.create(so_line_values)
+ # self._create_invoice(order, so_line, amount)
+ # if self._context.get('open_invoices', False):
+ # return sale_orders.action_view_invoice()
+ return {'type': 'ir.actions.act_window_close'} \ No newline at end of file