load->database(); $this->table = 'apiyy'; $this->load_table('apiyy'); } /** * 生成u9的调出单 */ public function dcdCrate($params,$token){ $list = $this->dcDataTrans($params); $url = '/U9C/webapi/TransferOut/Create'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 提交调出单 */ public function dcdSubmit($params,$token){ $list = [ [ 'Code'=>$params['number'] //调出单单号 ] ]; $url = '/U9C/webapi/TransferOut/Submit'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 审核调出单 */ public function dcdApprove($params,$token){ $list = [ [ 'Code'=>$params['number'] //调出单单号 ] ]; $url = '/U9C/webapi/TransferOut/Approve'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 生成u9的销售单 * 只是财务记录 不牵扯到库存 */ public function xsdCreate($params,$token){ $list = $this->xsdDataTrans($params); $url = '/U9C/webapi/SO/Create'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 生成u9的销售单 * 只是财务记录 不牵扯到库存 */ public function xsdTwoCreate($params,$token){ $list = $this->xsdTwoDataTrans($params); $url = '/U9C/webapi/SO/Create'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 销售单提交 */ public function xsdSubmit($params,$token){ $list = [ [ 'Code'=>$params['number'] //单号 ] ]; $url = '/U9C/webapi/SO/Submit'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 销售单审核 */ public function xsdApprove($params,$token){ $list = [ [ 'Code'=>$params['number'] //单号 ] ]; $url = '/U9C/webapi/SO/Approve'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 根据调出单的单号做关联查询 然后匹配存储调入单的审核 */ public function drdcxBydcd($dcd_no,$token){ // $list["SqlString"] = "select DescFlexField_PubDescSeg4 ,DocNo from InvDoc_TransferIn where DescFlexField_PubDescSeg4 = '".$dcd_no."'"; $list["SqlString"] = "select a.docno,b.srcdocinfo_srcdocno from InvDoc_TransferIn as a left join InvDoc_TransInLine as b on a.id=b.TransferIn where srcdocinfo_srcdocno='".$dcd_no."'"; $url = '/U9C/webapi/QueryCommon/QueryInfoBySql'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } public function xscsByordernos($xs_no_list,$token){ $str = ''; foreach($xs_no_list as $k=>$v){ if($k==0){ $str .="'".$v."'"; }else{ $str .=",'".$v."'"; } } //$list['SqlString'] = "select a.DocNo,b.DocLineNo,c.DocSubLineNo,c.ShipPlanQtyPU from SM_SO as a left join SM_SOLine as b on a.id = b.SO left join SM_SOShipline as c on c.SOLine = b.id where a.DocNo in (".$str.") order by a.CreatedOn desc "; $list['SqlString'] = "select a.DocNo,b.DocLineNo,c.DocSubLineNo,c.ShipPlanQtyPU,c.ItemInfo_ItemCode from SM_SO as a left join SM_SOLine as b on a.id = b.SO left join SM_SOShipline as c on c.SOLine = b.id where a.DocNo in (".$str.") order by a.CreatedOn desc "; $url = '/U9C/webapi/QueryCommon/QueryInfoBySql'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 调入单提交 */ public function drdSubmit($params,$token){ $list = [ [ 'Code'=>$params['number'] //单号 ] ]; $url = '/U9C/webapi/TransferIn/Submit'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 调入单审核 */ public function drdApprove($params,$token){ $list = [ [ 'Code'=>$params['number'] //单号 ] ]; $url = '/U9C/webapi/TransferIn/Approve'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 生成u9的采购单 * 只是财务记录 不牵扯到库存 * 目前采用的是无源的 */ public function cgdCreate($params,$token){ $list = $this->cgdDataTrans($params); $url = '/U9C/webapi/PurchaseOrder/Create'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 采购单提交 */ public function cgdSubmit($params,$token){ $list = [ [ 'Code'=>$params['number'] //单号 ] ]; $url = '/U9C/webapi/PurchaseOrder/Submit'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 采购单审核 */ public function cgdApprove($params,$token){ $list = [ [ 'Code'=>$params['number'] //单号 ] ]; $url = '/U9C/webapi/PurchaseOrder/Approve'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 生成u9的标准出货单 * 会造成库存变动 * 使用的是有源的就是销售单 */ public function bzchCreate($params,$token){ $list = $this->yybzchDataTrans($params); $url = '/U9C/webapi/Ship/CreateBySrcDoc'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 标准出货单提交并审核 */ public function bzchSubmitAndApprove($params,$token){ $list = [ [ 'Code'=>$params['number'] //单号 ] ]; $url = '/U9C/webapi/Ship/SubmitAndApprove'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 生成u9的标准收获单 * 会造成库存变动 * 这个也是有源的是采购单 不过估计用不上 先不写 */ public function bzshCreate($params,$token){ } //根据erp的单号查询调出单是够存在 public function xcDcdByOtherId($dcd_no,$token){ $list["SqlString"] = "select DescFlexField_PubDescSeg4,DocNo from InvDoc_TransferOut where DescFlexField_PubDescSeg4 = '".$dcd_no."'"; $url = '/U9C/webapi/QueryCommon/QueryInfoBySql'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 查询料品 */ public function cxLp($params,$token){ $list = []; foreach($params as $k=>$v){ $list[] =[ "ItemMaster"=>[ "Code"=>$v['jm'] ] ]; } $url = '/U9C/webapi/ItemMaster/Query'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 创建料品 */ public function cjLp($params,$token){ $list = $this->cjlpDataTrans($params); $url = '/U9C/webapi/ItemMaster/Create'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } /** * 同步通知 */ public function tbLp($params,$token){ $list = []; foreach($params['list'] as $k=>$v){ $list[] = [ "EntityFullName"=>'UFIDA.U9.CBO.SCM.Item.ItemMaster',//实体全名 "EntityCode"=>$v['jm'], "FromOrgCode"=>$params['owner_code'],//创建组织编码 "ToOrgCodeList"=>[140],//要同步的组织 "OtherID"=>'', "ContextDTO"=>[ "EntCode"=>$params['ztcode'],//企业编码 "OrgCode"=>$params['owner_code'],//组织编码 "UserCode"=>'xk',//用户编码 "UserPwd"=>'',//用户密码 ] ]; } $url = '/U9C/webapi/ControlObjSend/ControlObjSend'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } //由于逻辑修改造成 需要查询调出单是审核完毕 public function xdlsCxDcd($dcd_no,$token){ $list["SqlString"] = "select a.DocNo,a.Status,a.DescFlexField_PubDescSeg2,a.DescFlexField_PubDescSeg4,a.DescFlexField_PubDescSeg5,b.ItemInfo_ItemCode,b.CostUOMQty,b.CostPrice,b.ItemInfo_ItemName from InvDoc_TransferOut as a left join InvDoc_TransOutLine as b on a.id = b.TransferOut where a.Status = 2 and a.DocNo = '".$dcd_no."'"; //$list["SqlString"] = "select a.*,b.* from InvDoc_TransferOut as a left join InvDoc_TransOutLine as b on a.id = b.TransferOut where a.Status = 2 and a.DocNo = '".$dcd_no."'"; $url = '/U9C/webapi/QueryCommon/QueryInfoBySql'; $url = $this->base_url.$url; $header[] = "Content-Type: application/json"; $header[] = "Token: ".$token; $res = $this->sendReq($url,$header,json_encode($list)); return array($res,$list); } public function sendReq($url,$header,$list){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLINFO_HEADER_OUT, TRUE); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $list); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $res = curl_exec($ch); $res = json_decode($res,true); return $res; } //调出单的数据转化 public function dcDataTrans($params){ $trans_out_lines = []; foreach($params['list'] as $k=>$v){ $trans_out_lines[] = [ "ItemInfo" =>[ "ItemCode"=>$v['jm'],//用友的简码 ], "TransOutWh_Code"=>$params['dcckbm'],//调出仓库编码 "StoreUOM_Code"=>"条",//调出库存单位Code 如条 "StoreUOMQty"=>$v['dcsl'],//调出数量 "StorageType"=>4,//存储类型:待检;1:在检;2:不合格;3:报废;4:可用;5:冻结;6:退回;7:待返工 "LotInfo_Code"=>"",//批号Code 不知道有啥用 暂时留空吧 "TransOutOwnerOrg_Code"=>$params['owner_code'],//货主组织Code "TransOutSubLines"=>[ [ 'TransInWh_Code'=>$params['drckbm']."",//调入仓库编码 'StorageType'=>4,//存储类型:待检;1:在检;2:不合格;3:报废;4:可用;5:冻结;6:退回;7:待返工 'TransInOrg_Code'=>$params['drzz_code']."",//调入组织Code 'TransOutOwnerOrg_Code'=>$params['owner_code']."",//货主组织Code 'StoreUOMQty'=>$v['dcsl'], ] ], "TransOutBins"=>[ [ 'BinInfo_Code'=>'',//库位Code 'StoreUOMQty'=>$v['dcsl']// 分配数量 ] ] ,"DescFlexField"=>[ "PubDescSeg2"=>$params['yyid'],//来源店铺 这种需要在店铺表中有 "PubDescSeg4"=>$params['number'],//订单编码 "PubDescSeg5"=>$params['shipremarks'],//订单的备注 ], ]; } $data = []; $data[] = [ "OtherID"=>$params['number'],//第三方数据唯一性标识,此字段需要返回 "TransOutDocType_Code"=> $params['TransOutDocType_Code'],//单据类型在u9中设置的 详情到u9界面查看 TransOut001 组织间调拨 TransOut002 仓库转储 TransOut004 委外加工发料 TransOut005 委外加工退料 "BusinessDate"=>date("Y-m-d",$params['time']),//日期 "TransferDirection"=>$params['TransferDirection'],//调拨方向 0:普通;1:退货 "TransOutLines"=>$trans_out_lines, "DescFlexField"=>[ "PubDescSeg2"=>$params['yyid'],//来源店铺 这种需要在店铺表中有 "PubDescSeg4"=>$params['number'],//订单编码 "PubDescSeg5"=>$params['shipremarks'],//订单的备注 ], ]; return $data; } //销售单的数据转化 public function xsdDataTrans($params){ $so_lines = []; foreach($params['list'] as $k=>$v){ $so_lines[] = [ 'TU'=>"条",//销售单位编码 'ItemCode'=>$v['jm'],//用友的编码 'PU'=>'条',//计价单位编码 "ShipTogetherFlag"=>-1,//成套收发货标志 'DocLineNo'=>$k+1, 'CustomerItemNo'=>'',//客户料号 'CustomerItemName'=>'',//客户品名 'FinallyPriceTC'=>$v['final_price'],//最终价 单价 'PubDescSeg10'=>'', 'SOShiplineDTOList'=>[ //销售订单计划行 [ 'IsMRPRequire', //MRP需求 'DemandType',//需求分类 'RequireDate'=>date('m/d/Y H:i:s',$params['time']), ] ], 'RecTerm'=>'',//目前找不到了 'FreeType'=>($v['final_price'] < 0.01)?0: -1,//免费品类型 (无默认值请传-1;赠品请传0;备损品请传1) 徐凯设定的是 如果钱小于0.01 那么就传0 其他的传递-1 'UsableQtyOfInv'=>0,//文档中未查询到 'PubDescSeg3'=>'', 'PubDescSeg4'=>'', 'PriceList'=>'',//价表编码 (该属性可为空,且无默认值) 'TaxMoneyTC'=>0,//税额 (该属性可为空,且无默认值) 'TaxSchedule'=>'YZ05',//税组合编码 (该属性可为空,且无默认值) 不知道这个是啥 徐凯的老代码是这么写的 'DescFlexField'=>[ 'PubDescSeg3'=>'', ], 'OrderByQtyTU'=>$v['dcsl'],//销售数量 (该属性可为空,且无默认值) 'OrderByQtyPU'=>$v['dcsl'],//计价数量 (该属性可为空,且无默认值) 'OrderPriceTC'=>'',//定价 (该属性可为空,且无默认值) 'Memo'=>'',//备注 ]; } $data = []; $data[] = [ "OrderBy"=>$params['yyid'],//用友的商户的id "OtherID"=>$params['number'],//第三方传入ID "SaleDepartment"=>"",//部门编码 可为空 "DocumentType"=>"SO1",//单据类型编码 标准销售单 So1是默认值 "DocNo"=>'',//单据类型编码 "AC"=>"C001",//人民币 "TC"=>"C001",//人民币 "ShipToSite"=>"",//收货位置编码 "PubDescSeg2"=>"", "SOSrcType"=>0, "Seller"=>"",//业务员编码 可为空 "ConfirmTerm"=>"",//但是现有文档没有 "Memo"=>$params['number'],//备注 "ShipRule"=>"",//但是现有文档没有 "SOLineDTOList"=>$so_lines, ]; return $data; } public function xsdTwoDataTrans($params){ $so_lines = []; foreach($params['list'] as $k=>$v){ $so_lines[] = [ 'TU'=>"条",//销售单位编码 'ItemCode'=>$v['jm'],//用友的编码 'PU'=>'条',//计价单位编码 "ShipTogetherFlag"=>-1,//成套收发货标志 'DocLineNo'=>$k+1, 'CustomerItemNo'=>'',//客户料号 'CustomerItemName'=>'',//客户品名 'FinallyPriceTC'=>$v['final_price'],//最终价 单价 'PubDescSeg10'=>'', 'SOShiplineDTOList'=>[ //销售订单计划行 [ 'IsMRPRequire', //MRP需求 'DemandType',//需求分类 'RequireDate'=>date('m/d/Y H:i:s',$params['time']), ] ], 'RecTerm'=>'',//目前找不到了 'FreeType'=>($v['final_price'] < 0.01)?0: -1,//免费品类型 (无默认值请传-1;赠品请传0;备损品请传1) 徐凯设定的是 如果钱小于0.01 那么就传0 其他的传递-1 'UsableQtyOfInv'=>0,//文档中未查询到 'PubDescSeg3'=>'', 'PubDescSeg4'=>'', 'PriceList'=>'',//价表编码 (该属性可为空,且无默认值) 'TaxMoneyTC'=>0,//税额 (该属性可为空,且无默认值) 'TaxSchedule'=>'YZ05',//税组合编码 (该属性可为空,且无默认值) 不知道这个是啥 徐凯的老代码是这么写的 'DescFlexField'=>[ 'PubDescSeg3'=>'', ], 'OrderByQtyTU'=>$v['dcsl'],//销售数量 (该属性可为空,且无默认值) 'OrderByQtyPU'=>$v['dcsl'],//计价数量 (该属性可为空,且无默认值) 'OrderPriceTC'=>'',//定价 (该属性可为空,且无默认值) 'Memo'=>'',//备注 ]; } $data = []; $data[] = [ "OrderBy"=>$params['yyid'],//用友的商户的id "OtherID"=>$params['number'],//第三方传入ID "SaleDepartment"=>"",//部门编码 可为空 "DocumentType"=>"SO1",//单据类型编码 标准销售单 So1是默认值 "DocNo"=>'',//单据类型编码 "AC"=>"C009",//美金 "TC"=>"C009",//美金 "ShipToSite"=>"",//收货位置编码 "PubDescSeg2"=>"", "SOSrcType"=>0, "Seller"=>"",//业务员编码 可为空 "ConfirmTerm"=>"",//但是现有文档没有 "Memo"=>$params['number'],//备注 "ShipRule"=>"",//但是现有文档没有 "SOLineDTOList"=>$so_lines, ]; return $data; } public function cgdDataTrans($params){ $po_lines = []; foreach($params['list'] as $k=>$v){ $po_lines[] = [ //"POLineID"=>0,//采购订单行ID 'ItemInfo'=>[ 'm_code'=>$v['jm'],//用友料号 ], "ReqQtyTU"=>$v['dcsl'],//需求数量 "ReqQtyTBU"=>0,//确认数量 "SupplierConfirmQtyTU"=>$v['dcsl'],//确认数量 "SupplierConfirmQtyTBU"=>0,//确认数量 "FinallyPriceTC"=>$v['final_price'],//最终价格 "IsPresent"=>false,//赠品 ]; } $data = []; $data[] = [ 'DocNo'=>"", "DocumentType"=>'PO01',//PO01 标准采购默认值 'BizType'=>0,//业务类型:AR_Invoice 销售发票 0 (默认值),PM005 标准采购 316 ,PM055 全程委外采购 326 ,PM050 工序外协采购 325 "BusinessDate"=>date("Y-m-d H:i:s"), 'OtherID'=>$params['number'], 'DescFlexField'=>(object)[ ], 'TC'=>'C001', 'AC'=>'C001', "Memo"=>$params['number'], 'Supplier'=>[ 'Code'=>$params['gys'],//供应商编码 到时间找下 ], 'IsPriceIncludeTax'=>false, "POLineDTOList"=>$po_lines ]; return $data; } public function yybzchDataTrans($params){ $data = []; foreach($params['list'] as $k=>$v ){ $data[] = [ "SrcDocType"=>1,//售订单 Value:1 出货计划 Value:2 销售合同 Value:3 预出货单 Value:4 "SrcDocNo"=>$params['xs_no'],//来源单号 "SrcDocLineNo"=>$v['doclineno'], "SrcDocSubLineNo"=>$v['docsublineno'], //"WH"=>'',//存储地点ID 找不到id 那就找个WHcode 'WHCode'=>$params['drckbm'],//存储地点code 这里的参数为啥这么诡异 是因为 不想在很设置参数了 都按照调出的写法组件数据了 "CurShipQty1"=>$v['dcsl'],//本次出货量 "SOIsConsign"=>false,// 是否补货 "OptionalSplitTerm"=>[], "DescFlexField"=>(object)[], "LineDescFlexField"=>(object)[], //"ShipDate",//出货单日期(该属性可为空,且无默认值) //"ShipConfirmDate"//出货确认日期(该属性可为空,且无默认值) "DocStatus"=>0,//单据状态:0开立;1审核中;2已审核,可用值:0,1,2,3 ]; } return $data; } //销售单的数据转化 public function cjlpDataTrans($params){ $list = []; foreach($params['list'] as $k=>$v){ $list[] = [ "Code"=>$v['jm'],//料号 "Code1"=>"",//参考料号1 "Name"=>$v['zh'],//品名 "MainItemCategory"=>[ "Code"=>$v['bm'] ], "Org"=>[ "Code"=>$params['ztcode'] ], "OtherID"=>1, "PurchaseInfo"=>[ "BudgetControlType"=>-1,//预算控制方式 "PriceSource"=>2,//取价来源 "InquireRule"=>-1,//询价策略 'InquireFixedPeriod'=>0,//间隔期 "StatisticPeriod"=>-1,//配额统计期间 "IsPUTradePathModify"=>true,//采购贸易路径可改 "IsPURtnTradePathModify"=>true,//采购退货贸易路径可改 ], "InventoryUOM"=>[ "Code"=>'条' ], "InventorySecondUOM"=>[ "Code"=>'' ], "IsDualUOM"=>false, "InventoryInfo"=>[ "InventoryPlanningMethod"=>4,//规划方法 "InventoryPlanTime"=>-1,// "TurnOverRate"=>1,// "ReserveMode"=>-1,// "SupplyMethod"=>-1,// ], "DescFlexField"=>[ "PrivateDescSeg1"=>"01", "PubDescSeg5"=>"01" ], "Description"=>$v['title'], "ItemForm"=>2001,//料品形态 "ItemFormAttribute"=>10,//料品形态属性 "IsInventoryEnable"=>true,//可库存交易 "IsPurchaseEnable"=>true,//可采购 "IsSalesEnable"=>true,//可采购 "IsBuildEnable"=>true,//可生产 "IsOutsideOperationEnable"=>true,//可委外 "IsMRPEnable"=>true,//可MRP "IsBOMEnable"=>true,//可BOM "IsCostCalByGrade"=>false,//等级影响成本 "IsCostCalByPotency"=>false,//成分影响成本 "IsGradeControl"=>false,//等级控制 "StandardGrade"=>-1,//标准等级 "StartGrade"=>-1,//起始等级 "EndGrade"=>-1,//结束等级 "IsPotencyControl"=>false,//成分控制 "StandardPotency"=>-1,//标准成分 "StartPotency"=>-1,//起始成分 "EndPotency"=>-1,// 结束成分 ]; } return $list; } }