public void colGetCallAdvReplacementReceipt(string argCallAdvRepReceiptCode, string argCallCode, string argPartnerCode, string argClientCode, ref CallAdvRepReceiptCol argCallAdvRepReceiptCol)
        {
            DataSet DataSetToFill = new DataSet();
            CallAdvReplacementReceipt tCallAdvReplacementReceipt = new CallAdvReplacementReceipt();

            DataSetToFill = this.GetCallAdvReplacementReceipt(argCallAdvRepReceiptCode, argCallCode, argPartnerCode, argClientCode);

            if (DataSetToFill != null)
            {
                foreach (DataRow dr in DataSetToFill.Tables[0].Rows)
                {
                    argCallAdvRepReceiptCol.colCallAdvReplacementReceipt.Add(objCreateCallAdvReplacementReceipt(dr));
                }
            }
            goto Finish;

        Finish:
            DataSetToFill = null;
        }
        public PartnerErrorResult SaveCallAdvReplacementReceipt(CallAdvRepReceiptCol argCallAdvRepReceiptCol, string argPartnerCode, string argClientCode, string argUserName)
        {
            List<ErrorHandler> lstErr = new List<ErrorHandler>();
            PartnerErrorResult errorcol = new PartnerErrorResult();
            PartnerGoodsMovementManager objPartnerGMManager = new PartnerGoodsMovementManager();
            DataAccess da = new DataAccess();
            try
            {
                da.Open_Connection();
                da.BEGIN_TRANSACTION();

                string strGoodsMovementCode = "";
                int ictr = 0;
                strGoodsMovementCode = objPartnerGMManager.GenerateGMCode("NEW", "GM01", argPartnerCode, argClientCode, da);
                foreach (CallAdvReplacementReceipt objCallAdvReplacementReceipt in argCallAdvRepReceiptCol.colCallAdvReplacementReceipt)
                {
                    if (objCallAdvReplacementReceipt.IsDeleted == 0)
                    {
                        ictr = ictr + 1;

                        if (blnIsCallAdvReplacementReceiptExists(objCallAdvReplacementReceipt.CallAdvRepReceiptCode, objCallAdvReplacementReceipt.CallCode, objCallAdvReplacementReceipt.CallItemNo, objCallAdvReplacementReceipt.PartnerCode, objCallAdvReplacementReceipt.ClientCode, da) == false)
                        {
                            objCallAdvReplacementReceipt.PGoodsMovementCode = strGoodsMovementCode;
                            objCallAdvReplacementReceipt.GMItemNo = ictr;

                            InsertCallAdvReplacementReceipt(objCallAdvReplacementReceipt, da, lstErr);

                        }
                        else
                        {
                            UpdateCallAdvReplacementReceipt(objCallAdvReplacementReceipt, da, lstErr);
                        }
                    }
                }

                foreach (ErrorHandler objerr in lstErr)
                {
                    if (objerr.Type == "E")
                    {
                        errorcol.colErrorHandler.Add(objerr);
                        da.ROLLBACK_TRANSACTION();
                        return errorcol;
                    }

                    if (objerr.Type == "A")
                    {
                        errorcol.colErrorHandler.Add(objerr);
                        da.ROLLBACK_TRANSACTION();
                        return errorcol;
                    }
                }

                /* Partner Goods Movement Declared */
                PartnerGoodsMovement objPartnerGM = new PartnerGoodsMovement();

                objPartnerGM.PGoodsMovementCode = strGoodsMovementCode;
                objPartnerGM.PartnerGMDocTypeCode = "GM09";
                objPartnerGM.FromPlantCode = "";
                objPartnerGM.FromPartnerCode = argPartnerCode;
                objPartnerGM.FromPartnerEmployeeCode = "";
                objPartnerGM.FromStoreCode = "";
                objPartnerGM.ToPartnerCode = "";
                objPartnerGM.ToPlantCode = "";
                objPartnerGM.ToStoreCode = "";
                objPartnerGM.ToPartnerEmployeeCode = "";
                objPartnerGM.ClientCode = argClientCode;
                objPartnerGM.CreatedBy = argUserName;
                objPartnerGM.ModifiedBy = argUserName;
                objPartnerGM.TotalQuantity = 0;
                objPartnerGM.PartnerCode = Convert.ToString(argPartnerCode);
                objPartnerGM.GoodsMovDate = Convert.ToDateTime(DateTime.Now);
                /*----------------------------------------------------------------------------------------*/

                /* Partner Goods Movement Detail */
                PartnerMaterialDocTypeManager objPartnerMatDocTypeMan = new PartnerMaterialDocTypeManager();

                PartnerGoodsMovementDetailCol objPartnerGMCol = new PartnerGoodsMovementDetailCol();
                PartnerGoodsMovSerialDetailCol objPartnerGMSerialCol = new PartnerGoodsMovSerialDetailCol();

                objPartnerGMCol.colPartnerGMDetail = new List<PartnerGoodsMovementDetail>();
                objPartnerGMSerialCol.colPartnerGMSerialDetail = new List<PartnerGoodsMovSerialDetail>();

                DataSet dsMatDocType = null;
                bool IsNew = true;
                int tmpItemNo = 0;

                ictr = 0;
                foreach (CallAdvReplacementReceipt objCallAdvReplacementReceipt in argCallAdvRepReceiptCol.colCallAdvReplacementReceipt)
                {
                    if (objCallAdvReplacementReceipt.IsDeleted == 0)
                    {
                        dsMatDocType = new DataSet();
                        if (IsNew == true)
                        {
                            ictr = ictr + 1;
                            dsMatDocType = objPartnerMatDocTypeMan.GetPartnerMaterialDocType(objCallAdvReplacementReceipt.MaterialDocTypeCode, objCallAdvReplacementReceipt.ClientCode, da);

                            PartnerGoodsMovementDetail objPartnerGMDetailsnew = new PartnerGoodsMovementDetail();
                            objPartnerGMDetailsnew.PGoodsMovementCode = strGoodsMovementCode;
                            objPartnerGMDetailsnew.ItemNo = ictr;
                            tmpItemNo = ictr;
                            objPartnerGMDetailsnew.MaterialCode = Convert.ToString(objCallAdvReplacementReceipt.MaterialCode);
                            objPartnerGMDetailsnew.MatGroup1Code = Convert.ToString(objCallAdvReplacementReceipt.MatGroup1Code);
                           
                            
                            objPartnerGMDetailsnew.Quantity = Convert.ToInt32(objCallAdvReplacementReceipt.Quantity);
                            objPartnerGMDetailsnew.UOMCode = Convert.ToString(objCallAdvReplacementReceipt.UOMCode);
                            objPartnerGMDetailsnew.UnitPrice = Convert.ToDouble(objCallAdvReplacementReceipt.UnitPrice);
                            objPartnerGMDetailsnew.ClientCode = Convert.ToString(objCallAdvReplacementReceipt.ClientCode);
                            objPartnerGMDetailsnew.CreatedBy = Convert.ToString(objCallAdvReplacementReceipt.CreatedBy);
                            objPartnerGMDetailsnew.ModifiedBy = Convert.ToString(objCallAdvReplacementReceipt.ModifiedBy);
                            objPartnerGMDetailsnew.TranRefDocCode = Convert.ToString(objCallAdvReplacementReceipt.CallAdvRepReceiptCode);
                            objPartnerGMDetailsnew.TranRefDocItemNo = Convert.ToInt32(ictr);
                            objPartnerGMDetailsnew.MaterialDocTypeCode = Convert.ToString(objCallAdvReplacementReceipt.MaterialDocTypeCode);
                            objPartnerGMDetailsnew.PartnerCode = Convert.ToString(argPartnerCode);

                            if (dsMatDocType != null)
                            {
                                if (dsMatDocType.Tables[0].Rows.Count > 0)
                                {
                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["AllowedFromStock"]).Trim() != "HIDE")
                                    {
                                        objPartnerGMDetailsnew.StockIndicator = Convert.ToString(objCallAdvReplacementReceipt.StockIndicator);
                                    }
                                    else
                                    {
                                        objPartnerGMDetailsnew.StockIndicator = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["AllowedToStock"]).Trim() != "HIDE")
                                    {
                                        objPartnerGMDetailsnew.ToStockIndicator = Convert.ToString(objCallAdvReplacementReceipt.StockIndicator);
                                    }
                                    else
                                    {
                                        objPartnerGMDetailsnew.ToStockIndicator = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["FromPlant"]).Trim() != "HIDE")
                                    {
                                        objPartnerGMDetailsnew.FromPlantCode = "";
                                    }
                                    else
                                    {
                                        objPartnerGMDetailsnew.FromPlantCode = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["FromPartner"]).Trim() != "HIDE")
                                    {
                                        objPartnerGMDetailsnew.FromPartnerCode = Convert.ToString(objCallAdvReplacementReceipt.PartnerCode);
                                    }
                                    else
                                    {
                                        objPartnerGMDetailsnew.FromPartnerCode = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["FromStore"]).Trim() != "HIDE")
                                    {
                                        objPartnerGMDetailsnew.FromStoreCode = Convert.ToString(objCallAdvReplacementReceipt.StoreCode);
                                    }
                                    else
                                    {
                                        objPartnerGMDetailsnew.FromStoreCode = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["FromEmployee"]).Trim() != "HIDE")
                                    {
                                        objPartnerGMDetailsnew.FromPartnerEmployeeCode = "";
                                    }
                                    else
                                    {
                                        objPartnerGMDetailsnew.FromPartnerEmployeeCode = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["ToPartner"]).Trim() != "HIDE")
                                    {
                                        objPartnerGMDetailsnew.ToPartnerCode = Convert.ToString(objCallAdvReplacementReceipt.PartnerCode);
                                    }
                                    else
                                    {
                                        objPartnerGMDetailsnew.ToPartnerCode = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["ToStore"]).Trim() != "HIDE")
                                    {
                                        objPartnerGMDetailsnew.ToStoreCode = Convert.ToString(objCallAdvReplacementReceipt.StoreCode);
                                    }
                                    else
                                    {
                                        objPartnerGMDetailsnew.ToStoreCode = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["ToEmployee"]).Trim() != "HIDE")
                                    {
                                        objPartnerGMDetailsnew.ToPartnerEmployeeCode = Convert.ToString("");
                                    }
                                    else
                                    {
                                        objPartnerGMDetailsnew.ToPartnerEmployeeCode = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["ToPlant"]).Trim() != "HIDE")
                                    {
                                        objPartnerGMDetailsnew.ToPlantCode = "";
                                    }
                                    else
                                    {
                                        objPartnerGMDetailsnew.ToPlantCode = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["ToMaterialCode"]).Trim() != "HIDE")
                                    {
                                        objPartnerGMDetailsnew.ToMaterialCode = Convert.ToString(objCallAdvReplacementReceipt.MaterialCode);
                                    }
                                    else
                                    {
                                        objPartnerGMDetailsnew.ToMaterialCode = "";
                                    }


                                }
                                else
                                {
                                    objPartnerGMDetailsnew.FromPlantCode = "";
                                    objPartnerGMDetailsnew.FromPartnerCode = "";
                                    objPartnerGMDetailsnew.FromPartnerEmployeeCode = "";
                                    objPartnerGMDetailsnew.FromStoreCode = "";
                                    objPartnerGMDetailsnew.ToPartnerCode = Convert.ToString(objCallAdvReplacementReceipt.PartnerCode);
                                    objPartnerGMDetailsnew.ToPartnerEmployeeCode = Convert.ToString("");
                                    objPartnerGMDetailsnew.ToPlantCode = "";
                                    objPartnerGMDetailsnew.ToStoreCode = Convert.ToString(objCallAdvReplacementReceipt.StoreCode);
                                    objPartnerGMDetailsnew.ToMaterialCode = Convert.ToString(objCallAdvReplacementReceipt.MaterialCode);
                                }
                            }
                            objPartnerGMCol.colPartnerGMDetail.Add(objPartnerGMDetailsnew);

                            /*Partner Goods Movement Serial Detail*/

                            PartnerGoodsMovSerialDetail objPartnerGoodsMovSerialnew = new PartnerGoodsMovSerialDetail();
                            objPartnerGoodsMovSerialnew.PGoodsMovementCode = strGoodsMovementCode;
                            objPartnerGoodsMovSerialnew.ItemNo = tmpItemNo;
                            objPartnerGoodsMovSerialnew.SerialNo1 = Convert.ToString(objCallAdvReplacementReceipt.SerialNo1);
                            objPartnerGoodsMovSerialnew.SerialNo2 = Convert.ToString(objCallAdvReplacementReceipt.SerialNo2);
                            objPartnerGoodsMovSerialnew.MaterialCode = Convert.ToString(objCallAdvReplacementReceipt.MaterialCode);
                            objPartnerGoodsMovSerialnew.MatGroup1Code = Convert.ToString(objCallAdvReplacementReceipt.MatGroup1Code);
                            objPartnerGoodsMovSerialnew.RefDocCode = Convert.ToString(objCallAdvReplacementReceipt.CallCode);
                            objPartnerGoodsMovSerialnew.RefDocItemNo = Convert.ToInt32(objCallAdvReplacementReceipt.CallItemNo);
                            objPartnerGoodsMovSerialnew.RefDocType = Convert.ToString("");
                            objPartnerGoodsMovSerialnew.TranRefDocCode = Convert.ToString(objCallAdvReplacementReceipt.CallAdvRepReceiptCode);
                            objPartnerGoodsMovSerialnew.TranRefDocItemNo = Convert.ToInt32(ictr);
                            objPartnerGoodsMovSerialnew.IsDeleted = 0;
                            objPartnerGoodsMovSerialnew.ClientCode = Convert.ToString(objCallAdvReplacementReceipt.ClientCode);
                            objPartnerGoodsMovSerialnew.CreatedBy = Convert.ToString(objCallAdvReplacementReceipt.CreatedBy);
                            objPartnerGoodsMovSerialnew.ModifiedBy = Convert.ToString(objCallAdvReplacementReceipt.ModifiedBy);
                            objPartnerGoodsMovSerialnew.StockIndicator = Convert.ToString(objCallAdvReplacementReceipt.StockIndicator);
                            objPartnerGoodsMovSerialnew.ToStockIndicator = Convert.ToString(objCallAdvReplacementReceipt.StockIndicator);

                            if (dsMatDocType != null)
                            {
                                if (dsMatDocType.Tables[0].Rows.Count > 0)
                                {
                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["FromPlant"]).Trim() != "HIDE")
                                    {
                                        objPartnerGoodsMovSerialnew.PlantCode = "";
                                    }
                                    else
                                    {
                                        objPartnerGoodsMovSerialnew.PlantCode = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["FromPartner"]).Trim() != "HIDE")
                                    {
                                        objPartnerGoodsMovSerialnew.PartnerCode = Convert.ToString(objCallAdvReplacementReceipt.PartnerCode);
                                    }
                                    else
                                    {
                                        objPartnerGoodsMovSerialnew.PartnerCode = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["FromStore"]).Trim() != "HIDE")
                                    {
                                        objPartnerGoodsMovSerialnew.StoreCode = Convert.ToString(objCallAdvReplacementReceipt.StoreCode);
                                    }
                                    else
                                    {
                                        objPartnerGoodsMovSerialnew.StoreCode = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["FromEmployee"]).Trim() != "HIDE")
                                    {
                                        objPartnerGoodsMovSerialnew.PartnerEmployeeCode = "";
                                    }
                                    else
                                    {
                                        objPartnerGoodsMovSerialnew.PartnerEmployeeCode = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["ToPartner"]).Trim() != "HIDE")
                                    {
                                        objPartnerGoodsMovSerialnew.ToPartnerCode = Convert.ToString(objCallAdvReplacementReceipt.PartnerCode);
                                    }
                                    else
                                    {
                                        objPartnerGoodsMovSerialnew.ToPartnerCode = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["ToStore"]).Trim() != "HIDE")
                                    {
                                        objPartnerGoodsMovSerialnew.ToStoreCode = Convert.ToString(objCallAdvReplacementReceipt.StoreCode);
                                    }
                                    else
                                    {
                                        objPartnerGoodsMovSerialnew.ToStoreCode = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["ToEmployee"]).Trim() != "HIDE")
                                    {
                                        objPartnerGoodsMovSerialnew.ToPartnerEmployeeCode = Convert.ToString("");
                                    }
                                    else
                                    {
                                        objPartnerGoodsMovSerialnew.ToPartnerEmployeeCode = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["ToPlant"]).Trim() != "HIDE")
                                    {
                                        objPartnerGoodsMovSerialnew.ToPlantCode = "";
                                    }
                                    else
                                    {
                                        objPartnerGoodsMovSerialnew.ToPlantCode = "";
                                    }

                                    if (Convert.ToString(dsMatDocType.Tables[0].Rows[0]["ToMaterialCode"]).Trim() != "HIDE")
                                    {
                                        objPartnerGoodsMovSerialnew.ToMaterialCode = Convert.ToString(objCallAdvReplacementReceipt.MaterialCode);
                                    }
                                    else
                                    {
                                        objPartnerGoodsMovSerialnew.ToMaterialCode = "";
                                    }


                                }
                                else
                                {
                                    objPartnerGoodsMovSerialnew.PlantCode = "";
                                    objPartnerGoodsMovSerialnew.PartnerCode = "";
                                    objPartnerGoodsMovSerialnew.PartnerEmployeeCode = "";
                                    objPartnerGoodsMovSerialnew.StoreCode = "";
                                    objPartnerGoodsMovSerialnew.ToPartnerCode = Convert.ToString(objCallAdvReplacementReceipt.PartnerCode);
                                    objPartnerGoodsMovSerialnew.ToPartnerEmployeeCode = Convert.ToString("");
                                    objPartnerGoodsMovSerialnew.ToPlantCode = "";
                                    objPartnerGoodsMovSerialnew.ToStoreCode = Convert.ToString(objCallAdvReplacementReceipt.StoreCode);
                                    objPartnerGoodsMovSerialnew.ToMaterialCode = Convert.ToString(objCallAdvReplacementReceipt.MaterialCode);
                                }
                            }

                            objPartnerGMSerialCol.colPartnerGMSerialDetail.Add(objPartnerGoodsMovSerialnew);

                            /*----------------------------------------------------------------------------------------------------------*/

                        }
                    }
                }
                if (objPartnerGMCol.colPartnerGMDetail.Count > 0)
                {
                    /*Partner Goods Movement Save*/
                    objPartnerGMManager.SavePartnerGoodsMovement(objPartnerGM, objPartnerGMCol, objPartnerGMSerialCol, da, lstErr);

                    foreach (ErrorHandler objerr in lstErr)
                    {
                        if (objerr.Type == "E")
                        {
                            errorcol.colErrorHandler.Add(objerr);
                            da.ROLLBACK_TRANSACTION();
                            return errorcol;
                        }

                        if (objerr.Type == "A")
                        {
                            errorcol.colErrorHandler.Add(objerr);
                            da.ROLLBACK_TRANSACTION();
                            return errorcol;
                        }
                    }
                }

                da.COMMIT_TRANSACTION();
            }
            catch (Exception ex)
            {
                if (da != null)
                {
                    da.ROLLBACK_TRANSACTION();
                }
                objErrorHandler.Type = ErrorConstant.strAboartType;
                objErrorHandler.MsgId = 0;
                objErrorHandler.Module = ErrorConstant.strInsertModule;
                objErrorHandler.ModulePart = ErrorConstant.strMasterModule;
                objErrorHandler.Message = ex.Message.ToString();
                objErrorHandler.RowNo = 0;
                objErrorHandler.FieldName = "";
                objErrorHandler.LogCode = "";
                lstErr.Add(objErrorHandler);
                errorcol.colErrorHandler.Add(objErrorHandler);
            }
            finally
            {
                if (da != null)
                {
                    da.Close_Connection();
                    da = null;
                }
            }
            return errorcol;
        }