Browse Source

May 16: [FIX] Bug Fixed 'pos_book_order'

pull/317/head
RisvanaCybro 12 months ago
parent
commit
86e45aab7c
  1. 1
      pos_book_order/__manifest__.py
  2. 2
      pos_book_order/doc/RELEASE_NOTES.md
  3. 8
      pos_book_order/models/book_order.py
  4. 6
      pos_book_order/static/src/js/BookOrderButton.js
  5. 18
      pos_book_order/static/src/js/BookOrderPopup.js
  6. 3
      pos_book_order/static/src/js/BookedOrdersButton.js
  7. 18
      pos_book_order/static/src/js/BookedOrdersScreen.js
  8. 57
      pos_book_order/static/src/js/TicketScreen.js
  9. 8
      pos_book_order/static/src/xml/BookedOrdersScreen.xml

1
pos_book_order/__manifest__.py

@ -47,6 +47,7 @@
'pos_book_order/static/src/xml/OrderReceipt.xml',
'pos_book_order/static/src/js/BookOrderPopup.js',
'pos_book_order/static/src/js/BookOrderButton.js',
'pos_book_order/static/src/js/TicketScreen.js',
'pos_book_order/static/src/js/BookedOrdersButton.js',
'pos_book_order/static/src/js/BookedOrdersScreen.js',
'pos_book_order/static/src/js/models.js',

2
pos_book_order/doc/RELEASE_NOTES.md

@ -1,7 +1,7 @@
## Module <pos_book_order>
#### 11.01.2024
#### Version 17.0.1.0.0
#### Version 17.0.1.0.1
##### ADD
- Initial Commit for POS Booking Order

8
pos_book_order/models/book_order.py

@ -86,6 +86,8 @@ class BookOrder(models.Model):
help="Fiscal position account "
"for order",
string='Fiscal Position')
pos_order_uid = fields.Char(help="Related Pos order",
string='Related Pos order')
pickup_date = fields.Datetime(string='Pickup Date', readonly=True,
help="Picking date of the order")
deliver_date = fields.Datetime(string='Deliver Date', readonly=True,
@ -127,10 +129,12 @@ class BookOrder(models.Model):
self.write({
'state': 'confirmed',
})
return self.pos_order_uid
@api.model
def create_booked_order(self, partner, phone, address, date, price_list,
product, note, pickup_date, delivery_date):
product, note, pickup_date, delivery_date,pos_order):
""" It creates a booked order based on the value in the booking popup
in PoS ui.
partner(int): id of partner
@ -149,6 +153,7 @@ class BookOrder(models.Model):
'delivery_address': address,
'pricelist_id': price_list if price_list else False,
'date_quotation': fields.Date.today(),
'pos_order_uid':pos_order,
'book_line_ids': [Command.create({
'product_id': product['product_id'][i],
'qty': product['qty'][i],
@ -160,6 +165,7 @@ class BookOrder(models.Model):
order.write({'pickup_date': pickup_date + ' 00:00:00'})
if delivery_date:
order.write({'deliver_date': delivery_date + ' 00:00:00'})
return order.name
@api.model
def all_orders(self):

6
pos_book_order/static/src/js/BookOrderButton.js

@ -1,8 +1,4 @@
/** @odoo-module **/
/*
* This file is used to register the a new button for booking orders with selected partner and products.
*/
/** @odoo-module **/
import { _t } from "@web/core/l10n/translation";
import { ProductScreen } from "@point_of_sale/app/screens/product_screen/product_screen";
@ -13,10 +9,8 @@ import { BookOrderPopup } from "./BookOrderPopup";
import { ErrorPopup } from "@point_of_sale/app/errors/popups/error_popup";
export class BookOrderButton extends Component {
static template = "pos_book_order.BookOrderButton";
setup() {
this.pos = usePos();
this.popup = useService("popup");

18
pos_book_order/static/src/js/BookOrderPopup.js

@ -42,8 +42,6 @@ export class BookOrderPopup extends AbstractAwaitablePopup {
this.Method_pickup.el.style.display='none'
this.Method_deliver.el.style.display='block'
}
console.log(this.delivery.el.checked)
console.log(this.pickup.el.checked)
}
async confirm() {
@ -56,6 +54,7 @@ export class BookOrderPopup extends AbstractAwaitablePopup {
var phone = this.order.partner.phone;
var date = this.order.date_order;
var line = this.order.orderlines;
var pos_order = this.order.uid;
if(this.order.pricelist){
var price_list = this.order.pricelist.id;
}
@ -72,9 +71,20 @@ export class BookOrderPopup extends AbstractAwaitablePopup {
product['qty'].push(line[i].quantity)
product['price'].push(line[i].price)
};
var self = this
await this.orm.call(
"book.order", "create_booked_order", [partner, phone, address, date, price_list,product, order_note, pickup_date, delivery_date], {}
)
"book.order", "create_booked_order", [partner, phone, address, date, price_list,product, order_note, pickup_date, delivery_date,pos_order], {}
).then(function(book_order) {
self.order.booking_ref_id=book_order
})
await this.orm.call(
"book.order", "all_orders", [], {}
).then(function(result) {
self.pos.showScreen('BookedOrdersScreen', {
data: result,
new_order:true
});
})
this.cancel();
}

3
pos_book_order/static/src/js/BookedOrdersButton.js

@ -20,7 +20,8 @@ static template = 'pos_book_order.BookedOrdersButton';
"book.order", "all_orders", [], {}
).then(function(result) {
self.pos.showScreen('BookedOrdersScreen', {
data: result
data: result,
new_order:false
});
})
}

18
pos_book_order/static/src/js/BookedOrdersScreen.js

@ -15,25 +15,21 @@ class BookedOrdersScreen extends TicketScreen {
this.orm = useService("orm");
}
back() {
this.pos.showScreen('ProductScreen');
}
orderDone() {
// on clicking the back button it will redirected Product screen
this.pos.add_new_order()
this.pos.showScreen('ProductScreen');
}
async _Confirm(ev) {
// On clicking confirm button on each order a order will create with corresponding partner and products,user can do the payment
var self = this
var data = ev
await this.orm.call('book.order', 'action_confirm',[data.id],{})
var order=this.pos.add_new_order();
for (var i of data.products) {
var product = self.pos.db.get_product_by_id(i['id'])
var qty = i['qty']
order.add_product(product, {
quantity: qty,
price: i['price']
})
}
var uid = await this.orm.call('book.order', 'action_confirm',[data.id],{})
var order = this.pos.orders.find((order) => order.uid == uid);
var partner_id = data.partner_id
order.set_partner(this.pos.db.get_partner_by_id(partner_id));
this.pos.selectedOrder=order
this.pos.selectedOrder.is_booked = true
this.pos.selectedOrder.booked_data = data
this.pos.selectedOrder.booking_ref_id = data.id

57
pos_book_order/static/src/js/TicketScreen.js

@ -0,0 +1,57 @@
/** @odoo-module **/
import { TicketScreen } from "@point_of_sale/app/screens/ticket_screen/ticket_screen";
import { patch } from "@web/core/utils/patch";
import { ConfirmPopup } from "@point_of_sale/app/utils/confirm_popup/confirm_popup";
import { _t } from "@web/core/l10n/translation";
patch(TicketScreen.prototype, {
async onClickOrder(clickedOrder) {
if (clickedOrder.booking_ref_id){
const { confirmed } = await this.popup.add(ConfirmPopup, {
title: _t("Confirm Booking"),
body: _t(
"You have to confirm the booking to choose this order"
),
});
if (confirmed) {
var self = this
await this.orm.call(
"book.order", "all_orders", [], {}
).then(function(result) {
self.pos.showScreen('BookedOrdersScreen', {
data: result,
new_order:false
});
})
}
}
else{
return super.onClickOrder(clickedOrder);
}
},
async _setOrder(clickedOrder) {
if (clickedOrder.booking_ref_id){
const { confirmed } = await this.popup.add(ConfirmPopup, {
title: _t("Confirm Booking"),
body: _t(
"You have to confirm the booking to choose this order"
),
});
if (confirmed) {
var self = this
await this.orm.call(
"book.order", "all_orders", [], {}
).then(function(result) {
self.pos.showScreen('BookedOrdersScreen', {
data: result,
new_order:false
});
})
}
}
else{
return super._setOrder(clickedOrder);
}
}
});

8
pos_book_order/static/src/xml/BookedOrdersScreen.xml

@ -5,10 +5,15 @@
<div class="partnerlist-screen screen">
<div class="screen-content">
<div class="top-content">
<div class="button back" t-on-click="back">
<div class="button back" t-on-click="back" t-if="!props.new_order">
<i class="fa fa-angle-double-left"/>
Back
</div>
<div class="button back" t-if="props.new_order" t-on-click="orderDone">
<i class="oi oi-chevron-right" role="img"
aria-label="New Order" title="New Order"/>
New Order
</div>
</div>
<table class="partner-list table table-striped w-100">
<thead>
@ -114,7 +119,6 @@
</div>
</td>
</tr>
</t>
<t t-if="props.data.length==0">
<div class="empty-order-list"

Loading…
Cancel
Save