Files
OMS/app/invoice/lib/sales/data.php
2025-12-28 23:13:25 +08:00

121 lines
4.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
class invoice_sales_data
{
private $appName = 'ome';
public function setAppName($appName) {
$this->appName = $appName;
return $this;
}
/**
* 开票明细,使用销售单均摊方案
* @param [type] $invoice [description]
* @return [type] [description]
*/
public function generate($invoice)
{
//方法弃用
return false;
if (!$invoice['order_id']) {
return false;
}
if (in_array($invoice['sync'], array('3','4','5','7','8','9')) && $invoice['itemsdf']) {
#冲红使用
$sales_data = json_decode($invoice['itemsdf'], 1);
if($sales_data) {
return $sales_data;
}
}
$rows = app::get('ome')->model('orders')->getList('order_id',array('order_id'=>$invoice['order_id']));
if(empty($rows)) {
$this->appName = 'archive';
}
$orderinfo = kernel::single('ome_sales_original_data')->setAppName($this->appName)->init($invoice['order_id']);
if (in_array($invoice['sync'], array('4', '5')) && $orderinfo['shipping']['cost_shipping'] > 0 && '1' == app::get('ome')->getConf('ome.invoice.amount.infreight') && $invoice['amount'] < $orderinfo['total_amount']) {
$total_amount = $invoice['amount'];
$orderinfo['pmt_order'] += $orderinfo['total_amount'] - $total_amount;
$orderinfo['total_amount'] = $total_amount;
} else if ($invoice['amount'] && $invoice['amount'] < $orderinfo['total_amount']) {
// 如果开票金额小于订单金额
$pmt_tmp = $orderinfo['total_amount'] - $invoice['amount'];
if ($pmt_tmp > $orderinfo['shipping']['cost_shipping']) {
$pmt_tmp -= $orderinfo['shipping']['cost_shipping'];
}
$orderinfo['pmt_order'] += $pmt_tmp;
$orderinfo['total_amount'] = $invoice['amount'];
}
$sales_data = kernel::single('ome_sales_data')->generate($orderinfo, -1);
// 保存开票内容
if ($invoice['id'] && $invoice['order_id']) {
$invMdl = app::get('invoice')->model('order');
$invMdl->update(['itemsdf' => json_encode($sales_data)],['id' => $invoice['id'],'order_id'=>$invoice['order_id'],'is_status'=>'0']);
}
return $sales_data;
}
/**
* 获取开票数据
* @Author: xueding
* @Vsersion: 2023/6/5 下午6:24
* @param $params
* @return bool|mixed|null
*/
public function getInvoiceData($params)
{
$id = $params['id'];
if (!$id) {
return false;
}
$invoiceMdl = app::get('invoice')->model('order');
$invoiceItemMdl = app::get('invoice')->model('order_items');
$invoice = $invoiceMdl->db_dump($id);
if (in_array($invoice['sync'], array('3','4', '5')) && $invoice['itemsdf']) {
#冲红使用
$sales_data = json_decode($invoice['itemsdf'], 1);
if($sales_data) {
return $sales_data;
}
}
$itemList = $invoiceItemMdl->getList('*,bm_id as product_id,bn as sales_material_bn,amount as sales_amount,quantity as nums',['id'=>$id,'is_delete'=>'false']);
foreach ($itemList as $key => $val) {
//开票明细税率为空使用渠道配置税率进行开票
if ($val['tax_rate'] == 0 && $params['tax_rate'] > 0) {
$invoiceItemMdl->update(['tax_rate'=>$params['tax_rate']],['item_id'=>$val['item_id']]);
}
}
if ($invoice['invoice_type'] == 'merge') {
$itemList = kernel::single('invoice_order')->showMergeInvoiceItems($itemList);
}
$invoice['sales_items'] = $itemList;
if ($invoice['id']) {
unset($invoice['itemsdf']);
$invoiceMdl->update(['itemsdf' => json_encode($invoice)],['id' => $invoice['id'],'is_status'=>'0']);
}
return $invoice;
}
}