mirror of
https://gitee.com/ShopeX/OMS
synced 2026-03-22 18:35:35 +08:00
127 lines
6.2 KiB
PHP
127 lines
6.2 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 2012-2026 ShopeX (https://www.shopex.cn)
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
|
|
class finance_cronjob_autoflagScript{
|
|
/*自动核销账单*/
|
|
function autoflag_queue(){
|
|
/*
|
|
$last_autoflag_queue_run_time = app::get('finance')->getConf("last_autoflag_queue_run_time");
|
|
if(!$last_autoflag_queue_run_time) $last_autoflag_queue_run_time = 0;
|
|
app::get('finance')->setConf("last_autoflag_queue_run_time",time());
|
|
if((time()-$last_autoflag_queue_run_time)<3600) return ;
|
|
*/
|
|
$ar = app::get("finance")->model('ar');
|
|
$araData = $ar->db->select("SELECT a.ar_id,a.ar_bn,a.money as ar_money,a.confirm_money as ar_confirm_money,a.unconfirm_money as ar_unconfirm_money,b.bill_id, b.bill_bn,b.money as bill_money,b.confirm_money as bill_confirm_money,b.unconfirm_money as bill_unconfirm_money,b.trade_time as bill_trade_time from `sdb_finance_ar` as a left join `sdb_finance_bill` as b on a.order_bn=b.order_bn and a.money=b.money where a.auto_flag=0 and a.status=0 and a.charge_status=1 and b.charge_status=1 and b.fee_type_id=1");
|
|
foreach($araData as $ak=>$aval){
|
|
$time = time();
|
|
$ar->db->beginTransaction();
|
|
if($aval['ar_id']&&$aval['bill_id']){
|
|
$ar_update['auto_flag'] = $bill_update['auto_flag'] = 1;
|
|
$ar_update['status'] = $bill_update['status'] = 2;
|
|
$ar_update['unconfirm_money'] = $bill_update['unconfirm_money'] = 0;
|
|
$ar_update['confirm_money'] = $aval['ar_money'];
|
|
$bill_update['confirm_money'] = $aval['bill_money'];
|
|
$ar_update['verification_time'] = $bill_update['verification_time']= $time;
|
|
$ar_filter['ar_id'] = $aval['ar_id'];
|
|
$bill_filter['bill_id'] = $aval['bill_id'];
|
|
$ar_rs = $this->auto_ar_status($ar_update,$ar_filter);
|
|
$bill_rs = $this->auto_bill_status($bill_update,$bill_filter);
|
|
if(!$ar_rs || !$bill_rs){
|
|
$ar->db->rollBack();
|
|
continue ;
|
|
}
|
|
//todo 日志
|
|
$log_data = $aval;
|
|
}
|
|
elseif($aval['ar_id']){
|
|
$ar_update['auto_flag'] = 1;
|
|
$ar_filter['ar_id'] = $aval['ar_id'];
|
|
$ar_rs = $this->auto_ar_status($ar_update,$ar_filter);
|
|
}
|
|
|
|
$ar->db->commit();
|
|
if($log_data){
|
|
$this->write_auto_log($aval);
|
|
}
|
|
}
|
|
|
|
$billaData = $ar->db->select("SELECT a.ar_id,a.ar_bn,a.money as ar_money,a.confirm_money as ar_confirm_money,a.unconfirm_money as ar_unconfirm_money,b.bill_id, b.bill_bn,b.money as bill_money,b.confirm_money as bill_confirm_money,b.unconfirm_money as bill_unconfirm_money,b.trade_time as bill_trade_time from `sdb_finance_bill` as b left join `sdb_finance_ar` as a on a.order_bn=b.order_bn and a.money=b.money where b.auto_flag=0 and b.status=0 and a.charge_status=1 and b.charge_status=1 and b.fee_type_id=1");
|
|
foreach($billaData as $bk=>$bval){
|
|
$time = time();
|
|
$ar->db->beginTransaction();
|
|
if($bval['ar_id']&&$bval['bill_id']){
|
|
$ar_update['auto_flag'] = $bill_update['auto_flag'] = 1;
|
|
$ar_update['status'] = $bill_update['status'] = 2;
|
|
$ar_update['verification_time'] = $bill_update['verification_time']= $time;
|
|
$ar_update['unconfirm_money'] = $bill_update['unconfirm_money'] = 0;
|
|
$ar_update['confirm_money'] = $bval['ar_money'];
|
|
$bill_update['confirm_money'] = $bval['bill_money'];
|
|
$ar_filter['ar_id'] = $bval['ar_id'];
|
|
$bill_filter['bill_id'] = $bval['bill_id'];
|
|
$ar_rs = $this->auto_ar_status($ar_update,$ar_filter);
|
|
$bill_rs = $this->auto_bill_status($bill_update,$bill_filter);
|
|
//todo 日志
|
|
if(!$ar_rs || !$bill_rs){
|
|
$ar->db->rollBack();
|
|
continue ;
|
|
}
|
|
$blog_data = $bval;
|
|
}
|
|
elseif($bval['bill_id']){
|
|
$bill_update['auto_flag'] = 1;
|
|
$bill_filter['bill_id'] = $bval['bill_id'];
|
|
$ar_rs = $this->auto_bill_status($bill_update,$bill_filter);
|
|
}
|
|
$ar->db->commit();
|
|
if($blog_data){
|
|
$this->write_auto_log($blog_data);
|
|
}
|
|
}
|
|
}
|
|
|
|
function auto_ar_status($update_data=array(),$filter=array()){
|
|
if(!$update_data || !$filter) return false;
|
|
$ar = app::get("finance")->model('ar');
|
|
return $ar->update($update_data,$filter);
|
|
}
|
|
|
|
function auto_bill_status($update_data=array(),$filter=array()){
|
|
if(!$update_data || !$filter) return false;
|
|
$bill = app::get("finance")->model('bill');
|
|
return $bill->update($update_data,$filter);
|
|
}
|
|
|
|
function write_auto_log($aData)
|
|
{
|
|
$bill_lib = kernel::single("finance_bill");
|
|
$bill_data['bill_id'] = $aData['bill_id'];
|
|
$bill_data['bill_bn'] = $aData['bill_bn'];
|
|
$bill_data['money'] = $aData['bill_money'];
|
|
$bill_data['unconfirm_money'] = $aData['bill_unconfirm_money'];
|
|
$bill_data['confirm_money'] = $aData['bill_confirm_money'];
|
|
$ar_data['ar_id'] = $aData['ar_id'];
|
|
$ar_data['ar_bn'] = $aData['ar_bn'];
|
|
$ar_data['money'] = $aData['ar_money'];
|
|
$ar_data['unconfirm_money'] = $aData['ar_unconfirm_money'];
|
|
$ar_data['confirm_money'] = $aData['ar_confirm_money'];
|
|
$bdata[] = $bill_data;
|
|
$adata[] = $ar_data;
|
|
$bill_lib->write_verification_log($bdata,$adata,$aData['bill_trade_time'],1);
|
|
}
|
|
}
|
|
|