using System; using System.Collections.Generic; using System.Linq; using System.Web.Mvc; using DSWeb.Areas.CommMng.DAL; using DSWeb.Areas.Import.DAL.XXH; using DSWeb.Areas.Import.Models.XXH; using DSWeb.Areas.Import.Models.PortOperate; using DSWeb.TruckMng.Comm.Cookie; using DSWeb.TruckMng.Helper; using DSWeb.TruckMng.Helper.Repository; using HcUtility.Comm; using HcUtility.Core; using DSWeb.MvcShipping.Controllers; using DSWeb.MvcShipping.Models.MsOpAmend; using DSWeb.Areas.Import.DAL.ImportTrade; using DSWeb.Areas.Import.DAL.Comm; using DSWeb.Areas.Import.Models.Comm; namespace DSWeb.Areas.Import.Controllers { [JsonRequestBehavior] public class PortOperateController : Controller { // // GET: /Import/create public ActionResult Index() { return View(); } public ActionResult Index2 ( ) { return View(); } // // GET: /Import/create/Edit public ActionResult Edit() { return View(); } public ActionResult Edit2 ( ) {//天津誉恒版 return View(); } // GET:/Import/operate/Save public ContentResult Save(string opstatus, string data, string Receiptbody, string Receiptdelbody, string CargoBody, string CargoDelBody, string AppstateBody, string AppstateDelBody, string KCBody, string KCDelBody, string chfeebody, string chfeedelbody) { var head = JsonConvert.Deserialize(data); var ReceiptbodyList = JsonConvert.Deserialize>(Receiptbody); var ReceiptdelbodyList = JsonConvert.Deserialize>(Receiptdelbody); var CargobodyList = JsonConvert.Deserialize>(CargoBody); var CargodelbodyList = JsonConvert.Deserialize>(CargoDelBody); var AppstateBodyList = JsonConvert.Deserialize>(AppstateBody); var AppstateDelBodyList = JsonConvert.Deserialize>(AppstateDelBody); var KCBodyList = JsonConvert.Deserialize>(KCBody); var KCDelBodyList = JsonConvert.Deserialize>(KCDelBody); var chfeeBodyList = JsonConvert.Deserialize>(chfeebody); var chfeeBodyDelList = JsonConvert.Deserialize>(chfeedelbody); if (chfeeBodyList != null) { foreach (var _fee in chfeeBodyList) { _fee.MODIFIEDTIME = DateTime.Now.ToString(); _fee.MODIFIEDUSER = Session["USERID"].ToString(); } } if (opstatus == "add") { head.DbOperationType = DbOperationType.DbotIns; head.ModelUIStatus = "I"; head.ContractNo = PubSysDAL.GetBillNo("0201"); //获取合同号 //20131011 应客户要求,将合同号改为接单人手动填写的必填项目。不再自动生成合同号 /*自动填写接单审单人id headData.UserCode = CookieConfig.GetCookie_UserCode(Request); headData.UserName = CookieConfig.GetCookie_UserName(Request); headData.OrgCode = CookieConfig.GetCookie_OrgCode(Request); headData.OrgName = CookieConfig.GetCookie_OrgName(Request);*/ //headData.LrDate = DateTime.Now; } else if (opstatus == "edit") { head.DbOperationType = DbOperationType.DbotUpd; head.ModelUIStatus = "E"; } else { head.DbOperationType = DbOperationType.DbotDel; } var modb = new ModelObjectRepository(); head.MODIFIEDUSER = Session["SHOWNAME"].ToString(); head.MODIFIEDTIME = System.DateTime.Now.ToString(); DBResult result = modb.Save(head, ModelObjectConvert.ToModelObjectList(ReceiptbodyList), ModelObjectConvert.ToModelObjectList(ReceiptdelbodyList), ModelObjectConvert.ToModelObjectList(CargobodyList), ModelObjectConvert.ToModelObjectList(CargodelbodyList), ModelObjectConvert.ToModelObjectList(AppstateBodyList), ModelObjectConvert.ToModelObjectList(AppstateDelBodyList), ModelObjectConvert.ToModelObjectList(KCBodyList), ModelObjectConvert.ToModelObjectList(KCDelBodyList), ModelObjectConvert.ToModelObjectList(chfeeBodyList), ModelObjectConvert.ToModelObjectList(chfeeBodyDelList) ); BasicDataRefDAL.SaveLog(head, Session["USERID"].ToString(), "进口贸易_港口操作", "保存"); //刷新父窗口上的父节点 var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message, Data = XXHDAL.GetData("M.ContractNo='" + head.ContractNo + "'", CookieConfig.GetCookie_UserCode(Request), CookieConfig.GetCookie_UserName(Request), CookieConfig.GetCookie_CompanyId(Request)) }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public ContentResult SaveAmend(string ContractNo, string data,string chfeeBody, string chfeeBodyDel) { var head = JsonConvert.Deserialize(data); var chfeeBodyList = JsonConvert.Deserialize>(chfeeBody); var chfeeBodyDelList = JsonConvert.Deserialize>(chfeeBodyDel); //var result = new DBResult(); var ParentID = ContractNo; if (head.ACCDATE!="") { head.ACCDATE = head.ACCDATE.Substring(0, 7); } var opstatus = ""; if (head.BSNO == "") { head.BSNO = PubSysDAL.GetBillNo("0206"); opstatus = "add"; } else { opstatus = "edit"; } if (opstatus == "add") { head.DbOperationType = DbOperationType.DbotIns; head.ModelUIStatus = "I"; } else if (opstatus == "edit") { head.DbOperationType = DbOperationType.DbotUpd; head.ModelUIStatus = "E"; } else { head.DbOperationType = DbOperationType.DbotDel; } var modb = new ModelObjectRepository(); DBResult result = modb.Save(head, ModelObjectConvert.ToModelObjectList(chfeeBodyList), ModelObjectConvert.ToModelObjectList(chfeeBodyDelList) ); //刷新父窗口上的父节点 var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message, Data = "" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public ContentResult SetPrice ( string _price, string _price_agio, string _price_limit, string _weight, string _BoxCount , string _Exchangerate, string _Exchangerate_Customs, string _PreProportion , string CargoBody ) { var CargobodyList = JsonConvert.Deserialize>(CargoBody); var result= new DBResult(); foreach (var _c in CargobodyList){ List list = XXHDAL.GetCargoList("c.id="+_c.cgid); Cargomb _cargo = list[0]; _cargo.U_weight = Convert.ToString(Convert.ToDecimal(_weight) / Convert.ToDecimal(_cargo.UnitRate)); _cargo.U_PRICE = Convert.ToString(Convert.ToDecimal(_price) * Convert.ToDecimal(_cargo.UnitRate)); Decimal tax_amount =0; Decimal pay_amount=0; Decimal amount = 0; Decimal amount_writeoffs=0; Decimal Exchangerate = Convert.ToDecimal(_Exchangerate); Decimal Exchangerate_Customs = Convert.ToDecimal(_Exchangerate_Customs); Decimal PreProportion = Convert.ToDecimal(_PreProportion); _cargo.Exchangerate = _Exchangerate; _cargo.Exchangerate_Customs = _Exchangerate_Customs; _cargo.PreProportion = _PreProportion; if (Convert.ToDecimal(_weight) == 0) _weight = _c.weight; var price = Convert.ToDecimal(_price); var price_agio = Convert.ToDecimal(_price_agio); var price_limit = Convert.ToDecimal(_price_limit); var baolv = Convert.ToDecimal(_cargo.baolv); var weight = Convert.ToDecimal(_weight); var UNIT= _cargo.UnitRef; if (UNIT!="磅") { amount=0; if (price_agio==0){ amount = weight*price ;} //Mul(price_limit,weight,baolv,2) else {amount = weight*price_agio;} //amount=对国内客户的合同金额 //get_tax_amount 用于向客户收税金的完税价格 //tax_amount 用于向海关交税金的完税价格 if (price_limit != 0 && price_limit > price) { tax_amount = price_limit*weight*baolv; if (price_agio!=0 && price_limit>price_agio){//海关限价最高 Decimal get_tax_amount=tax_amount; }else{Decimal get_tax_amount= price_agio*weight*baolv;}//差价(对国内客户)高于限价 } else { tax_amount = price*weight*baolv; if (price_agio!=0 ){ Decimal get_tax_amount=price_agio*weight*baolv; }else{Decimal get_tax_amount= tax_amount;}//差价(对国内客户)高于限价 } pay_amount = weight*price;//贸易商价格x重量x单价 _cargo.Amount=Convert.ToString(amount); _cargo.AMOUNT_WRITEOFFS = Convert.ToString(amount); _cargo.tax_Amount=Convert.ToString(tax_amount); _cargo.pay_Amount=Convert.ToString(pay_amount); } else{ var U_weight = Convert.ToDecimal(_cargo.U_weight); var U_PRICE = Convert.ToDecimal(_cargo.U_PRICE); var UnitRate = Convert.ToDecimal(_cargo.UnitRate); //var weight = Convert.ToDecimal(_weight); //var price = Convert.ToDecimal(_cargo.price); //var price_agio = Convert.ToDecimal(_cargo.price_agio); //var price_limit = Convert.ToDecimal(_cargo.price_limit); //var baolv = Convert.ToDecimal(_cargo.baolv); amount = U_weight*U_PRICE; amount_writeoffs=weight*price; UNIT= _cargo.UnitRef; if ((UNIT=="磅")&&(price_agio==0)) { if (price_limit != 0 && price_limit > (price)) { tax_amount = price_limit*weight*baolv; } else { tax_amount = U_weight*U_PRICE*baolv; } pay_amount = U_weight*U_PRICE; }else{ if (price_limit != 0 && price_limit > price_agio) { tax_amount = price_limit*weight*baolv; } else { tax_amount = price_agio*weight*baolv; } if (price_agio>price) { amount = weight*price_agio; pay_amount = weight*price; }else{ amount = weight*price; pay_amount = weight*price; } } _cargo.Amount= Convert.ToString(amount); _cargo.AMOUNT_WRITEOFFS= Convert.ToString(amount_writeoffs); _cargo.tax_Amount= Convert.ToString(tax_amount); _cargo.pay_Amount= Convert.ToString(pay_amount); amount=Convert.ToDecimal(_cargo.Amount); tax_amount=Convert.ToDecimal(_cargo.tax_Amount); pay_amount=Convert.ToDecimal(_cargo.pay_Amount); } //if (amount>tax_amount){tax_amount=amount;}//确保tax_amount为给客户显示并使用的完税价格 Decimal tax = Convert.ToDecimal(_cargo.tax);//关税税率 Decimal tax_zz = Convert.ToDecimal(_cargo.tax_zz);//增值税税率 //Exchangerate_Customs = Convert.ToDecimal(_cargo.Exchangerate_Customs);//海关汇率 var HS = _cargo.cicode; var isChicken = false; Decimal ChickenTax = 0; Decimal priceandtax = 0; Decimal tax_1 = 0; Decimal tax_zz_1 = 0; Decimal tax_2 = 0; Decimal tax_zz_2 = 0; if (HS == "0207142100" || HS == "0207142200" || HS == "0207142900"|| HS == "02071200") { isChicken = true; if (HS == "0207142100") { ChickenTax = 0.8M; } else if (HS == "0207142200") { ChickenTax = 1.0M; } else if (HS == "0207142900"|| HS == "02071200") { ChickenTax = 1.3M; } } if (isChicken) { //Mul(weight,price); priceandtax = tax_amount*Exchangerate_Customs + weight*ChickenTax; tax_1 = weight*ChickenTax; tax_zz_1 = priceandtax*tax_zz; tax_2 = tax_1; tax_zz_2 = tax_zz_1; } else { priceandtax =tax_amount*(1.0M + tax); //完税价格x(1+关税税率)=含关税价格 //应付的 tax_2 =tax_amount*tax*Exchangerate_Customs; //关税 tax_zz_2 =tax_amount*(1.0M + tax)*tax_zz*Exchangerate_Customs; //decimal(tax_amount * (1.0 + tax) * tax_zz * Exchangerate_Customs,2); //增值税 //向客户收取的 //var weight = Convert.ToDecimal(_cargo.weight); //var price_agio = Convert.ToDecimal(_cargo.price_agio); if (price_agio != 0 && price_agio>price_limit){//如果“差价(对国内客户价格)”不为零而且高于限价 关税的完税价格依据差价价格计算 tax_1 = (weight*price_agio*baolv)*tax*Exchangerate_Customs; //应收关税 tax_zz_1 = (weight*price_agio*baolv)*(1.0M + tax)*tax_zz*Exchangerate_Customs;//应收增值税 }else { tax_1 = tax_2; tax_zz_1 = tax_zz_2; } } _cargo.tax_1=Convert.ToString(tax_1); _cargo.tax_zz_1=Convert.ToString(tax_zz_1); _cargo.tax_2=Convert.ToString(tax_2); _cargo.tax_zz_2=Convert.ToString(tax_zz_2); var prepayments = amount*PreProportion/100; var balance = amount-prepayments; _cargo.prepayments = Convert.ToString(prepayments); _cargo.balance= Convert.ToString(balance); var pay_prepayments = pay_amount * PreProportion / 100; var pay_balance = pay_amount - pay_prepayments; _cargo.pay_prepayments = Convert.ToString(pay_prepayments); _cargo.pay_balance= Convert.ToString(pay_balance); var modb = new ModelObjectRepository(); var _cargolist=new List(); _cargolist.Add(_cargo); result = modb.SaveComm( "ContractNo" , _cargo.ContractNo , ModelObjectConvert.ToModelObjectList(_cargolist) , null); if (result.Success) { //生成费用 var FeeList=new List(); FeeList = MakeFee(_cargo); var USERID=Session["USERID"].ToString(); var _r = MsChFeeDAL.Audit(0, FeeList, USERID, "True"); } } var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public List MakeFee(Cargomb _c) { if (Convert.ToDecimal(_c.price_agio) == 0) { _c.price_agio = _c.price; } var _count = 0; var GIDs=""; var field = " (GId,BsNo,FeeStatus,FeeType,FeeName,FeeDescription,CustomerType,CustomerName,Unit,UnitPrice,TaxUnitPrice,Quantity "; field = field + " ,Amount,NoTaxAmount,Currency,ExChangerate,Reason,Remark,Commissionrate,Settlement,Invoice,OrderAmount,OrderInvoice "; field = field + " ,Auditoperator,EnterOperator,EnterDate,DebitNo,IsDebit,IsOpen,IsAdvancedpay,IsInvoice,FeeFrt,IsCrmOrderFee,AuditStatus) "; //应收预付款 if (Convert.ToDecimal(_c.prepayments) > 0) { var GID=Guid.NewGuid().ToString(); GIDs="'"+GID+"'"; var _value = " select '" + GID + "',c.ContractNo,0,1,'预付款','','',m.buyer,''," + _c.prepayments + "," + _c.prepayments + ",1"; _value = _value + "," + _c.prepayments + "," + _c.prepayments + ",(select codename from code_currency where gid=c.currid),c.exchangerate,'' "; _value = _value + ",case (select codename from code_currency where gid=c.currid) when 'RMB' then '' else convert(varchar(50)," + _c.prepayments + ")+(select codename from code_currency where gid=c.currid)+' 汇率'+convert(varchar(50),Exchangerate) end,0,0,0,0,0 "; _value = _value + ",'','" + Session["USERID"] + "',getdate(),'',0,0,0,0,'PP',0,0 "; _value = _value + " from Import_Cargo c "; _value = _value + " left join Import_main m on M.ContractNo=c.ContractNo where c.id= '" + _c.id + "'"; var SQL = " Insert into ch_fee " + field + _value; _count = ImportSyncDAL.SaveSync(SQL); } //应付预付款 if (Convert.ToDecimal(_c.pay_prepayments) > 0) { var GID=Guid.NewGuid().ToString(); GIDs=GIDs+",'"+GID+"'"; var _value = " select '" + GID + "',c.ContractNo,0,2,'预付款','','',m.seller,''," + _c.pay_prepayments + "," + _c.pay_prepayments + ",1"; _value = _value + "," + _c.pay_prepayments + "," + _c.pay_prepayments + ",(select codename from code_currency where gid=c.currid),c.exchangerate,'' "; _value = _value + ",case (select codename from code_currency where gid=c.currid) when 'RMB' then '' else convert(varchar(50)," + _c.prepayments + ")+(select codename from code_currency where gid=c.currid)+' 汇率'+convert(varchar(50),Exchangerate) end,0,0,0,0,0 "; _value = _value + ",'','" + Session["USERID"] + "',getdate(),'',0,0,0,0,'PP',0,0 "; _value = _value + " from Import_Cargo c "; _value = _value + " left join Import_main m on M.ContractNo=c.ContractNo where c.id= '" + _c.id + "'"; var SQL = " Insert into ch_fee " + field + _value; _count = ImportSyncDAL.SaveSync(SQL); } //应收预付款手续费 if (Convert.ToDecimal(_c.prepayments) > 0) { var GID=Guid.NewGuid().ToString(); GIDs=GIDs+",'"+GID+"'"; var yfksxf = Convert.ToString(Convert.ToDecimal(_c.prepayments)/1000M); var _value = " select '" + GID + "',c.ContractNo,0,1,'手续费','','',m.buyer,''," + yfksxf + "," + yfksxf + ",1"; _value = _value + "," + yfksxf + "," + yfksxf + ",(select codename from code_currency where gid=c.currid),c.exchangerate,'' "; _value = _value + ",'预付款手续费',0,0,0,0,0 "; _value = _value + ",'','" + Session["USERID"] + "',getdate(),'',0,0,0,0,'PP',0,0 "; _value = _value + " from Import_Cargo c "; _value = _value + " left join Import_main m on M.ContractNo=c.ContractNo where c.id= '" + _c.id + "'"; var SQL = " Insert into ch_fee " + field + _value; _count = ImportSyncDAL.SaveSync(SQL); } //应收预付款电汇费 if (Convert.ToDecimal(_c.prepayments) > 0) { var GID=Guid.NewGuid().ToString(); GIDs=GIDs+",'"+GID+"'"; var DHF = "150"; var _value = " select '" + GID + "',c.ContractNo,0,1,'电汇费','','',m.buyer,''," + DHF + "," + DHF + ",1"; _value = _value + "," + DHF + "," + DHF + ",'RMB',1,'' "; _value = _value + ",'预付款电汇费',0,0,0,0,0 "; _value = _value + ",'','" + Session["USERID"] + "',getdate(),'',0,0,0,0,'PP',0,0 "; _value = _value + " from Import_Cargo c "; _value = _value + " left join Import_main m on M.ContractNo=c.ContractNo where c.id= '" + _c.id + "'"; var SQL = " Insert into ch_fee " + field + _value; _count = ImportSyncDAL.SaveSync(SQL); } var FeeList = MsChFeeDAL.GetDataList("GID in(" + GIDs + ")", Session["USERID"].ToString()); return FeeList; } #region 参照部分 #endregion } }