You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
374 lines
16 KiB
374 lines
16 KiB
<?php
|
|
function T8Insert($data, $facilityno, $connT8)
|
|
{
|
|
// try {
|
|
// 引入銷售訂單 API
|
|
require_once("./T8API.php");
|
|
|
|
$contractno = $data['contractno'];
|
|
$partyA = $data['customer'];
|
|
$phone = $data['lm_tel'];
|
|
$vat = $data['vat'];
|
|
$partyAaddress = $data['address'];
|
|
$user_id = $data['user_id'];
|
|
$salesman = $data['salesman'];
|
|
$createAt = date("Y-m-dH-i-s");
|
|
|
|
|
|
$elevators = !empty($data['elevators_detail_arr']) ? json_decode($data['elevators_detail_arr'], true) : []; //電梯
|
|
$pay_arr = !empty($data['pay_arr']) ? json_decode($data['pay_arr'], true) : []; //電梯
|
|
|
|
$createTime = str_replace('-', '', $createAt);
|
|
$signing_date = intval(str_replace("-", '', $data['signing_date'])); //簽訂日期
|
|
// echo
|
|
// $pay_kind = [
|
|
// '1' => '簽約',
|
|
// '2' => '二次款',
|
|
// '3' => '貨抵工地',
|
|
// '4' => '材料其他',
|
|
// '5' => '試車完工', //安裝完畢
|
|
// '6' => '交車' //交車
|
|
// ];
|
|
|
|
$pay_kind = [
|
|
'1' => '簽約',
|
|
'2' => '二次款',
|
|
'3' => '貨抵工地',
|
|
'4' => '材料其他',
|
|
'5' => '試車完工', //安裝完畢
|
|
'6' => '交車' //交車
|
|
];
|
|
|
|
$sql = "SELECT * FROM comCustomer
|
|
WHERE BizPartnerId = :BizPartnerId
|
|
";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':BizPartnerId', $contractno);
|
|
$stmt->execute();
|
|
$result = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
// 新增客戶 table
|
|
if (empty($result)) {
|
|
// 若 客戶資料為空,新增一筆到 comCustomer
|
|
// 新增客戶資料
|
|
|
|
$sql = "INSERT INTO comBusinessPartner
|
|
(BizPartnerId,BizPartnerName,BusinessAttr,CountryId,WorkTelNo,BizToDate,TaxNo,EnterpriseName,ContactAddress,CreatorId,CreateTime,BizPartnerTypeId)
|
|
VALUES(:BizPartnerId,:BizPartnerName,1,'TW',:WorkTelNo,99999999,:TaxNo,:EnterpriseName,:ContactAddress,:CreatorId,:CreateTime,'10')";
|
|
// $sql = "INSERT INTO comBusinessPartner
|
|
// (BizPartnerId,BizPartnerName,BusinessAttr,CountryId,WorkTelNo,BizToDate,TaxNo,EnterpriseName,ContactAddress,CreatorId,CreateTime,BizPartnerTypeId)
|
|
// VALUES('$contractno','$partyA',1,'TW','$phone',99999999,'$vat', '$partyA','$partyAaddress','$user_id',$createTime,'10')";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':BizPartnerId', $contractno);
|
|
$stmt->bindParam(':BizPartnerName', $partyA); //客戶名稱
|
|
$stmt->bindParam(':WorkTelNo', $phone);
|
|
$stmt->bindParam(':TaxNo', $vat);
|
|
$stmt->bindParam(':EnterpriseName', $partyA); //企業名稱
|
|
$stmt->bindParam(':ContactAddress', $partyAaddress);
|
|
$stmt->bindParam(':CreatorId', $user_id);
|
|
$stmt->bindParam(':CreateTime', $createTime);
|
|
$stmt->execute();
|
|
|
|
|
|
$sql = "INSERT INTO comCustomer
|
|
(OrgId,BizPartnerTypeId,ConditionId,CurrId,BizPartnerId,PersonId,CreatorId,IsInUsed,InvoiceAddress,CreateTime,InvoiceId)VALUES
|
|
('1000','10','0008','TWD',:BizPartnerId,:PersonId,:CreatorId,1,:InvoiceAddress,:CreateTime,'35')";
|
|
// $sql = "INSERT INTO comCustomer
|
|
// (OrgId,BizPartnerTypeId,CurrId,BizPartnerId,PersonId,CreatorId,IsInUsed,InvoiceAddress,CreateTime,InvoiceId)
|
|
// VALUES('1000','10','TWD','$contractno','$salesman','$user_id',1,'$partyAaddress','$createTime','35')";
|
|
$stmt = $connT8->prepare($sql);
|
|
|
|
$stmt->bindParam(':BizPartnerId', $contractno);
|
|
$stmt->bindParam(':PersonId', $salesman);
|
|
$stmt->bindParam(':CreatorId', $user_id);
|
|
$stmt->bindParam(':InvoiceAddress', $partyAaddress);
|
|
$stmt->bindParam(':CreateTime', $createTime);
|
|
$stmt->execute();
|
|
exit();
|
|
} else {
|
|
// 若客戶資料不為空,更新該客戶資訊。
|
|
$sql = "UPDATE comCustomer SET
|
|
PersonId=:PersonId,
|
|
ConditionId='0008',
|
|
CurrId='TWD',
|
|
InvoiceAddress=:InvoiceAddress,
|
|
LastOperatorId=:LastOperatorId,
|
|
LastOperateTime=:LastOperateTime
|
|
WHERE BizPartnerId=:BizPartnerId
|
|
";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':PersonId', $salesman);
|
|
$stmt->bindParam(':InvoiceAddress', $partyAaddress);
|
|
$stmt->bindParam(':LastOperatorId', $user_id);
|
|
$stmt->bindParam(':LastOperateTime', $createTime);
|
|
$stmt->bindParam(':BizPartnerId', $contractno);
|
|
$stmt->execute();
|
|
|
|
|
|
$sql = "UPDATE comBusinessPartner SET
|
|
BizPartnerName=:BizPartnerName,
|
|
WorkTelNo=:WorkTelNo,
|
|
TaxNo=:TaxNo,
|
|
EnterpriseName=:EnterpriseName,
|
|
ContactAddress=:ContactAddress,
|
|
LastOperatorId=:LastOperatorId,
|
|
LastOperateTime=:LastOperateTime
|
|
WHERE BizPartnerId = :BizPartnerId
|
|
";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':BizPartnerName', $partyA);
|
|
$stmt->bindParam(':WorkTelNo', $phone);
|
|
$stmt->bindParam(':TaxNo', $vat);
|
|
$stmt->bindParam(':EnterpriseName', $partyA);
|
|
$stmt->bindParam(':ContactAddress', $partyAaddress);
|
|
// $stmt->bindParam(':EMail', $email);
|
|
$stmt->bindParam(':LastOperatorId', $user_id);
|
|
$stmt->bindParam(':LastOperateTime', $createTime);
|
|
$stmt->bindParam(':BizPartnerId', $contractno);
|
|
$stmt->execute();
|
|
}
|
|
|
|
$sql = "SELECT * FROM comProject WHERE ProjectId = :ProjectId";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':ProjectId', $contractno);
|
|
$stmt->execute();
|
|
$resultProject = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
if (empty($resultProject)) {
|
|
//新增於 comProject。合約 table
|
|
$sql = "INSERT INTO comProject(ProjectId,ProjectName,TypeId,CreateTime,CreatorId,IsInUsed)
|
|
VALUES(:ProjectId,:ProjectName,'C0',:CreateTime,:CreatorId,1)";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':ProjectId', $contractno);
|
|
$stmt->bindParam(':ProjectName', $partyA);
|
|
$stmt->bindParam(':CreateTime', $createTime);
|
|
$stmt->bindParam(':CreatorId', $user_id);
|
|
$stmt->execute();
|
|
}
|
|
$sql = "SELECT * FROM salSalesOrder WHERE BillNo = :BillNo";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':BillNo', $contractno);
|
|
$contractT8 = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
if (empty($contractT8)) {
|
|
|
|
foreach ($elevators as $index => $elevator) {
|
|
|
|
$count = 1;
|
|
// 產品集成維護
|
|
$facility_no = $facilityno[$index];
|
|
$MaterialName = "$partyA($facility_no)";
|
|
$contract_arrival_a = $elevator['contract_arrival_date'];
|
|
|
|
$sql = "SELECT * FROM comMaterial WHERE MaterialId = '$facility_no'";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->execute();
|
|
$MaterialisIt = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
if (empty($MaterialisIt)) {
|
|
$sql = "INSERT INTO comMaterial
|
|
(FOrgid,MaterialId,MaterialTypeId,MaterialCategoryId,CreatorId,CreateTime,IsInUsed)
|
|
VALUES ('1000',:MaterialId,'10','A',:CreatorId,:CreateTime,1)";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':MaterialId', $facility_no);
|
|
$stmt->bindParam(':CreatorId', $user_id);
|
|
$stmt->bindParam(':CreateTime', $createTime);
|
|
$stmt->execute();
|
|
$sql = "INSERT INTO comMaterialGroup
|
|
(MaterialTypeId,MaterialId,MaterialName,MaterialCategoryId,IsInUsed,UnitId,CreatorId,CreateTime)
|
|
VALUES ('10',:MaterialId,:MaterialName,'A',1,'SET',:CreatorId,:CreateTime)";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':MaterialId', $facility_no);
|
|
$stmt->bindParam(':MaterialName', $MaterialName);
|
|
$stmt->bindParam(':CreatorId', $user_id);
|
|
$stmt->bindParam(':CreateTime', $createTime);
|
|
$stmt->execute();
|
|
|
|
$sql = "INSERT INTO comMaterialPurchases
|
|
(Orgid,MaterialTypeId,MaterialId,CurrId,SUnitId,TaxId,CreatorId,CreateTime)
|
|
VALUES ('1000','10',:MaterialId,'TWD','SET','ST005',:CreatorId,:CreateTime)";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':MaterialId', $facility_no);
|
|
$stmt->bindParam(':CreatorId', $user_id);
|
|
$stmt->bindParam(':CreateTime', $createTime);
|
|
$stmt->execute();
|
|
|
|
$sql = "INSERT INTO plsMaterialPlanData
|
|
(PlanRangeId,MaterialId,FOrgId,MaterialTypeId,CreatorId,CreateTime,DefaultDemandOrg) VALUES
|
|
(1000,:MaterialId,1000,10,:CreatorId,:CreateTime,1000)
|
|
";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':MaterialId', $facility_no);
|
|
$stmt->bindParam(':CreatorId', $user_id);
|
|
$stmt->bindParam(':CreateTime', $createTime);
|
|
$stmt->execute();
|
|
|
|
$sql = "INSERT INTO comMaterialSales
|
|
(OrgId,MAterialTypeId,MaterialId,CurrId,SUnitId,SupplyOrgId,CreatorId,CreateTime,IsInUsed) VALUES
|
|
(1000,10,:MaterialId,'TWD','SET',1000,:CreatorId,:CreateTime,1)
|
|
";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':MaterialId', $facility_no);
|
|
$stmt->bindParam(':CreatorId', $user_id);
|
|
$stmt->bindParam(':CreateTime', $createTime);
|
|
$stmt->execute();
|
|
}
|
|
// 階段收款資訊
|
|
$salOrderStagePay_row = [];
|
|
$equipment_total = 0;
|
|
$install_total = 0;
|
|
$equipment_total = $pay_arr['equipment_total'];
|
|
$install_total = $pay_arr['install_total'];
|
|
$count_a = 0;
|
|
$count_month = 1;
|
|
foreach ($pay_arr['elevotor_pay_detail'] as $key => $detail) {
|
|
if ($detail['pay_kind'] == 3) {
|
|
$PlanPayDate = $contract_arrival_a;
|
|
} else if ($detail['pay_kind'] > 3) {
|
|
$PlanPayDate = date("Y-m-d", strtotime($contract_arrival_a . '+' . $count_month . ' month'));
|
|
$count_month++;
|
|
} else {
|
|
$PlanPayDate = $signing_date;
|
|
$count_a++;
|
|
if ($count_a == 1) {
|
|
$PlanPayDate = date("Y-m-d", strtotime($signing_date . '+' . $count_a . ' month'));
|
|
}
|
|
}
|
|
|
|
$contract_arrival_date = intval(str_replace("-", '', $PlanPayDate)); //貨到工地日
|
|
|
|
$PayStage = $pay_kind[$detail['pay_kind']];
|
|
$PlanPercentage = intval($detail['pay_scale']) / 100;
|
|
$rows = [
|
|
"PayStage" => "$PayStage", //收款階段
|
|
"PlanPercentage" => $PlanPercentage, //計劃收款比例(%)
|
|
"PlanPayAmt" => $detail['pay_amount'], //計劃收款金額
|
|
"PlanPayDate" => $contract_arrival_date, //計劃收款日期 1.第一筆都是簽約日
|
|
"BillNo" => "$contractno",
|
|
"RowCode" => $key + 1,
|
|
"RowNo" => $key + 1,
|
|
"UnWriteOffOAmount" => $detail['pay_amount'] //未核銷金額
|
|
];
|
|
$salOrderStagePay_row[] = $rows;
|
|
}
|
|
|
|
// 設備
|
|
$row1 = [
|
|
"TaxId" => "ST005",
|
|
"RequirementDate" => $signing_date, //出貨日期
|
|
"ConsignmentDate" => $signing_date, //發貨日期
|
|
"BillNo" => "$contractno", //合約號
|
|
"RowCode" => $count, //全部筆數排列
|
|
"ItemType" => 1,
|
|
"MaterialId" => "A40001", //1.設備(A40001)、2.安裝(A4008)、3.作番號(作番)
|
|
"SUnitId" => "SET",
|
|
"SQuantity" => 1, //交易數量
|
|
"SPrice" => $equipment_total, //交易價格
|
|
"CU_MaterialId" => $facility_no
|
|
];
|
|
$count++;
|
|
// 安裝
|
|
$row2 = [
|
|
"TaxId" => "ST005",
|
|
"RequirementDate" => $signing_date, //出貨日期
|
|
"ConsignmentDate" => $signing_date, //發貨日期
|
|
"BillNo" => "$contractno", //合約號
|
|
"RowCode" => $count, //全部筆數排列
|
|
"ItemType" => 1,
|
|
"MaterialId" => "A40008", //1.設備(A40001)、2.安裝(A4008)、3.作番號(作番)
|
|
"SUnitId" => "SET",
|
|
"SQuantity" => 1, //交易數量
|
|
"SPrice" => $install_total, //交易價格
|
|
"CU_MaterialId" => $facility_no
|
|
];
|
|
$count++;
|
|
// 產品(作番)
|
|
$row3 = [
|
|
"TaxId" => "ST005",
|
|
"RequirementDate" => $signing_date, //出貨日期
|
|
"ConsignmentDate" => $signing_date, //發貨日期
|
|
"BillNo" => "$contractno", //合約號
|
|
"RowCode" => $count, //全部筆數排列
|
|
"ItemType" => 0,
|
|
"MaterialId" => "$facility_no", //1.設備(A40001)、2.安裝(A4008)、3.作番號(作番)
|
|
"SUnitId" => "SET",
|
|
"SQuantity" => 1, //交易數量
|
|
"SPrice" => 0, //交易價格
|
|
"CU_MaterialId" => $facility_no // 歸屬作番號
|
|
];
|
|
$count++;
|
|
$SubOrder_row[] = $row1;
|
|
$SubOrder_row[] = $row2;
|
|
$SubOrder_row[] = $row3;
|
|
$count++;
|
|
}
|
|
$MainSalesOrder_row = [
|
|
"BillNo" => "$contractno", //合約單號
|
|
"BillDate" => $signing_date, //簽約日期
|
|
"TypeId" => "SO", //
|
|
"FOrgId" => "1000",
|
|
"OrgId" => "1000",
|
|
"ModeId" => "M", // T汰改 M新梯
|
|
"BizPartnerId" => "$contractno", //客戶代碼
|
|
"CurrId" => "TWD",
|
|
"CurrOAmount" => 1,
|
|
"CurrLAmount" => 1,
|
|
"PersonId" => "$salesman", //業務人員
|
|
"DueToId" => "$contractno", //債務方
|
|
"TradeConditionId" => "",
|
|
"TaxId" => "ST005",
|
|
"CreditorCompId" => "1001",
|
|
"CreditorOrgId" => "1000",
|
|
"CreatorId" => "$user_id"
|
|
// "CompId" => "1001",
|
|
// "CreditorCurrOAmount" => 1,
|
|
// "CreditorCurrLAmount" => 1
|
|
];
|
|
$MainSalesOrder = [
|
|
"name" => "MainSalesOrder",
|
|
'rows' => [$MainSalesOrder_row]
|
|
];
|
|
$SubOrder = [
|
|
"name" => "SubOrder",
|
|
"rows" => $SubOrder_row
|
|
];
|
|
$salOrderStagePay = [
|
|
"name" => "salOrderStagePay",
|
|
"rows" => $salOrderStagePay_row
|
|
];
|
|
|
|
$API_body = [];
|
|
$API_body[] = $MainSalesOrder;
|
|
$API_body[] = $SubOrder;
|
|
$API_body[] = $salOrderStagePay;
|
|
if ($user_id == 'M0225') {
|
|
echo "<pre>";
|
|
print_r(json_encode($API_body, JSON_UNESCAPED_UNICODE));
|
|
echo "</pre>";
|
|
}
|
|
|
|
// $api_url = 'http://10.10.145.2:880/twWebAPI/V1/SALSALESORDER/PostERPData'; //正式區
|
|
$api_url = "http://60.244.87.101:880/twWebAPI/V1/SALSALESORDER/PostERPData"; //測試區
|
|
|
|
$result = T8salIncomeApply($API_body, $api_url);
|
|
if ($user_id == 'M0225') {
|
|
echo "<pre>";
|
|
print_r($result);
|
|
echo "</pre>";
|
|
}
|
|
if (!empty($result) && ($result['Status'] == 'Fails' || $result['Status'] == 'Error')) {
|
|
$Error_msg = $result['ErrorMsg'];
|
|
// echo "<script>alert('$Error_msg')</script>";
|
|
// exit();
|
|
// echo $result['ErrorMsg'];
|
|
// echo "</script>";
|
|
echo $Error_msg;
|
|
}
|
|
} else {
|
|
echo '資料已新增過,請洽資訊人員';
|
|
// exit();
|
|
}
|
|
// $connT8->commit();
|
|
// } catch (PDOException $e) {
|
|
// $connT8->rollback();
|
|
// header("HTTP/1.1 500 Internal Server Error");
|
|
// die('Error!:' . $e->getMessage());
|
|
// }
|
|
}
|
|
|