// /// <summary> // /// If passed area is cancelled area then return true otherwise false. // /// We update the pieces in ialoc_content if source area is cancel area. // /// </summary> // /// <param name="sourceArea"></param> // /// <param name="vwhId"></param> // /// <param name="pieces"></param> // /// <param name="upcCode"></param> // /// <returns> // /// Bool: True or False // /// </returns> // internal void UpdateCancelAreaPieces(string sourceArea, string vwhId, int? pieces, string upcCode) // { // Contract.Assert(_db != null); // const string QUERY = @" // UPDATE <proxy />IALOC_CONTENT I // SET I.NUMBER_OF_UNITS = I.NUMBER_OF_UNITS - :PIECES // WHERE I.LOCATION_ID = (SELECT A.LOCATION_ID // FROM <proxy />IALOC A // WHERE A.IA_ID = :SOURCE_AREA // AND A.VWH_ID = :VWH_ID) // AND I.IACONTENT_ID = :UPC_CODE // "; // var binder = SqlBinder.Create() // .Parameter("SOURCE_AREA", sourceArea) // .Parameter("VWH_ID", vwhId) // .Parameter("PIECES", pieces) // .Parameter("UPC_CODE", upcCode); // _db.ExecuteNonQuery(QUERY, binder); // } // /// <summary> // /// Remove carton from SRC_OPEN_CARTON. // /// </summary> // /// <param name="cartonId"></param> // internal void RemoveCarton(string cartonId) // { // Contract.Assert(_db != null); // const string QUERY = @" // DELETE FROM <proxy />SRC_OPEN_CARTON S WHERE S.CARTON_ID = :CARTON_ID"; // var binder = SqlBinder.Create() // .Parameter("CARTON_ID", cartonId); // _db.ExecuteNonQuery(QUERY, binder); // } /// <summary> /// Creates a new carton based on the passed info. /// Returns the id of the first and last newly created carton. /// </summary> /// <param name="info">This will be null if BarCode is invalid</param> internal string[] RepackCarton(CartonRepackInfo info) { const string QUERY = @" DECLARE LRelated_TRansaction_Id NUMBER(10); LLcarton_id VARCHAR2(255); LFcarton_id VARCHAR2(255); LLOCATION_ID VARCHAR2(13); LFLAG_QUALITY NUMBER := <proxy />PKG_CARTON_WORK_2.PFLAG_QUALITY; BEGIN FOR i IN 1 .. :no_of_cartons LOOP insert into <proxy />src_carton (carton_id, shipment_id, pallet_id, price_season_code, carton_storage_area, sewing_plant_code, vwh_id, quality_code) VALUES ( <if>:carton_id</if> <if c='not($carton_id)'>'R'||Carton_Sequence.Nextval</if>, :shipment_id, :apallet_id, :aprice_season_code, :adestination_area, :asewing_plant_code, :vwh_id, :quality_code) RETURNING carton_id into LLcarton_id; IF LFcarton_id is NULL THEN LFcarton_id:=LLcarton_id; END IF; LRelated_TRansaction_Id := <proxy />pkg_inv_3.ADDSKUTOCARTON(acarton_id => LLcarton_id, asku_id => :sku_id, apieces => :apieces, asource_area => :asource_area, arelated_transaction_id => LRelated_TRansaction_Id); <if c='$target_sku_id or $target_vwh_id'> LRelated_TRansaction_Id := <proxy />pkg_carton_work_2.mark_carton_for_work(ACARTON_ID => LLcarton_id, ATARGET_SKU_ID => :target_sku_id, ATARGET_VWH_ID => :target_vwh_id, ATARGET_QUALITY => :target_QualityCode, arelated_transaction_id => LRelated_TRansaction_Id, acomplete_flags => LFLAG_QUALITY); </if> <if c='$aprinter_name'> <proxy />PKG_JF_SRC_2.PKG_JF_SRC_CTN_TKT(ACARTON_ID => LLcarton_id, APRINTER_NAME => :aprinter_name); </if> END LOOP; :acarton_id := LFcarton_id; :acarton_id1 := LLcarton_id; END; "; if (string.IsNullOrEmpty(info.QualityCode)) { throw new ArgumentNullException("info.QualityCode"); } if (info.Pieces == null) { throw new ArgumentNullException("info.Pieces"); } string[] cartonId = new string[2]; var binder = SqlBinder.Create().Parameter("carton_id", info.CartonId) .Parameter("sku_id", info.SkuId) .Parameter("target_sku_id", info.TartgetSkuId) .OutParameter("acarton_id", row => cartonId[0] = row) .OutParameter("acarton_id1", row => cartonId[1] = row) .Parameter("vwh_id", info.VwhId) .Parameter("adestination_area", info.DestinationCartonArea) .Parameter("apallet_id", info.PalletId) .Parameter("aprice_season_code", info.PriceSeasonCode) .Parameter("quality_code", info.QualityCode) .Parameter("asource_area", info.SourceSkuArea) .Parameter("apieces", info.Pieces.Value) .Parameter("asewing_plant_code", info.SewingPlantCode) .Parameter("shipment_id", info.ShipmentId) .Parameter("no_of_cartons", info.NumberOfCartons) .Parameter("target_vwh_id", info.TargetVWhId) .Parameter("target_QualityCode", info.TargetQualityCode) .Parameter("aprinter_name", info.PrinterName) .Parameter("UPC_CODE", info.UpcCode); try { _db.ExecuteNonQuery(QUERY, binder); } catch (OracleException ex) { switch (ex.Number) { case 20006: throw new Exception("Not enough inventory in source area. Overdraft is not allowed.", ex); case 00001: throw new Exception("Box is already convert in to carton.", ex); default: throw; } } return(cartonId); }
public virtual ActionResult RepackCarton(RepackViewModel model) { if (!ModelState.IsValid) { return(PartialView(MVC_Repack.Repack.Shared.Views._validationPartial)); } //TC 9: When ModelState is valid var info = new CartonRepackInfo { CartonId = model.CartonId != null?model.CartonId.ToUpper() : null, DestinationCartonArea = model.DestinationArea, SourceSkuArea = model.SourceArea, VwhId = model.VwhId, PalletId = model.PalletId != null?model.PalletId.ToUpper() : model.PalletId, ShipmentId = model.ShipmentId, PriceSeasonCode = model.PriceSeasonCode, QualityCode = model.QualityCode, SewingPlantCode = model.SewingPlantCode, Pieces = model.Pieces.Value, NumberOfCartons = model.NumberOfCartons.Value, PrinterName = model.PrinterName, TargetVWhId = model.ConvertSku ? model.TargetVwhId : null, TargetQualityCode = model.ConvertSku ? model.TargetQualityCode : null }; try { var sourceSku = _service.GetSkuFromBarCode(model.SkuBarCode); string msg; if (sourceSku == null) { ModelState.AddModelError("", string.Format("{0} is invalid SKU", model.SkuBarCode)); return(PartialView(MVC_Repack.Repack.Shared.Views._validationPartial)); } if (model.ConvertSku) { var targetSku = _service.GetSkuFromBarCode(model.TargetSkuBarCode); if (targetSku == null) { ModelState.AddModelError("", string.Format("{0} is invalid Target SKU", model.TargetSkuBarCode)); return(PartialView(MVC_Repack.Repack.Shared.Views._validationPartial)); } info.TartgetSkuId = targetSku.SkuId; // info.UpcCode = targetSku.UpcCode; } info.SkuId = sourceSku.SkuId; info.UpcCode = sourceSku.UpcCode; var cartons = _service.RepackCarton(info); //TC 10: When user scan invalid carton if (cartons == null) { ModelState.AddModelError("", "Could not create cartons"); return(PartialView(MVC_Repack.Repack.Shared.Views._validationPartial)); } //TC 11: When user chose a valid printer. if (!string.IsNullOrEmpty(model.PrinterName)) { AddStatusMessage(string.Format("Carton ticket printed on {0}", model.PrinterName)); } //TC 12: When single carton created. if (model.NumberOfCartons == 1) { msg = string.Format("Carton {0} created", cartons[0]); } //TC 13: When multiple cartons created. else { msg = string.Format("{1} Cartons created. First carton id {0} ,Last carton id {2}", cartons[0], model.NumberOfCartons, cartons[1]); } AddStatusMessage(msg); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } return(PartialView(MVC_Repack.Repack.Shared.Views._validationPartial)); }
/// <summary> /// If Source area is cancelled area, then pass source area is 'SHL' /// and remove carton from SRC_OPEN_CARTON. /// </summary> /// <param name="info"></param> /// <returns> /// Carton Id /// </returns> internal string[] RepackCarton(CartonRepackInfo info) { var result = _repos.RepackCarton(info); return(result); }