query($sql_department);
foreach ($deptype as $department) {
if ($department['DeptId'] == $rib['DeptId']) {
$dept = $department['DeptName'];
}
}
// 爬蟲--匯率
function htmlContentGet($url)
{
$opts = [
"http" => [
"method" => "GET",
"header" => "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36\r\n"
]
];
return file_get_contents($url, false, stream_context_create($opts));
}
$week = date("w");
$currency_day = date("Y-m-d", strtotime("-1 day"));
if ($week == 1) {
$currency_day = date("Y-m-d", strtotime("-3 day"));
} elseif ($week == 0) {
$currency_day = date("Y-m-d", strtotime("-2 day"));
}
$X = htmlContentGet('https://rate.bot.com.tw/xrt/all/' . $currency_day);
$string = strip_tags($X); // 先清掉 html tag, 以免 html tag 被破壞
//美金
$USD = explode(' ', stristr($string, '美金'))[298];
//人民幣
$RMB = explode(' ', stristr($string, '人民幣'))[298];
//歐元
$EUR = explode(' ', stristr($string, '歐元'))[298];
//港幣
$HKD = explode(' ', stristr($string, '港幣'))[298];
//整理要變更的數據 -表身
$CurrLAmount = 1;
if ($rib['CurrId'] == "CNY") {
$CurrLAmount = $RMB;
} elseif ($rib['CurrId'] == "EUR") {
$CurrLAmount = $EUR;
} elseif ($rib['CurrId'] == "HKD") {
$CurrLAmount = $HKD;
} elseif ($rib['CurrId'] == "USD") {
$CurrLAmount = $USD;
}
//取得暫存的表身資料
$ribsub_query = "SELECT * FROM rib_sub WHERE rib_id = $rib_id";
$ribsub_data = mysqli_query($link, $ribsub_query);
$OTax = 0;
$LTax = 0;
$OAmount = 0;
$IsCounteract = 0;
$WriteOffAmount = 0;
$count = 0;
while ($ribsub = mysqli_fetch_assoc($ribsub_data)) {
$count += 1;
$OAmountWithTax += $ribsub['OAmount'];
$LAmount = $ribsub['OAmount'] * $CurrLAmount;
$OAmountUnWithTax = $ribsub['OAmount'] / (1 + $ribsub['TaxRate']);
$LAmountUnWithTax = $OAmountUnWithTax * $CurrLAmount;
$sub_WriteOffAmount = $ribsub['OAmount'];
$sub_OTax = $ribsub['OAmount'] - $OAmountUnWithTax;
$OTax += $sub_OTax;
$sub_LTax = $LAmount - $LAmountUnWithTax;
$LTax += $sub_LTax;
$WriteOffAmount += $ribsub['OAmount'];
$OAmount += $OAmountUnWithTax;
$ribsub_id = $ribsub['ribsub_id'];
$FeeNotes .= "\n" . $count . ". ";
if (isset($ribsub['ProjectId']) && (isset($ribsub['CU_MaterialId']))) {
$FeeNotes .= "合約號:" . $ribsub['ProjectId'] . "\n 作番號:" . $ribsub['CU_MaterialId'] . "\n ";
} elseif (isset($ribsub['ProjectId']) && (!isset($ribsub['CU_MaterialId']))) {
$FeeNotes .= "合約號:" . $ribsub['ProjectId'] . "\n ";
} elseif (!isset($ribsub['ProjectId']) && (isset($ribsub['CU_MaterialId']))) {
$FeeNotes .= "作番號:" . $ribsub['CU_MaterialId'] . "\n ";
}
$FeeNotes .= "費用說明:" . $ribsub['FeeNoteShow'] . "\n";
if ($ribsub['TaxId'] == "ST005" || $ribsub['TaxId'] == "ST101") {
$IsCounteract = 1;
}
$totalVoucher += $ribsub['VoucherCount'];
$sql_sub = "UPDATE rib_sub SET CurrentLAmount=$CurrLAmount,OAmountUnWithTax=$OAmountUnWithTax,
LAmountUnWithTax=$LAmountUnWithTax, FeeBalance=$LAmountUnWithTax,LAmount=$LAmount, OTax=$sub_OTax,
LTax=$sub_LTax, WriteOffAmount=$sub_WriteOffAmount WHERE ribsub_id = $ribsub_id";
// 上傳資料庫__表身
mysqli_query($link, $sql_sub);
}
$UnPayOAmount = $WriteOffAmount;
$UnPayLAmount = $UnPayOAmount * $CurrLAmount;
$LAmountWithTax = $OAmountWithTax * $CurrLAmount;
$LAmount = $OAmount * $CurrLAmount;
// 更新表頭資料
$BillDate = intval(date('Ymd'));
$sql_rib = "UPDATE rib SET BillDate=$BillDate,CurrentState=1,PermitState=1, OAmountWithTax=$OAmountWithTax, LAmountWithTax= $LAmountWithTax, LAmount=$LAmount,
OAmount =$OAmount, UnPayOAmount=$UnPayOAmount, Balance = $OAmountWithTax, LBalance= $UnPayLAmount ,UnPaymentLAmt=$UnPayLAmount,
UnPayLAmount=$UnPayLAmount, OTax=$OTax, LTax=$LTax, WriteOffAmount=$WriteOffAmount, CreatorId='$user_id' WHERE rib_id = $rib_id";
mysqli_query($link, $sql_rib);
if (mysqli_affected_rows($link) > 0) {
echo '';
} else {
echo $sql_rib;
echo '';
}
//紀錄繳交資料
$SQL1 = str_replace("'", '', $sql_rib);
$sql_submit = "UPDATE rib SET UserSubmit='$SQL1' WHERE rib_id=$rib_id";
mysqli_query($link, $sql_submit);
//產生費用報銷單excel
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$spreadsheet = $reader->load("reimburse-sample.xlsx");
$printday = date("Y-m-d");
$print = "列印日期:" . $printday;
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('H3', $rib['BillNo']);
$sheet->setCellValue('H5', $rib['BillDate']);
$sheet->setCellValue('H6', $dept);
$sheet->setCellValue('G2', $print);
if ($rib['WriteOffType'] == 1) {
$sheet->setCellValue('H8', '■ 廠商 □ 員工');
} elseif ($rib['WriteOffType'] == 2) {
$sheet->setCellValue('H8', '■ 員工 □ 廠商');
}
if ($rib['pay_type'] == 0) {
$sheet->setCellValue('H9', ' ■ 現金
□ 銀行轉帳
□ 沖帳及金額
( )
預付款申請單號
NO.');
} elseif ($rib['pay_type'] == 1) {
$sheet->setCellValue('H9', '□ 現金
■ 銀行轉帳
□ 沖帳及金額
( )
預付款申請單號
NO.');
}
$sheet->setCellValue('H10', $WriteOffAmount);
$sheet->setCellValue('H11', $totalVoucher);
$sheet->setCellValue('G13', $FeeNotes);
$writer = new Xls($spreadsheet);
$writer->save('WriteOff.xlsx');
?>
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO glFeeWriteOff(BillNo, BillDate, OrgId,FOrgId,TypeId,PayOrgId,
CurrId,TransactId,WriteOffType,BizOrgId,WriteOffId,DeptId,
HadPayOAmount,HadPayLAmount,UnPayOAmount,UnPayLAmount,PaymentState,Balance,LBalance,
FillUp,GatheringBizOrgId, GatheringPersonId, IsTaxBill, OAmount,LAmount,OTax,LTax,LAmountWithTax,OAmountWithTax,
IsContainTax,AdvanceOAmount,AdvanceLAmount,PrePayWriteOffAmount,WriteOffAmount,
CompId,UnPaymentOAmt,UnPaymentLAmt,IsPayment, CurrentState,PermitState";
$sql2 = ") VALUES ('$BillNo',$BillDate,'1000','1000','$TypeId','1000',
'$CurrId','$TransactId',$WriteOffType,'1000','$WriteOffId','$DeptId',
$HadPayOAmount,$HadPayLAmount,$UnPayOAmount,$UnPayLAmount,$PaymentState,$Balance,$LBalance,
0,'1000','$GatheringPersonId',$IsTaxBill,$OAmount,$LAmount,$OTax,$LTax,$LAmountWithTax,$OAmountWithTax,
$IsContainTax,$AdvanceOAmount,$AdvanceLAmount,$PrePayWriteOffAmount,$WriteOffAmount,
'1001',$WriteOffAmount,$UnPaymentLAmt,0,2,2";
$sql .= empty($CostCenterId) ? "" : ",CostCenterId";
$sql2 .= empty($CostCenterId) ? "" : ",'" . $CostCenterId . "'";
$sql .= empty($WriteOffDescribe) ? "" : ",WriteOffDescribe";
$sql2 .= empty($WriteOffDescribe) ? "" : ",'" . $WriteOffDescribe . "'";
$sql .= empty($GatheringPersonDescribe) ? "" : ",GatheringPersonDescribe";
$sql2 .= empty($GatheringPersonDescribe) ? "" : ",'" . $GatheringPersonDescribe . "'";
$sql .= empty($totalBankName) ? "" : ",BankName";
$sql2 .= empty($totalBankName) ? "" : ",'" . $totalBankName . "'";
$sql .= empty($BankAccount) ? "" : ",BankAccount";
$sql2 .= empty($BankAccount) ? "" : ",'" . $BankAccount . "'";
$sql .= empty($BankAccountName) ? "" : ",BankAccountName";
$sql2 .= empty($BankAccountName) ? "" : ",'" . $BankAccountName . "'";
$sql .= empty($TelNo) ? "" : ",TelNo";
$sql2 .= empty($TelNo) ? "" : ",'" . $TelNo . "'";
$sql .= $sql2;
$sql .= ")";
$result = $conn->query($sql);
// 更改WMS RIB狀態
$rib_sql = "UPDATE rib SET BillNo='$BillNo',CurrentState=2, PermitState=2 WHERE rib_id =$rib_id";
mysqli_query($link, $rib_sql);
//取得表身資料
$ribsub_query = "SELECT * FROM rib_sub WHERE rib_id = $rib_id";
$ribsub_data = mysqli_query($link, $ribsub_query);
$RowCode = 0;
while ($ribsub = mysqli_fetch_assoc($ribsub_data)) {
$RowCode += 1;
$RowNo = $ribsub['RowNo'];
$FeeDate = $ribsub['FeeDate'];
$FeeTypeId = $ribsub['FeeTypeId'];
$WriteOffType = $ribsub['WriteOffType'];
$WriteOffId = $ribsub['WriteOffId'];
$WriteOffDescribe = empty($ribsub['WriteOffDescribe']) ? Null : $ribsub['WriteOffDescribe'];
$FeeDeptId = $ribsub['FeeDeptId'];
$CostCenterId = empty($ribsub['CostCenterId']) ? Null : $ribsub['CostCenterId'];
$UnitId = $ribsub['UnitId'];
$Quantity = $ribsub['Quantity'];
$Price = $ribsub['Price'];
$CurrOAmount = $ribsub['CurrOAmount'];
$CurrLAmount = $ribsub['CurrentLAmount'];
$TaxId = $ribsub['TaxId'];
$TaxRate = $ribsub['TaxRate'];
$OTax = $ribsub['OTax'];
$LTax = $ribsub['LTax'];
$LAmountUnWithTax = $ribsub['LAmountUnWithTax'];
$OAmountUnWithTax = $ribsub['OAmountUnWithTax'];
$OAmount = $ribsub['OAmount'];
$LAmount = $ribsub['LAmount'];
$FeeBalance = $ribsub['FeeBalance'];
$VoucherCount = $ribsub['VoucherCount'];
$FeeNoteShow = empty($ribsub['FeeNoteShow']) ? Null : $ribsub['FeeNoteShow'];
$ProjectId = empty($ribsub['ProjectId']) ? null : $ribsub['ProjectId'];
$InvoiceNo = empty($ribsub['InvoiceNo']) ? null : $ribsub['InvoiceNo'];
$InvoiceNo = trim($InvoiceNo);
$InvoiceNo = str_replace('-', '', $InvoiceNo);
$comSupplierId = empty($ribsub['comSupplierId']) ? null : $ribsub['comSupplierId'];
$VoucherType = empty($ribsub['VoucherType']) ? null : $ribsub['VoucherType'];
$InvoiceId = empty($ribsub['InvoiceId']) ? null : $ribsub['InvoiceId'];
$CurrId = ($ribsub['CurrId'] == "CNY") ? "RMB" : $rib['CurrId'];
$WriteOffAmount = $ribsub['WriteOffAmount'];
$IsCounteract = $ribsub['IsCounteract'];
$CU_MaterialId = empty($ribsub['CU_MaterialId']) ? null : $ribsub['CU_MaterialId'];
$TaxNo = empty($ribsub['TaxNo']) ? null : $ribsub['TaxNo'];
$sqlsub = "INSERT INTO glFeeWriteOffSub (BillNo, RowCode,RowNo,FeeDate,FeeTypeId, WriteOffType,
BizOrgId, WriteOffId, FeeOrgId, FeeDeptId, FeeCompanyId, UnitId ,
Quantity, Price, CurrOAmount,CurrLAmount,TaxId,TaxRate,OTax,LTax,LAmountUnWithTax
,OAmountUnWithTax,OAmount,LAmount,FeeBalance,VoucherCount,CurrId,WriteOffAmount,SupplyOrgId,IsCounteract,IsKeyByFeeInfo
";
$sqlsub2 = ") VALUES ('$BillNo',$RowCode, $RowNo,$FeeDate,'$FeeTypeId',$WriteOffType,
'1000','$WriteOffId','1000','$FeeDeptId','1000','$UnitId',
$Quantity, $Price, $CurrOAmount, $CurrLAmount,'$TaxId',$TaxRate,$OTax,$LTax,$LAmountUnWithTax
,$OAmountUnWithTax,$OAmount,$LAmount,$FeeBalance,$VoucherCount,'$CurrId',$WriteOffAmount,'1000',$IsCounteract,0
";
$sqlsub .= empty($WriteOffDescribe) ? "" : ",WriteOffDescribe";
$sqlsub2 .= empty($WriteOffDescribe) ? "" : ",'" . $WriteOffDescribe . "'";
$sqlsub .= empty($CostCenterId) ? "" : ",CostCenterId";
$sqlsub2 .= empty($CostCenterId) ? "" : ",'" . $CostCenterId . "'";
$sqlsub .= empty($FeeNoteShow) ? "" : ",FeeNoteShow";
$sqlsub2 .= empty($FeeNoteShow) ? "" : ",'" . $FeeNoteShow . "'";
$sqlsub .= empty($ProjectId) ? "" : ",ProjectId";
$sqlsub2 .= empty($ProjectId) ? "" : ",'" . $ProjectId . "'";
$sqlsub .= empty($InvoiceNo) ? "" : ",InvoiceNo";
$sqlsub2 .= empty($InvoiceNo) ? "" : ",'" . $InvoiceNo . "'";
$sqlsub .= empty($CU_MaterialId) ? "" : ",CU_MaterialId";
$sqlsub2 .= empty($CU_MaterialId) ? "" : ",'" . $CU_MaterialId . "'";
$sqlsub .= empty($comSupplierId) ? "" : ",comSupplierId";
$sqlsub2 .= empty($comSupplierId) ? "" : ",'" . $comSupplierId . "'";
$sqlsub .= empty($VoucherType) ? "" : ",VoucherType";
$sqlsub2 .= empty($VoucherType) ? "" : ",'" . $VoucherType . "'";
$sqlsub .= empty($InvoiceId) ? "" : ",InvoiceId";
$sqlsub2 .= empty($InvoiceId) ? "" : ",'" . $InvoiceId . "'";
$sqlsub .= empty($TaxNo) ? "" : ",TaxNo";
$sqlsub2 .= empty($TaxNo) ? "" : ",'" . $TaxNo . "'";
$sqlsub .= $sqlsub2;
$sqlsub .= ")";
$result2 = $conn->query($sqlsub);
}
$content = "需要審核的費用報銷單為:";
$notice_rib_sql = "SELECT BillNo FROM rib WHERE CurrentState = 1";
$notice_rib = mysqli_query($link, $notice_rib_sql);
foreach ($notice_rib as $notice_content) {
$name = $notice_content['BillNo'];
$content .= "$name" . "、";
}
$notice_rib_num = mysqli_num_rows($notice_rib);
$notice_rib = mysqli_fetch_row($notice_rib);
$title = "有" . $notice_rib_num . "個費用報銷單待審核";
$insert_notice_sql = "UPDATE notice SET title= '$title', content='$content',haveread=NULL WHERE id=1654";
mysqli_query($link, $insert_notice_sql);
$insert_notice_sql = "UPDATE notice SET title= '$title', content='$content',haveread=NULL WHERE id=1959";
mysqli_query($link, $insert_notice_sql);
}
?>