예제 #1
0
    protected void ASPxGridView1_CustomCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewCustomCallbackEventArgs e)
    {
        ASPxTextBox  oidCtr   = this.ASPxGridView1.FindEditFormTemplateControl("txt_Oid") as ASPxTextBox;
        ASPxComboBox partyTo  = this.ASPxGridView1.FindEditFormTemplateControl("cmb_PartyTo") as ASPxComboBox;
        ASPxTextBox  docN     = this.ASPxGridView1.FindEditFormTemplateControl("txt_DocNo") as ASPxTextBox;
        ASPxComboBox docType  = this.ASPxGridView1.FindEditFormTemplateControl("cbo_DocType") as ASPxComboBox;
        ASPxMemo     remark   = this.ASPxGridView1.FindEditFormTemplateControl("txt_Remarks1") as ASPxMemo;
        ASPxComboBox termId   = this.ASPxGridView1.FindEditFormTemplateControl("txt_TermId") as ASPxComboBox;
        ASPxTextBox  docCurr  = this.ASPxGridView1.FindEditFormTemplateControl("txt_Currency") as ASPxTextBox;
        ASPxSpinEdit exRate   = this.ASPxGridView1.FindEditFormTemplateControl("txt_DocExRate") as ASPxSpinEdit;
        ASPxTextBox  acCode   = this.ASPxGridView1.FindEditFormTemplateControl("txt_AcCode") as ASPxTextBox;
        ASPxTextBox  acSource = this.ASPxGridView1.FindEditFormTemplateControl("txt_AcSource") as ASPxTextBox;

        ASPxTextBox  supplierBillNo   = this.ASPxGridView1.FindEditFormTemplateControl("txt_SupplierBillNo") as ASPxTextBox;
        ASPxDateEdit supplierBillDate = this.ASPxGridView1.FindEditFormTemplateControl("txt_SupplierBillDate") as ASPxDateEdit;
        ASPxDateEdit eta  = this.ASPxGridView1.FindEditFormTemplateControl("txt_Eta") as ASPxDateEdit;
        string       invN = docN.Text;

        C2.XAApPayable inv   = Manager.ORManager.GetObject(typeof(XAApPayable), SafeValue.SafeInt(oidCtr.Text, 0)) as XAApPayable;
        bool           isNew = false;

        if (invN.Length < 1)        // first insert invoice
        {
            if (supplierBillNo.Text.Trim().Length > 0)
            {
                string sqlCnt = string.Format("select DocNo from XaApPayable where SupplierBillNo='{0}' and PartyTo='{1}' and DocType='{2}' AND CancelInd='N'", supplierBillNo.Text.Trim(), SafeValue.SafeString(partyTo.Value, ""), docType.Value.ToString());
                string billNo = SafeValue.SafeString(C2.Manager.ORManager.ExecuteScalar(sqlCnt), "");
                if (billNo.Length > 0)
                {
                    throw new Exception(string.Format("Have this Supplier Bill No In {0}({1})", billNo, docType.Value.ToString()));
                    return;
                }
            }

            isNew = true;
            inv   = new XAApPayable();
            //invN = C2Setup.GetNextNo("AP-PAYABLE");
            string counterType = "AP-PAYABLE";
            invN = C2Setup.GetNextNo(inv.DocType, counterType, supplierBillDate.Date);

            inv.PartyTo     = SafeValue.SafeString(partyTo.Value, "");
            inv.MastType    = "";         //SafeValue.SafeString(docCate.Value, "");
            inv.DocType     = docType.Value.ToString();
            inv.DocNo       = invN.ToString();
            inv.Term        = termId.Text;
            inv.Description = remark.Text;
            inv.CurrencyId  = docCurr.Text.ToString();
            inv.ExRate      = SafeValue.SafeDecimal(exRate.Value, 1);
            if (inv.ExRate <= 0)
            {
                inv.ExRate = 1;
            }
            inv.AcCode   = EzshipHelper.GetAccApCode(inv.PartyTo, inv.CurrencyId);
            inv.AcSource = acSource.Text;

            inv.ExportInd  = "N";
            inv.UserId     = HttpContext.Current.User.Identity.Name;
            inv.EntryDate  = DateTime.Now;
            inv.CancelDate = new DateTime(1900, 1, 1);
            inv.CancelInd  = "N";

            inv.SupplierBillNo   = supplierBillNo.Text;
            inv.SupplierBillDate = SafeValue.SafeDate(supplierBillDate.Date, DateTime.Today);
            inv.DocDate          = inv.SupplierBillDate;
            inv.ChqNo            = "";
            inv.ChqDate          = new DateTime(1900, 1, 1);

            inv.MastRefNo = "0";
            inv.JobRefNo  = "0";
            inv.MastType  = "";
            inv.Eta       = eta.Date;
            string[] currentPeriod = EzshipHelper.GetAccPeriod(inv.DocDate);

            inv.AcYear   = SafeValue.SafeInt(currentPeriod[1], inv.DocDate.Year);
            inv.AcPeriod = SafeValue.SafeInt(currentPeriod[0], inv.DocDate.Month);
            try
            {
                C2.Manager.ORManager.StartTracking(inv, Wilson.ORMapper.InitialState.Inserted);
                C2.Manager.ORManager.PersistChanges(inv);
                //C2Setup.SetNextNo("AP-PAYABLE", invN);
                C2Setup.SetNextNo("", counterType, invN, inv.DocDate);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message + ex.StackTrace);
            }
        }
        else
        {
            if (supplierBillNo.Text.Trim().Length > 0)
            {
                string sqlCnt = string.Format("select DocNo from XaApPayable where SupplierBillNo='{0}' and PartyTo='{1}' and DocType='{2}' and DocNo!='{3}' AND CancelInd='N'", supplierBillNo.Text.Trim(), SafeValue.SafeString(partyTo.Value, ""), docType.Value.ToString(), inv.DocNo);
                string billNo = SafeValue.SafeString(C2.Manager.ORManager.ExecuteScalar(sqlCnt), "");
                if (billNo.Length > 0)
                {
                    throw new Exception(string.Format("Have this Supplier Bill No In {0}({1})", billNo, docType.Value.ToString()));
                    return;
                }
            }

            inv.PartyTo     = SafeValue.SafeString(partyTo.Value, "");
            inv.Term        = termId.Text;
            inv.Description = remark.Text;
            inv.CurrencyId  = docCurr.Text.ToString();
            inv.ExRate      = SafeValue.SafeDecimal(exRate.Value, 1);
            if (inv.ExRate <= 0)
            {
                inv.ExRate = 1;
            }
            inv.AcCode   = EzshipHelper.GetAccApCode(inv.PartyTo, inv.CurrencyId);
            inv.AcSource = acSource.Text;

            inv.SupplierBillNo   = supplierBillNo.Text;
            inv.SupplierBillDate = SafeValue.SafeDate(supplierBillDate.Date, DateTime.Now);
            inv.DocDate          = inv.SupplierBillDate;
            inv.Eta = eta.Date;
            string[] currentPeriod = EzshipHelper.GetAccPeriod(inv.DocDate);

            inv.AcYear   = SafeValue.SafeInt(currentPeriod[1], inv.DocDate.Year);
            inv.AcPeriod = SafeValue.SafeInt(currentPeriod[0], inv.DocDate.Month);
            try
            {
                Manager.ORManager.StartTracking(inv, InitialState.Updated);
                Manager.ORManager.PersistChanges(inv);
                UpdateMaster(inv.SequenceId.ToString());
            }
            catch
            {
            }
        }

        Session["PvEditWhere"]            = "SequenceId=" + inv.SequenceId;
        this.dsApPayable.FilterExpression = Session["PvEditWhere"].ToString();
        if (isNew)
        {
            if (this.ASPxGridView1.GetRow(0) != null)
            {
                this.ASPxGridView1.StartEdit(0);
            }
        }
    }
예제 #2
0
    protected void ASPxGridView1_CustomCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewCustomCallbackEventArgs e)
    {
        ASPxTextBox  oidCtr         = this.ASPxGridView1.FindEditFormTemplateControl("txt_Oid") as ASPxTextBox;
        ASPxComboBox partyTo        = this.ASPxGridView1.FindEditFormTemplateControl("cmb_PartyTo") as ASPxComboBox;
        ASPxTextBox  otherPartyName = this.ASPxGridView1.FindEditFormTemplateControl("txt_OtherPartyName") as ASPxTextBox;
        ASPxTextBox  docN           = this.ASPxGridView1.FindEditFormTemplateControl("txt_DocNo") as ASPxTextBox;
        ASPxComboBox docCate        = this.ASPxGridView1.FindEditFormTemplateControl("cbo_DocCate") as ASPxComboBox;
        ASPxComboBox docType        = this.ASPxGridView1.FindEditFormTemplateControl("cbo_DocType") as ASPxComboBox;
        ASPxDateEdit docDate        = this.ASPxGridView1.FindEditFormTemplateControl("txt_DocDt") as ASPxDateEdit;
        ASPxMemo     remark         = this.ASPxGridView1.FindEditFormTemplateControl("txt_Remarks1") as ASPxMemo;
        ASPxComboBox termId         = this.ASPxGridView1.FindEditFormTemplateControl("txt_TermId") as ASPxComboBox;
        ASPxTextBox  docCurr        = this.ASPxGridView1.FindEditFormTemplateControl("txt_Currency") as ASPxTextBox;
        ASPxSpinEdit exRate         = this.ASPxGridView1.FindEditFormTemplateControl("txt_DocExRate") as ASPxSpinEdit;
        ASPxTextBox  acCode         = this.ASPxGridView1.FindEditFormTemplateControl("txt_AcCode") as ASPxTextBox;
        ASPxComboBox acSource       = this.ASPxGridView1.FindEditFormTemplateControl("txt_AcSource") as ASPxComboBox;


        ASPxTextBox  supplierBillNo   = this.ASPxGridView1.FindEditFormTemplateControl("txt_SupplierBillNo") as ASPxTextBox;
        ASPxDateEdit supplierBillDate = this.ASPxGridView1.FindEditFormTemplateControl("txt_SupplierBillDate") as ASPxDateEdit;
        ASPxTextBox  chqNo            = this.ASPxGridView1.FindEditFormTemplateControl("txt_ChqNo") as ASPxTextBox;
        //ASPxDateEdit chqDate = this.ASPxGridView1.FindEditFormTemplateControl("txt_ChqDate") as ASPxDateEdit;

        string invN = docN.Text;

        C2.XAApPayable inv = Manager.ORManager.GetObject(typeof(XAApPayable), SafeValue.SafeInt(oidCtr.Text, 0)) as XAApPayable;
        if (null == inv)// first insert invoice
        {
            inv                = new XAApPayable();
            invN               = C2Setup.GetNextNo("AP-Voucher");
            inv.PartyTo        = SafeValue.SafeString(partyTo.Value, "");
            inv.OtherPartyName = otherPartyName.Text;
            //inv.MastType = SafeValue.SafeString(docCate.Value, "");
            inv.DocType     = docType.Value.ToString();
            inv.DocNo       = invN.ToString();
            inv.DocDate     = docDate.Date;
            inv.Term        = termId.Text;
            inv.Description = remark.Text;
            inv.CurrencyId  = docCurr.Text.ToString();
            inv.ExRate      = SafeValue.SafeDecimal(exRate.Value, 1);
            if (inv.ExRate <= 0)
            {
                inv.ExRate = 1;
            }
            inv.AcCode   = acCode.Text;
            inv.AcSource = acSource.Text;

            inv.SupplierBillNo   = supplierBillNo.Text;
            inv.SupplierBillDate = new DateTime(1900, 1, 1);
            inv.ChqNo            = chqNo.Text;
            inv.ChqDate          = supplierBillDate.Date;

            inv.ExportInd  = "N";
            inv.UserId     = HttpContext.Current.User.Identity.Name;
            inv.EntryDate  = DateTime.Now;
            inv.CancelDate = new DateTime(1900, 1, 1);
            inv.CancelInd  = "N";

            inv.MastRefNo = "0";
            inv.JobRefNo  = "0";
            inv.MastType  = "";

            DateTime d = inv.DocDate;
            if (inv.ChqDate > new DateTime(2000, 1, 1))
            {
                d = inv.ChqDate;
            }
            string[] currentPeriod = EzshipHelper.GetAccPeriod(d);
            inv.AcYear   = SafeValue.SafeInt(currentPeriod[1], inv.DocDate.Year);
            inv.AcPeriod = SafeValue.SafeInt(currentPeriod[0], inv.DocDate.Month);
            try
            {
                C2.Manager.ORManager.StartTracking(inv, Wilson.ORMapper.InitialState.Inserted);
                C2.Manager.ORManager.PersistChanges(inv);
                C2Setup.SetNextNo("AP-Voucher", invN);
            }
            catch
            {
            }
        }
        else
        {
            inv.PartyTo        = SafeValue.SafeString(partyTo.Value, "");
            inv.OtherPartyName = otherPartyName.Text;
            inv.Term           = termId.Text;
            inv.Description    = remark.Text;
            inv.CurrencyId     = docCurr.Text.ToString();
            inv.ExRate         = SafeValue.SafeDecimal(exRate.Value, 1);
            if (inv.ExRate <= 0)
            {
                inv.ExRate = 1;
            }
            inv.AcCode  = acCode.Text;
            inv.DocDate = docDate.Date;

            inv.AcSource       = acSource.Text;
            inv.ChqNo          = chqNo.Text;
            inv.SupplierBillNo = supplierBillNo.Text;
            inv.ChqDate        = supplierBillDate.Date;
            DateTime d = inv.DocDate;
            if (inv.ChqDate > new DateTime(2000, 1, 1))
            {
                d = inv.ChqDate;
            }
            string[] currentPeriod = EzshipHelper.GetAccPeriod(d);
            inv.AcYear   = SafeValue.SafeInt(currentPeriod[1], inv.DocDate.Year);
            inv.AcPeriod = SafeValue.SafeInt(currentPeriod[0], inv.DocDate.Month);
            try
            {
                Manager.ORManager.StartTracking(inv, InitialState.Updated);
                Manager.ORManager.PersistChanges(inv);
                UpdateMaster(inv.SequenceId.ToString());
            }
            catch
            {
            }
        }
        Session["VoEditWhere"]            = "SequenceId=" + inv.SequenceId;
        this.dsApPayable.FilterExpression = Session["VoEditWhere"].ToString();
        if (this.ASPxGridView1.GetRow(0) != null)
        {
            this.ASPxGridView1.StartEdit(0);
        }
    }
    protected void grid_WhPo_CustomDataCallback(object sender, ASPxGridViewCustomDataCallbackEventArgs e)
    {
        string          s           = e.Parameters;
        ASPxPageControl pageControl = this.grid_WhPo.FindEditFormTemplateControl("pageControl") as ASPxPageControl;
        ASPxTextBox     txt_Id      = pageControl.FindControl("txt_Id") as ASPxTextBox;
        ASPxTextBox     poNo        = pageControl.FindControl("txt_PoNo") as ASPxTextBox;
        string          sql         = "select Count(*) from wh_PODet where PoNo='" + SafeValue.SafeString(poNo.Text) + "' and (StatusCode='Draft' or StatusCode='Waiting')";
        int             cnt         = SafeValue.SafeInt(C2.Manager.ORManager.ExecuteScalar(sql), 0);

        if (cnt == 0)
        {
            if (s == "CloseJob")
            {
                #region close job
                ASPxLabel closeIndStr = pageControl.FindControl("lb_JobStatus") as ASPxLabel;
                sql = "select StatusCode from wh_PO where PoNo='" + poNo.Text + "'";
                string closeInd = SafeValue.SafeString(C2.Manager.ORManager.ExecuteScalar(sql), "USE");//
                if (closeInd == "CLS")
                {
                    sql = string.Format("update wh_PO set StatusCode='USE',UpdateBy='{1}',UpdateDateTime='{2}' where PoNo='{0}'", poNo.Text, EzshipHelper.GetUserName(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                    int res = Manager.ORManager.ExecuteCommand(sql);
                    if (res > 0)
                    {
                        e.Result = "Success";
                    }
                    else
                    {
                        e.Result = "Fail";
                    }
                }
                else
                {
                    sql = string.Format("update wh_PO set StatusCode='CLS',UpdateBy='{1}',UpdateDateTime='{2}' where PoNo='{0}'", poNo.Text, EzshipHelper.GetUserName(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));

                    int res = Manager.ORManager.ExecuteCommand(sql);
                    if (res > 0)
                    {
                        e.Result = "Success";
                    }
                    else
                    {
                        e.Result = "Fail";
                    }
                }
                #endregion
            }
        }
        else
        {
            e.Result = "NotClose";
        }
        if (s == "Void")
        {
            #region void master
            string sql_cnt = string.Format("select count(SequenceId) from XAArInvoiceDet where MastType='WH' and MastRefNo='{0}'", poNo.Text);
            cnt = SafeValue.SafeInt(C2.Manager.ORManager.ExecuteScalar(sql_cnt), 0);
            if (cnt > 0)
            {
                e.Result = "Billing";
                return;
            }
            ASPxLabel closeIndStr = pageControl.FindControl("lb_JobStatus") as ASPxLabel;
            sql = "select StatusCode from wh_PO where PoNo='" + poNo.Text + "'";
            string closeInd = SafeValue.SafeString(C2.Manager.ORManager.ExecuteScalar(sql), "N");// closeIndStr.Text;
            if (closeInd == "CNL")
            {
                sql = string.Format("update wh_PO set StatusCode='USE',UpdateBy='{1}',UpdateDateTime='{2}' where PoNo='{0}'", poNo.Text, EzshipHelper.GetUserName(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                int res = Manager.ORManager.ExecuteCommand(sql);
                if (res > 0)
                {
                    e.Result = "Success";
                }
                else
                {
                    e.Result = "Fail";
                }
            }
            else
            {
                sql = string.Format("update wh_PO set StatusCode='CNL',UpdateBy='{1}',UpdateDateTime='{2}' where PoNo='{0}'", poNo.Text, EzshipHelper.GetUserName(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));

                int res = Manager.ORManager.ExecuteCommand(sql);
                if (res > 0)
                {
                    e.Result = "Success";
                }
                else
                {
                    e.Result = "Fail";
                }
            }
            #endregion
        }
        if (s == "Invoice")
        {
            #region Ap Invoice
            sql = string.Format(@"select count(*) from XAApPayable where MastRefNo='{0}'", poNo.Text);
            int docId = 0;
            cnt = SafeValue.SafeInt(C2.Manager.ORManager.ExecuteScalar(sql), 0);
            if (cnt == 0)
            {
                ASPxTextBox    partyTo = pageControl.FindControl("txt_PartyRefNo") as ASPxTextBox;
                ASPxDateEdit   poDate  = pageControl.FindControl("txt_PoDate") as ASPxDateEdit;
                string         invN    = "";
                C2.XAApPayable inv     = null;
                bool           isNew   = false;
                if (invN.Length < 1)// first insert invoice
                {
                    isNew = true;
                    inv   = new XAApPayable();
                    inv.SupplierBillDate = SafeValue.SafeDate(poDate.Date, DateTime.Today);
                    inv.DocDate          = inv.SupplierBillDate;

                    inv.DocType     = "PL";
                    invN            = C2Setup.GetNextNo(inv.DocType, "AP-PAYABLE", inv.DocDate);
                    inv.PartyTo     = SafeValue.SafeString(partyTo.Value, "");
                    inv.DocNo       = invN.ToString();
                    inv.Term        = "CASH";
                    inv.Description = "";
                    inv.CurrencyId  = System.Configuration.ConfigurationManager.AppSettings["Currency"];
                    inv.ExRate      = 1;
                    inv.AcCode      = EzshipHelper.GetAccApCode(inv.PartyTo, inv.CurrencyId);
                    inv.AcSource    = "CR";

                    inv.ExportInd  = "N";
                    inv.UserId     = HttpContext.Current.User.Identity.Name;
                    inv.EntryDate  = DateTime.Now;
                    inv.CancelDate = new DateTime(1900, 1, 1);
                    inv.CancelInd  = "N";

                    inv.ChqNo   = "";
                    inv.ChqDate = new DateTime(1900, 1, 1);

                    inv.MastRefNo = poNo.Text;
                    inv.JobRefNo  = "0";
                    inv.MastType  = "WH";
                    inv.Eta       = DateTime.Now;
                    string[] currentPeriod = EzshipHelper.GetAccPeriod(inv.DocDate);

                    inv.AcYear   = SafeValue.SafeInt(currentPeriod[1], inv.DocDate.Year);
                    inv.AcPeriod = SafeValue.SafeInt(currentPeriod[0], inv.DocDate.Month);
                    try
                    {
                        C2.Manager.ORManager.StartTracking(inv, Wilson.ORMapper.InitialState.Inserted);
                        C2.Manager.ORManager.PersistChanges(inv);
                        C2Setup.SetNextNo(inv.DocType, "AP-PAYABLE", invN, inv.DocDate);
                        docId    = inv.SequenceId;
                        e.Result = "Success";
                    }
                    catch
                    {
                    }
                }
                sql = "select * from wh_PODet where PoNo='" + poNo.Text + "'";
                DataTable dt = C2.Manager.ORManager.GetDataSet(sql).Tables[0];
                SavePayableDet(dt, inv.DocNo, docId);
            }
            else
            {
                DataTable         tab = C2.Manager.ORManager.GetDataSet(string.Format(@"select Id from wh_PODet where PoNo='{0}'", poNo.Text)).Tables[0];
                int               id  = 0;
                C2.XAApPayableDet inv = null;
                if (tab.Rows.Count > 0)
                {
                    for (int i = 0; i < tab.Rows.Count; i++)
                    {
                        id = SafeValue.SafeInt(tab.Rows[i]["Id"], 0);
                        Wilson.ORMapper.OPathQuery query = new Wilson.ORMapper.OPathQuery(typeof(XAApPayableDet), "POlineId='" + id + "'");
                        inv = C2.Manager.ORManager.GetObject(query) as XAApPayableDet;
                        if (inv == null)
                        {
                            SavePayableDet(tab, inv.DocNo, docId);
                        }
                    }
                }
                e.Result = "Success";
            }
            #endregion
        }
    }