public bool DeleteS35MenuSanXuat(S35MenuSanXuat data)
        {
            SqlParameter[] sqlParameters = new SqlParameter[]
            {
                new SqlParameter("@S35MenuSXID", data.S35MenuSXID),
                new SqlParameter("@CompanyID", CommonInfo.CompanyInfo.CompanyID),
                new SqlParameter("@UpdateUser", UserInfo.UserID)
            };

            this.Context.ExecuteDataFromProcedure("S35MenuSanXuatDelete", sqlParameters);

            return(true);
        }
        public bool UpdateS35MenuSanXuat(S35MenuSanXuat data)
        {
            SqlParameter[] sqlParameters = new SqlParameter[]
            {
                new SqlParameter("@S35MenuSXID", data.S35MenuSXID),
                new SqlParameter("@CompanyID", CommonInfo.CompanyInfo.CompanyID),
                new SqlParameter("@InvoiceS35ID", data.InvoiceS35ID),
                new SqlParameter("@VouchersID", data.VouchersID),
                new SqlParameter("@InvoiceDate", data.InvoiceDate),
                new SqlParameter("@CustomerID", data.CustomerID),
                new SqlParameter("@MST", data.MST),
                new SqlParameter("@Description", data.Description),
                new SqlParameter("@InvoiceFormNo", data.InvoiceFormNo),
                new SqlParameter("@FormNo", data.FormNo),
                new SqlParameter("@SerialNo", data.SerialNo),
                new SqlParameter("@InvoiceNo", data.InvoiceNo),
                new SqlParameter("@InvoiceType", data.InvoiceType),
                new SqlParameter("@Amount", data.Amount),
                new SqlParameter("@VAT", data.VAT),
                new SqlParameter("@VATAmount", data.VATAmount),
                new SqlParameter("@Discounts", data.Discounts),
                new SqlParameter("@PaymentType", data.PaymentType),
                new SqlParameter("@S35Type", data.S35Type),
                new SqlParameter("@InvoiceAccountID", data.InvoiceAccountID),
                new SqlParameter("@InvoiceAccountDetailID", data.InvoiceAccountDetailID),
                new SqlParameter("@InvoiceVATAccountID", data.InvoiceVATAccountID),
                new SqlParameter("@CustomerName", data.CustomerName),
                new SqlParameter("@StatusLienKet", data.StatusLienKet),
                new SqlParameter("@VoucherIDN152", data.VoucherIDN152),
                new SqlParameter("@VoucherIDX152", data.VoucherIDX152),
                new SqlParameter("@VoucherIDN1551", data.VoucherIDN1551),
                new SqlParameter("@VoucherIDX1551", data.VoucherIDX1551),
                new SqlParameter("@VoucherIDN1561", data.VoucherIDN1561),
                new SqlParameter("@VoucherIDX1561", data.VoucherIDX1561),
                new SqlParameter("@UpdateUser", UserInfo.UserID)
            };

            this.Context.ExecuteDataFromProcedure("S35MenuSanXuatUpdate", sqlParameters);

            return(true);
        }
        public bool SaveS35MenuSanXuatFull(S35MenuSanXuat data, List <S35MenuDetailSanXuat> detailData)
        {
            using (DbContextTransaction transaction = Context.Database.BeginTransaction())
            {
                try
                {
                    long seq       = S35MenuSanXuatDAO.GetS35MenuSanXuatSEQ();
                    long seqdetail = S35MenuDetailSanXuatDAO.GetS35MenuDetailSanXuatSEQ();
                    switch (data.Status)
                    {
                    // Thêm S35 mới thì sẽ thực hiện thêm Detail mới nếu ListDetail có giá trị
                    case ModifyMode.Insert:
                        seq++;
                        data.S35MenuSXID = GenerateID.S35MenuSXID(seq);
                        this.S35MenuSanXuatDAO.InsertS35MenuSanXuat(data);
                        data.Status = ModifyMode.None;
                        if (detailData.Count > 0)
                        {
                            //thêm S35MenuDetail
                            #region insert S35MenuDetail
                            foreach (S35MenuDetailSanXuat S35MenuDetail in detailData)
                            {
                                if (string.IsNullOrEmpty(S35MenuDetail.S35MenuDetailSXID))
                                {
                                    seqdetail++;
                                    S35MenuDetail.S35MenuDetailSXID = GenerateID.S35MenuDetailSXID(seqdetail);
                                    S35MenuDetail.S35MenuSXID       = data.S35MenuSXID;
                                    S35MenuDetail.CompanyID         = data.CompanyID;
                                    this.S35MenuDetailSanXuatDAO.InsertS35MenuDetailSanXuat(S35MenuDetail);
                                    S35MenuDetail.Status = ModifyMode.None;
                                }
                            }
                            #endregion insert S35MenuDetail
                        }
                        break;

                    //Khi update S35 thì sẽ thực hiện update S35, Thêm mới hoặc update S35 Detail
                    case ModifyMode.Update:
                        this.S35MenuSanXuatDAO.UpdateS35MenuSanXuat(data);
                        data.Status = ModifyMode.None;
                        if (detailData.Count > 0)
                        {
                            foreach (S35MenuDetailSanXuat S35MenuDetail in detailData)
                            {
                                //thực hiện nhiệm vụ update với các chi tiết S35 đã thuộc S35
                                if (S35MenuDetail.Status == ModifyMode.Update)
                                {
                                    #region Update dataDetail
                                    if (!string.IsNullOrEmpty(S35MenuDetail.S35MenuDetailSXID))
                                    {
                                        this.S35MenuDetailSanXuatDAO.UpdateS35MenuDetailSanXuat(S35MenuDetail);
                                        S35MenuDetail.Status = ModifyMode.None;
                                    }
                                    #endregion Update dataDetail
                                }
                                else if (S35MenuDetail.Status == ModifyMode.Insert)
                                {
                                    //thêm mới S35MenuDetail vào S35
                                    #region insert S35MenuDetail khi thêm detail mới cho S35 đã có sẵn
                                    if (string.IsNullOrEmpty(S35MenuDetail.S35MenuDetailSXID))
                                    {
                                        seqdetail++;
                                        S35MenuDetail.S35MenuDetailSXID = GenerateID.S35MenuDetailSXID(seqdetail);
                                        S35MenuDetail.S35MenuSXID       = data.S35MenuSXID;
                                        S35MenuDetail.CompanyID         = data.CompanyID;
                                        this.S35MenuDetailSanXuatDAO.InsertS35MenuDetailSanXuat(S35MenuDetail);
                                        S35MenuDetail.Status = ModifyMode.None;
                                    }
                                    #endregion insert S35MenuDetail khi thêm detail mới cho S35 đã có sẵn
                                }
                            }
                        }
                        break;

                    // Delete
                    case ModifyMode.Delete:
                        this.S35MenuSanXuatDAO.DeleteS35MenuSanXuat(data);
                        //Khi delete S35Menu thì DB sẽ tự delete S35MenuDetail
                        break;

                    default:
                        //Khi S35Menu không thực thêm, xóa, sửa thì có thể sẽ có thay đổi giá trị S35Detail
                        if (detailData.Count > 0)
                        {
                            foreach (S35MenuDetailSanXuat S35MenuDetail in detailData)
                            {
                                //thực hiện nhiệm vụ update với các chi tiết S35 đã thuộc S35
                                if (S35MenuDetail.Status == ModifyMode.Update)
                                {
                                    #region Update dataDetail
                                    if (!string.IsNullOrEmpty(S35MenuDetail.S35MenuDetailSXID))
                                    {
                                        this.S35MenuDetailSanXuatDAO.UpdateS35MenuDetailSanXuat(S35MenuDetail);
                                        S35MenuDetail.Status = ModifyMode.None;
                                    }
                                    #endregion Update dataDetail
                                }
                                else if (S35MenuDetail.Status == ModifyMode.Insert)
                                {
                                    //thêm mới S35MenuDetail vào S35
                                    #region insert S35MenuDetail khi thêm detail mới cho S35 đã có sẵn
                                    if (string.IsNullOrEmpty(S35MenuDetail.S35MenuDetailSXID))
                                    {
                                        seqdetail++;
                                        S35MenuDetail.S35MenuDetailSXID = GenerateID.S35MenuDetailSXID(seqdetail);
                                        S35MenuDetail.S35MenuSXID       = data.S35MenuSXID;
                                        S35MenuDetail.CompanyID         = data.CompanyID;

                                        this.S35MenuDetailSanXuatDAO.InsertS35MenuDetailSanXuat(S35MenuDetail);
                                        S35MenuDetail.Status = ModifyMode.None;
                                    }
                                    #endregion insert S35MenuDetail khi thêm detail mới cho S35 đã có sẵn
                                }
                            }
                        }
                        break;
                    }
                    transaction.Commit();
                    return(true);
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    BSLog.Logger.Error(ex.Message);
                    return(false);
                }
            }
        }
 public bool SaveS35MenuSanXuatFull(S35MenuSanXuat dataList, List <S35MenuDetailSanXuat> detailList)
 {
     return(this.S35MenuSanXuatLogic.SaveS35MenuSanXuatFull(dataList, detailList));
 }