[IMP]pms_api_rest: added GET services for sale lines and invoices

This commit is contained in:
braisab
2022-10-29 00:11:59 +02:00
committed by Darío Lodeiros
parent 630664d338
commit 21bb8178bc
5 changed files with 150 additions and 1 deletions

View File

@@ -52,3 +52,5 @@ from . import pms_account_payment_term
from . import pms_room_closure_reason
from . import pms_report
from . import pms_folio_sale_line
from . import pms_invoice_line

View File

@@ -1,9 +1,10 @@
from marshmallow import fields
from odoo.addons.datamodel.core import Datamodel
from odoo.addons.datamodel.fields import NestedModel
class PmsAccountMove(Datamodel):
class PmsAccountMoveInfo(Datamodel):
_name = "pms.account.move.info"
id = fields.Integer(required=False, allow_none=True)
amount = fields.Float(required=False, allow_none=True)
@@ -11,3 +12,5 @@ class PmsAccountMove(Datamodel):
date = fields.String(required=False, allow_none=True)
paymentState = fields.String(required=False, allow_none=True)
state = fields.String(required=False, allow_none=True)
partnerName = fields.String(required=False, allow_none=True)
moveLines = fields.List(NestedModel("pms.invoice.line.info"))

View File

@@ -0,0 +1,17 @@
from marshmallow import fields
from odoo.addons.datamodel.core import Datamodel
class PmsFolioSaleInfo(Datamodel):
_name = "pms.folio.sale.line.info"
id = fields.Integer(required=False, allow_none=True)
name = fields.String(required=False, allow_none=True)
priceUnit = fields.Float(required=False, allow_none=True)
qtyToInvoice = fields.Float(required=False, allow_none=True)
qtyInvoiced = fields.Float(required=False, allow_none=True)
priceTotal = fields.Float(required=False, allow_none=True)
productQty = fields.Float(required=False, allow_none=True)
reservationId = fields.Integer(required=False, allow_none=True)
serviceId = fields.Integer(required=False, allow_none=True)
displayType = fields.String(required=False, allow_none=True)

View File

@@ -0,0 +1,12 @@
from marshmallow import fields
from odoo.addons.datamodel.core import Datamodel
class PmsInvoiceLineInfo(Datamodel):
_name = "pms.invoice.line.info"
id = fields.Integer(required=False, allow_none=True)
name = fields.String(required=False, allow_none=True)
quantity = fields.Float(required=False, allow_none=True)
total = fields.Float(required=False, allow_none=True)
displayType = fields.String(required=False, allow_none=True)

View File

@@ -421,3 +421,118 @@ class PmsFolioService(Component):
self.env["pms.service"].create(vals)
return folio.id
@restapi.method(
[
(
[
"/<int:folio_id>/sale-lines",
],
"GET",
)
],
output_param=Datamodel("pms.folio.sale.line.info", is_list=True),
auth="jwt_api_pms",
)
def get_folio_sale_lines(self, folio_id):
folio = self.env["pms.folio"].browse(folio_id)
sale_lines = []
if not folio:
pass
else:
PmsFolioSaleLineInfo = self.env.datamodels["pms.folio.sale.line.info"]
if folio.sale_line_ids:
for sale_line in folio.sale_line_ids:
sale_lines.append(
PmsFolioSaleLineInfo(
id=sale_line.id if sale_line.id else None,
name=sale_line.name if sale_line.name else None,
priceUnit=sale_line.price_unit
if sale_line.price_unit
else None,
qtyToInvoice=sale_line.qty_to_invoice
if sale_line.qty_to_invoice
else None,
qtyInvoiced=sale_line.qty_invoiced
if sale_line.qty_invoiced
else None,
priceTotal=sale_line.price_total
if sale_line.price_total
else None,
productQty=sale_line.product_uom_qty
if sale_line.product_uom_qty
else None,
reservationId=sale_line.reservation_id
if sale_line.reservation_id
else None,
serviceId=sale_line.service_id
if sale_line.service_id
else None,
displayType=sale_line.display_type
if sale_line.display_type
else None,
)
)
return sale_lines
@restapi.method(
[
(
[
"/<int:folio_id>/invoices",
],
"GET",
)
],
output_param=Datamodel("pms.account.move.info", is_list=True),
auth="jwt_api_pms",
)
def get_folio_invoices(self, folio_id):
folio = self.env["pms.folio"].browse(folio_id)
invoices = []
if not folio:
pass
else:
PmsFolioInvoiceInfo = self.env.datamodels["pms.account.move.info"]
PmsInvoiceLineInfo = self.env.datamodels["pms.invoice.line.info"]
if folio.move_ids:
for move_id in folio.move_ids:
move_lines = []
for move_line in move_id.invoice_line_ids:
move_lines.append(
PmsInvoiceLineInfo(
id=move_line.id,
name=move_line.name if move_line.name else None,
quantity=move_line.quantity
if move_line.quantity
else None,
total=move_line.price_total
if move_line.price_total
else None,
displayType=move_line.display_type
if move_line.display_type
else None,
)
)
invoices.append(
PmsFolioInvoiceInfo(
id=move_id.id if move_id.id else None,
name=move_id.name if move_id.name else None,
amount=round(move_id.amount_total, 2)
if move_id.amount_total
else None,
date=move_id.date.strftime("%d/%m/%Y")
if move_id.date
else None,
state=move_id.state if move_id.state else None,
paymentState=move_id.payment_state
if move_id.payment_state
else None,
partnerName=move_id.partner_id.name
if move_id.partner_id.name
else None,
moveLines=move_lines if move_lines else None,
)
)
return invoices