Fixed: Invoice data is not correct when multiple invoices created in an order

This commit is contained in:
Sumit Panwar
2024-06-08 16:16:49 +05:30
parent f93d321f6f
commit b5925817de
7 changed files with 125 additions and 49 deletions

View File

@@ -349,9 +349,9 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
if ($type_value)
if (isset($customer->id)) {
$cart_obj = new Cart($this->order->id_cart);
$order_bk_data = $obj_htl_bk_dtl->getOnlyOrderBookingData($this->order->id, $cart_obj->id_guest, $type_value['product_id'], $customer->id);
$order_bk_data = $obj_htl_bk_dtl->getOnlyOrderBookingData($this->order->id, $cart_obj->id_guest, $type_value['product_id'], $customer->id, $type_value['id_order_detail']);
} else {
$order_bk_data = $obj_htl_bk_dtl->getOnlyOrderBookingData($this->order->id, $customer->id_guest, $type_value['product_id']);
$order_bk_data = $obj_htl_bk_dtl->getOnlyOrderBookingData($this->order->id, $customer->id_guest, $type_value['product_id'], 0, $type_value['id_order_detail']);
}
$cart_htl_data[$type_key]['id_product'] = $type_value['product_id'];
@@ -387,7 +387,8 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
$data_v['date_to'],
0,
1,
0
0,
$type_value['id_order_detail']
);
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
$order_obj->id,
@@ -397,7 +398,8 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
$data_v['date_to'],
0,
1,
1
1,
$type_value['id_order_detail']
);
$cart_htl_data[$type_key]['date_diff'][$date_join]['additional_services_price_auto_add_ti'] = $objRoomTypeServiceProductOrderDetail->getroomTypeServiceProducts(
$order_obj->id,
@@ -410,7 +412,8 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
1,
1,
1,
Product::PRICE_ADDITION_TYPE_WITH_ROOM
Product::PRICE_ADDITION_TYPE_WITH_ROOM,
$type_value['id_order_detail']
);
$cart_htl_data[$type_key]['date_diff'][$date_join]['additional_services_price_auto_add_te'] = $objRoomTypeServiceProductOrderDetail->getroomTypeServiceProducts(
$order_obj->id,
@@ -423,7 +426,8 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
1,
0,
1,
Product::PRICE_ADDITION_TYPE_WITH_ROOM
Product::PRICE_ADDITION_TYPE_WITH_ROOM,
$type_value['id_order_detail']
);
$cart_htl_data[$type_key]['date_diff'][$date_join]['num_rm'] += 1;
@@ -457,7 +461,8 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
$data_v['date_to'],
0,
1,
0
0,
$type_value['id_order_detail']
);
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
$order_obj->id,
@@ -467,7 +472,8 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
$data_v['date_to'],
0,
1,
1
1,
$type_value['id_order_detail']
);
$cart_htl_data[$type_key]['date_diff'][$date_join]['additional_services'] = $objRoomTypeServiceProductOrderDetail->getroomTypeServiceProducts(
$order_obj->id,
@@ -476,7 +482,12 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
$data_v['id_product'],
$data_v['date_from'],
$data_v['date_to'],
0
0,
0,
null,
0,
null,
$type_value['id_order_detail']
);
$cart_htl_data[$type_key]['date_diff'][$date_join]['additional_services_price_ti'] = $objRoomTypeServiceProductOrderDetail->getroomTypeServiceProducts(
@@ -488,7 +499,10 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
$data_v['date_to'],
0,
1,
1
1,
0,
null,
$type_value['id_order_detail']
);
$cart_htl_data[$type_key]['date_diff'][$date_join]['additional_services_price_te'] = $objRoomTypeServiceProductOrderDetail->getroomTypeServiceProducts(
$order_obj->id,
@@ -499,7 +513,10 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
$data_v['date_to'],
0,
1,
0
0,
0,
null,
$type_value['id_order_detail']
);
$cart_htl_data[$type_key]['date_diff'][$date_join]['additional_services_price_auto_add_ti'] = $objRoomTypeServiceProductOrderDetail->getroomTypeServiceProducts(
@@ -513,7 +530,9 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
1,
1,
1,
Product::PRICE_ADDITION_TYPE_WITH_ROOM
Product::PRICE_ADDITION_TYPE_WITH_ROOM,
null,
$type_value['id_order_detail']
);
$cart_htl_data[$type_key]['date_diff'][$date_join]['additional_services_price_auto_add_te'] = $objRoomTypeServiceProductOrderDetail->getroomTypeServiceProducts(
$order_obj->id,
@@ -526,7 +545,9 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
1,
0,
1,
Product::PRICE_ADDITION_TYPE_WITH_ROOM
Product::PRICE_ADDITION_TYPE_WITH_ROOM,
null,
$type_value['id_order_detail']
);
$num_days = $obj_htl_bk_dtl->getNumberOfDays($data_v['date_from'], $data_v['date_to']);
@@ -555,7 +576,11 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
$type_value['product_id'],
$data_v['id_room'],
$data_v['date_from'],
$data_v['date_to']
$data_v['date_to'],
1,
0,
1,
$type_value['id_order_detail']
)) {
$extraDemands = array_shift($extraDemands);
$extraDemands['product_id'] = $type_value['product_id'];
@@ -572,7 +597,12 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
$type_value['product_id'],
$data_v['date_from'],
$data_v['date_to'],
$data_v['id_room']
$data_v['id_room'],
0,
null,
0,
null,
$type_value['id_order_detail']
)) {
$additionalServices = array_shift($additionalServices);
$additionalServices['product_id'] = $type_value['product_id'];
@@ -610,14 +640,16 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
$footer['total_extra_demands_te'] = $totalDemandsPriceTE;
}
}
$footer['room_price_tax_excl'] = $this->order->getTotalProductsWithoutTaxes(false, true) + $this->order->getTotalProductsWithoutTaxes(false, false, Product::SERVICE_PRODUCT_WITH_ROOMTYPE, 1, Product::PRICE_ADDITION_TYPE_WITH_ROOM);
$footer['room_price_tax_incl'] = $this->order->getTotalProductsWithTaxes(false, true) + $this->order->getTotalProductsWithoutTaxes(false, false, Product::SERVICE_PRODUCT_WITH_ROOMTYPE, 1, Product::PRICE_ADDITION_TYPE_WITH_ROOM);
$idsOrderDetail = array_column($order_details, 'id_order_detail');
$footer['room_price_tax_excl'] = $this->order->getTotalProductsWithoutTaxes(false, true, null, null, null, $idsOrderDetail) + $this->order->getTotalProductsWithoutTaxes(false, false, Product::SERVICE_PRODUCT_WITH_ROOMTYPE, 1, Product::PRICE_ADDITION_TYPE_WITH_ROOM, $idsOrderDetail);
$footer['room_price_tax_incl'] = $this->order->getTotalProductsWithTaxes(false, true, null, null, null, $idsOrderDetail) + $this->order->getTotalProductsWithoutTaxes(false, false, Product::SERVICE_PRODUCT_WITH_ROOMTYPE, 1, Product::PRICE_ADDITION_TYPE_WITH_ROOM, $idsOrderDetail);
// $footer['service_products_price_tax_excl'] = $this->order->getTotalProductsWithoutTaxes(false, false, Product::SERVICE_PRODUCT_WITHOUT_ROOMTYPE);
// $footer['service_products_price_tax_incl'] = $this->order->getTotalProductsWithTaxes(false, false, Product::SERVICE_PRODUCT_WITHOUT_ROOMTYPE);
$footer['additional_service_price_tax_excl'] = $this->order->getTotalProductsWithoutTaxes(false, false, Product::SERVICE_PRODUCT_WITH_ROOMTYPE, 0) + $totalDemandsPriceTE;
$footer['additional_service_price_tax_incl'] = $this->order->getTotalProductsWithTaxes(false, false, Product::SERVICE_PRODUCT_WITH_ROOMTYPE, 0) + $totalDemandsPriceTI;
$footer['total_convenience_fee_te'] = $this->order->getTotalProductsWithoutTaxes(false, false, Product::SERVICE_PRODUCT_WITH_ROOMTYPE, 1, Product::PRICE_ADDITION_TYPE_INDEPENDENT);
$footer['total_convenience_fee_ti'] = $this->order->getTotalProductsWithTaxes(false, false, Product::SERVICE_PRODUCT_WITH_ROOMTYPE, 1, Product::PRICE_ADDITION_TYPE_INDEPENDENT);
$footer['additional_service_price_tax_excl'] = $this->order->getTotalProductsWithoutTaxes(false, false, Product::SERVICE_PRODUCT_WITH_ROOMTYPE, 0, null, $idsOrderDetail) + $totalDemandsPriceTE;
$footer['additional_service_price_tax_incl'] = $this->order->getTotalProductsWithTaxes(false, false, Product::SERVICE_PRODUCT_WITH_ROOMTYPE, 0, null, $idsOrderDetail) + $totalDemandsPriceTI;
$footer['total_convenience_fee_te'] = $this->order->getTotalProductsWithoutTaxes(false, false, Product::SERVICE_PRODUCT_WITH_ROOMTYPE, 1, Product::PRICE_ADDITION_TYPE_INDEPENDENT, $idsOrderDetail);
$footer['total_convenience_fee_ti'] = $this->order->getTotalProductsWithTaxes(false, false, Product::SERVICE_PRODUCT_WITH_ROOMTYPE, 1, Product::PRICE_ADDITION_TYPE_INDEPENDENT, $idsOrderDetail);
$data = array(
'cart_htl_data' => $cart_htl_data,
'service_product_data' => $service_product_data,
@@ -737,6 +769,7 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
'ecotax_tax' => $this->order_invoice->getEcoTaxTaxesBreakdown(),
'wrapping_tax' => $this->order_invoice->getWrappingTaxesBreakdown(),
);
foreach ($breakdowns as $type => $bd) {
if (empty($bd)) {
unset($breakdowns[$type]);