每次我在我的销售中处理时,我如何触发以获得总和,而不仅仅是我想要的表的第一行,我有相同的产品名称和数量,这是我的产品库存
例如,我有一个数量为50和项目2我有100这样
| 姓名|数量|日期|
| - -|- -|- -|
| 奶茶|五十个|二零二二年十二月三日|
| 奶茶|100个|二零二二年十二月一日|
在我的销售中,如果我输入140,它必须被认为是
| 姓名|数量|日期|
| - -|- -|- -|
| 奶茶|第0页|二零二二年十二月三日|
| 奶茶|10个|二零二二年十二月一日|
但它只是删除了第一个数量,第二个数量保留为1,就像这样
| 姓名|数量|日期|
| - -|- -|- -|
| 奶茶|第0页|二零二二年十二月三日|
| 奶茶|100个|二零二二年十二月一日|
我代码在这里
public function update($id)
{
if($id) {
$user_id = $this->session->userdata('id');
$user_data = $this->model_users->getUserData($user_id);
// update the table info
$order_data = $this->getOrdersData($id);
$data = $this->model_tables->update($order_data['table_id'], array('available' => 1));
if($this->input->post('paid_status') == 1) {
$this->model_tables->update($this->input->post('table_name'), array('available' => 1));
}
else {
$this->model_tables->update($this->input->post('table_name'), array('available' => 2));
}
$data = array(
'gross_amount' => $this->input->post('gross_amount_value'),
'service_charge_rate' => $this->input->post('service_charge_rate'),
'service_charge_amount' => ($this->input->post('service_charge_value') > 0) ?$this->input->post('service_charge_value'):0,
'vat_charge_rate' => $this->input->post('vat_charge_rate'),
'vat_charge_amount' => ($this->input->post('vat_charge_value') > 0) ? $this->input->post('vat_charge_value') : 0,
'net_amount' => $this->input->post('net_amount_value'),
'discount' => $this->input->post('discount_amount_value'),
'paid_status' => ($this->input->post('change_value') > 0) ? $this->input->post('paid_status') : 2,
'user_id' => $user_id,
'table_id' => $this->input->post('table_name'),
'cash_tendered' => $this->input->post('cash_tendered'),
'total_change' => ($this->input->post('change_value') > 0) ? $this->input->post('change_value') : 0,
'discount_id' => json_encode($this->input->post('discount')),
'discount_percent' => $this->input->post('discount_perct_value'),
'remarks' => $this->input->post('remarks'),
);
$this->db->where('id', $id);
$update = $this->db->update('orders', $data);
// now remove the order item data
$this->db->where('order_id', $id);
$this->db->delete('order_items');
$count_product = count($this->input->post('product'));
for($x = 0; $x < $count_product; $x++) {
$items = array(
'order_id' => $id,
'product_id' => $this->input->post('product')[$x],
'qty' => $this->input->post('qty')[$x],
'rate' => $this->input->post('rate_value')[$x],
'amount' => $this->input->post('amount_value')[$x],
);
$this->db->insert('order_items', $items);
$prodid = $this->input->post('product')[$x];
$product_data = $this->model_products->getProductData([$prodid]);
$prodname = $product_data['name'];
$inputQuantity = (int)$this->input->post('qty')[$x];
$this->db->where('qty >', 0);
$this->db->order_by('expiration_date', 'ASC');
$this->db->limit(1);
$this->db->set('qty', "qty-$inputQuantity", false);
$this->db->update('product_inventory');
}
return true;
}
}
1条答案
按热度按时间iqih9akk1#
您遇到的问题似乎是代码没有正确更新order_items表中的数量。在代码中,您循环遍历订单中的每个项目,并用新数量更新order_items表。但是,您没有考虑到同一产品可能在订单中多次出现这一事实。
解决此问题的一种方法是循环遍历订单项并更新每个项的数量,同时跟踪每个产品的总数量。然后,在循环结束时,可以使用每个产品的正确数量更新order_items表。
下面是一个如何实现这一点的示例: