コード例 #1
0
ファイル: RepackRepository.cs プロジェクト: sbist/dcmsconnect
//        /// <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     =&gt; LLcarton_id,
                                                        asku_id                 =&gt; :sku_id,
                                                        apieces                 =&gt; :apieces,
                                                        asource_area            =&gt; :asource_area,
                                                        arelated_transaction_id =&gt; 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     =&gt; LLcarton_id,
                                  ATARGET_SKU_ID =&gt; :target_sku_id,
                                  ATARGET_VWH_ID =&gt; :target_vwh_id,
                                  ATARGET_QUALITY =&gt; :target_QualityCode,
                                  arelated_transaction_id =&gt; LRelated_TRansaction_Id,
                                  acomplete_flags =&gt; LFLAG_QUALITY);
</if>
<if c='$aprinter_name'>
    <proxy />PKG_JF_SRC_2.PKG_JF_SRC_CTN_TKT(ACARTON_ID    =&gt; LLcarton_id,
                                    APRINTER_NAME =&gt; :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);
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        /// <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);
        }