/// <summary> /// Register purchase order.<br /> /// - Check system suspending.<br /> /// - Check permission.<br /> /// - Insert new purchase order.<br /> /// - Generate report. /// </summary> /// <returns></returns> public ActionResult IVS250_cmdConfirm() { ObjectResultData res = new ObjectResultData(); try { IVS250_ScreenParameter prm = GetScreenObject <IVS250_ScreenParameter>(); if (prm.lstInstrument == null) { prm.lstInstrument = new List <doInstrument250>(); } if (prm.SpecifyPOrder250 == null) { prm.SpecifyPOrder250 = new doSpecifyPOrder250(); } //Check Suspend ICommonHandler ComH = ServiceContainer.GetService <ICommonHandler>() as ICommonHandler; if (ComH.IsSystemSuspending()) { res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0049); return(Json(res)); } if (!CheckUserPermission(ScreenID.C_INV_SCREEN_ID_REGISTER_PURCHASE_ORDER, FunctionID.C_FUNC_ID_OPERATE)) { res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0053); return(Json(res)); } foreach (var i in prm.lstInstrument) { IInstrumentMasterHandler InsH = ServiceContainer.GetService <IInstrumentMasterHandler>() as IInstrumentMasterHandler; List <tbm_Instrument> lstInst = InsH.GetTbm_Instrument(i.InstrumentCode); if (lstInst[0].LineUpTypeCode == LineUpType.C_LINE_UP_TYPE_LOGICAL_DELETE) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4140, new string[] { lstInst[0].InstrumentCode }); return(Json(res)); } } using (TransactionScope scope = new TransactionScope()) { try { IInventoryHandler InvH = ServiceContainer.GetService <IInventoryHandler>() as IInventoryHandler; string strPurchaseOrderNo = InvH.GeneratePurchaseOrderNo(prm.Supplier.RegionCode); tbt_PurchaseOrder doPurchaseOrder = new tbt_PurchaseOrder(); doPurchaseOrder.PurchaseOrderNo = strPurchaseOrderNo; doPurchaseOrder.PurhcaseOrderType = prm.SpecifyPOrder250.PurchaseOrderType; doPurchaseOrder.PurchaseOrderStatus = PurchaseOrderStatus.C_PURCHASE_ORDER_STATUS_WAIT_TO_RECEIVE; doPurchaseOrder.SupplierCode = prm.SpecifyPOrder250.SupplierCode; doPurchaseOrder.TransportType = prm.SpecifyPOrder250.TransportType; doPurchaseOrder.Currency = prm.SpecifyPOrder250.Currency; doPurchaseOrder.BankName = prm.Supplier.BankName; doPurchaseOrder.AccountNo = prm.Supplier.AccountNo; doPurchaseOrder.AccountName = prm.Supplier.AccountName; doPurchaseOrder.ShippingDate = prm.SpecifyPOrder250.AdjustDueDate; doPurchaseOrder.Amount = prm.SpecifyPOrder250.TotalAmount; if (prm.SpecifyPOrder250.PurchaseOrderType == PurchaseOrderType.C_PURCHASE_ORDER_TYPE_DOMESTIC || (prm.SpecifyPOrder250.PurchaseOrderType == PurchaseOrderType.C_PURCHASE_ORDER_TYPE_SECOM && prm.SpecifyPOrder250.Currency == CurrencyType.C_CURRENCY_TYPE_THB)) { doPurchaseOrder.Vat = prm.SpecifyPOrder250.Vat; } doPurchaseOrder.Memo = prm.SpecifyPOrder250.Memo; doPurchaseOrder.CreateBy = CommonUtil.dsTransData.dtUserData.EmpNo; doPurchaseOrder.CreateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; doPurchaseOrder.UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; doPurchaseOrder.UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; doPurchaseOrder.WHT = prm.SpecifyPOrder250.WHT; doPurchaseOrder.Discount = prm.SpecifyPOrder250.Discount; List <tbt_PurchaseOrder> lst = new List <tbt_PurchaseOrder>(); lst.Add(doPurchaseOrder); List <tbt_PurchaseOrder> dolstPurchaseOrder = InvH.InsertTbt_PurchaseOrder(lst); if (dolstPurchaseOrder.Count <= 0) { throw ApplicationErrorException.ThrowErrorException(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0148, new string[] { TableName.C_TBL_NAME_INV_PURCHASE }); } List <tbt_PurchaseOrderDetail> lstDetail = new List <tbt_PurchaseOrderDetail>(); //foreach (doInstrument250 i in prm.lstInstrument) foreach (doInstrument250 i in prm.SpecifyPOrder250.InstrumentData) //Modify by Jutarat A. on 28102013 { tbt_PurchaseOrderDetail OrderDetail = new tbt_PurchaseOrderDetail(); OrderDetail.PurchaseOrderNo = strPurchaseOrderNo; OrderDetail.InstrumentCode = i.InstrumentCode; OrderDetail.InstrumentName = i.InstrumentName; //Add by Jutarat A. on 28102013 OrderDetail.Memo = i.Memo; //Add by Jutarat A. on 28102013 OrderDetail.UnitPrice = i.UnitPrice; OrderDetail.FirstOrderQty = i.OrderQty; OrderDetail.ModifyOrderQty = null; OrderDetail.ReceiveQty = 0; OrderDetail.CreateBy = CommonUtil.dsTransData.dtUserData.EmpNo; OrderDetail.CreateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; OrderDetail.UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; OrderDetail.UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; OrderDetail.Unit = i.Unit; OrderDetail.OriginalUnitPrice = i.OriginalUnitPrice; OrderDetail.Amount = i.Amount; lstDetail.Add(OrderDetail); } List <tbt_PurchaseOrderDetail> doPurchaseOrderDetail = InvH.InsertTbt_PurchaseOrderDetail(lstDetail); if (doPurchaseOrderDetail.Count <= 0) { throw ApplicationErrorException.ThrowErrorException(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0148, new string[] { TableName.C_TBL_NAME_INV_PURCHASE_DETAIL }); } //if (prm.SpecifyPOrder250.PurchaseOrderType == PurchaseOrderType.C_PURCHASE_ORDER_TYPE_SECOM) //{ // IInventoryDocumentHandler handlerInventoryDocument = ServiceContainer.GetService<IInventoryDocumentHandler>() as IInventoryDocumentHandler; // string reportPath = handlerInventoryDocument.GenerateIVR190FilePath(strPurchaseOrderNo, prm.office.OfficeCode, CommonUtil.dsTransData.dtUserData.EmpNo, CommonUtil.dsTransData.dtOperationData.ProcessDateTime); // prm.slipNo = strPurchaseOrderNo; // prm.reportFilePath = reportPath; //} //else if (prm.SpecifyPOrder250.PurchaseOrderType == PurchaseOrderType.C_PURCHASE_ORDER_TYPE_DOMESTIC) //{ // IInventoryDocumentHandler handlerInventoryDocument = ServiceContainer.GetService<IInventoryDocumentHandler>() as IInventoryDocumentHandler; // string reportPath = handlerInventoryDocument.GenerateIVR191FilePath(strPurchaseOrderNo, prm.office.OfficeCode, CommonUtil.dsTransData.dtUserData.EmpNo, CommonUtil.dsTransData.dtOperationData.ProcessDateTime); // prm.slipNo = strPurchaseOrderNo; // prm.reportFilePath = reportPath; //} IInventoryDocumentHandler handlerInventoryDocument = ServiceContainer.GetService <IInventoryDocumentHandler>() as IInventoryDocumentHandler; string reportPath = handlerInventoryDocument.GenerateIVR192FilePath(strPurchaseOrderNo, prm.office.OfficeCode, CommonUtil.dsTransData.dtUserData.EmpNo, CommonUtil.dsTransData.dtOperationData.ProcessDateTime); prm.slipNo = strPurchaseOrderNo; prm.reportFilePath = reportPath; scope.Complete(); res.ResultData = strPurchaseOrderNo; return(Json(res)); } catch (Exception ex) { res.AddErrorMessage(ex); return(Json(res)); } } } catch (Exception ex) { res.AddErrorMessage(ex); return(Json(res)); } }