|
@@ -7,7 +7,7 @@ use app\cxinv\model\InvoiceGood;
|
|
|
use app\cxinv\model\InvoiceOrder;
|
|
|
use app\cxinv\model\OrderCategory;
|
|
|
use app\cxinv\model\PayInfo;
|
|
|
-use think\App;
|
|
|
+use app\cxinv\model\PayInvoice;use think\App;
|
|
|
use think\facade\Validate;
|
|
|
class InvoiceItem extends Base{
|
|
|
public function __construct(App $app) {
|
|
@@ -185,6 +185,69 @@ class InvoiceItem extends Base{
|
|
|
return success('备注添加成功');
|
|
|
|
|
|
}
|
|
|
+ /**
|
|
|
+ * 发票明细正负数合并保留整数
|
|
|
+ * @param $main_id 正数id
|
|
|
+ * $voice_id 负数id
|
|
|
+ */
|
|
|
+ public function mergeItem(){
|
|
|
+ $param=$this->request->param(["main_id"=>"","voice_id"=>""],"post","trim");
|
|
|
+ $valid=Validate::rule([
|
|
|
+ 'main_id|正数id' => 'require|number|gt:0',
|
|
|
+ 'voice_id|负数id' => 'require|number|gt:0',
|
|
|
+ ]);
|
|
|
+ if(!$valid->check($param)) return error($valid->getError());
|
|
|
+ $main = $this->model->where(['id'=>$param['main_id']])->findOrEmpty();
|
|
|
+ if($main->isEmpty()) return error("正数发票明细不存在");
|
|
|
+ if($main->amount<=0) return error("正数发票明细金额必须大于0");
|
|
|
+ $voice = $this->model->where(['id'=>$param['voice_id']])->findOrEmpty();
|
|
|
+ if($voice->isEmpty()) return error("负数发票明细不存在");
|
|
|
+ if($voice->amount>=0) return error("负数发票明细金额必须小于0");
|
|
|
+ if($main['invoiceCode']!=$voice['invoiceCode']) return error("正负数发票明细回票申请编号不一致");
|
|
|
+ $pinv= PayInvoice::where('hpNo',$main['invoiceCode'])->findOrEmpty();
|
|
|
+ if($pinv->isEmpty()) return error('未找到关联的回票申请');
|
|
|
+ if($pinv['status']!=14) return error('回票申请状态必须为待确认');
|
|
|
+ //负数金额的绝对值 小于正数金额
|
|
|
+ if(abs($voice['amount'])<$main['amount']){
|
|
|
+ $main->amount = bcsub($main['amount'],abs($voice['amount']),2);
|
|
|
+ $main->total_amount = bcsub($main['total_amount'],abs($voice['total_amount']),2);
|
|
|
+ $main->balance_amount = bcsub($main['balance_amount'],abs($voice['balance_amount']),2);
|
|
|
+ $main->tax_amount = bcsub($main['tax_amount'],abs($voice['tax_amount']),2);
|
|
|
+ }else return error('负数发票金额不能大于正数金额');
|
|
|
+ $this->model->startTrans();
|
|
|
+ try{
|
|
|
+ $main->save();
|
|
|
+ $voice->delete();
|
|
|
+ $this->model->commit();
|
|
|
+ }catch (\Exception $e){
|
|
|
+ $this->model->rollback();
|
|
|
+ return error($e->getMessage());
|
|
|
+ }
|
|
|
+ return success('合并成功');
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 删除无效发票明细
|
|
|
+ */
|
|
|
+ public function removeItem(){
|
|
|
+ $param=$this->request->param(["id"=>""],"post","trim");
|
|
|
+ $valid=Validate::rule([
|
|
|
+ 'id|发票明细id' => 'require|number|gt:0',
|
|
|
+ ]);
|
|
|
+ if(!$valid->check($param)) return error($valid->getError());
|
|
|
+ $info = $this->model->where(['id'=>$param['id']])->findOrEmpty();
|
|
|
+ if($info->isEmpty()) return error("发票明细不存在");
|
|
|
+ $pinv= PayInvoice::where("hpNo",$info['invoiceCode'])->findOrEmpty();
|
|
|
+ if($pinv->isEmpty()) return error("未找到关联的回票申请");
|
|
|
+ if($pinv['status']!=14) return error("回票申请状态必须为待确认");
|
|
|
+ $this->model->startTrans();
|
|
|
+ try{
|
|
|
+ $info->delete();
|
|
|
+ $this->model->commit();
|
|
|
+ }catch (\Exception $e){
|
|
|
+ $this->model->rollback();
|
|
|
+ return error($e->getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
public function getListByCode(){
|
|
|
$param=$this->request->param(["code"=>"","status"=>"","size"=>100]);
|