示例#1
0
        ///<summary>
        ///Purpose   : Generate contract doc OCC
        ///Parameters: strCode = FN0000000017
        ///            strOCC = AA
        ///Expected  : Return contract doc occ that is 02.
        ///</summary>
        public string Case2()
        {
            IContractDocumentHandler target = ServiceContainer.GetService <IContractDocumentHandler>() as IContractDocumentHandler;
            string strCode  = "FN0000000017";
            string strOCC   = "AA";
            string expected = "02";
            string actual;

            try
            {
                actual = target.GenerateDocOCC(strCode, strOCC);
            }
            catch (ApplicationErrorException ex)
            {
                actual = ex.ErrorResult.Message.Code;
            }
            catch (Exception ex)
            {
                actual = ex.StackTrace;
            }

            return(string.Format(RESULT_FORMAT, 2, expected, actual, CompareResult_String(expected, actual)));
        }
        /// <summary>
        /// Register data
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        private bool CTS190_Register(dtContractDocHeader dt)
        {
            List <tbt_ContractDocument> lsInsert = null; //Add by Jutarat A. on 12032013
            List <tbt_ContractDocument> dtUpdate = null; //Add by Jutarat A. on 12032013

            try
            {
                IContractDocumentHandler handlerCD = ServiceContainer.GetService <IContractDocumentHandler>() as IContractDocumentHandler;

                if (dt.IsCreateFlag)
                {
                    // **tt** Create dt tbt_ContractDocument and update some field follow DDS (in case create)
                    tbt_ContractDocument dtInsert = new tbt_ContractDocument();

                    dtInsert.ContractCode        = dt.ContractCode;
                    dtInsert.OCC                 = dt.OCC;
                    dtInsert.DocumentCode        = dt.DocumentCode;
                    dtInsert.ContractOfficeCode  = dt.ContractOfficeCode;
                    dtInsert.OperationOfficeCode = dt.OperationOfficeCode;
                    dtInsert.DocStatus           = dt.DocStatus;
                    dtInsert.DocAuditResult      = dt.DocAuditResult;
                    dtInsert.CollectDocDate      = dt.CollectDocDate;
                    dtInsert.IssuedDate          = dt.IssuedDate;



                    // Generate new Doc OCC
                    string newDocOCC = "";
                    newDocOCC = handlerCD.GenerateDocOCC(dt.ContractCode, dt.OCC);

                    dtInsert.ContractDocOCC = newDocOCC;
                    dtInsert.DocNo          = string.Format("{0}-{1}-{2}", dt.ContractCode, dt.OCC, newDocOCC);

                    // Keep back
                    dt.DocNo = string.Format("{0}-{1}-{2}", dt.ContractCode, dt.OCC, newDocOCC);

                    //List<tbt_ContractDocument> lsInsert = new List<tbt_ContractDocument>();
                    lsInsert = new List <tbt_ContractDocument>(); //Modify by Jutarat A. on 12032013
                    lsInsert.Add(dtInsert);

                    // Insert : InsertTbt_ContractDocument **
                    handlerCD.InsertTbt_ContractDocument(lsInsert);

                    // Call UpdateContractBasic
                    CTS190_UpdateContractBasicData(lsInsert);
                }
                else
                {
                    // **tt**  Get dt tbt_ContractDocument  from handler and update some field follow DDS (in case update)
                    //List<tbt_ContractDocument> dtUpdate = new List<tbt_ContractDocument>();
                    dtUpdate = new List <tbt_ContractDocument>(); //Modify by Jutarat A. on 12032013

                    if (dt.IsContractFlag.Value == true)
                    {
                        dtUpdate = handlerCD.GetContractDocHeaderByContractCode(dt.ContractCode, dt.OCC, dt.ContractDocOCC);
                    }
                    else
                    {
                        dtUpdate = handlerCD.GetContractDocHeaderByQuotationCode(dt.QuotationTargetCode, dt.Alphabet, dt.ContractDocOCC);
                    }

                    if (dtUpdate.Count == 0)
                    {
                        return(false);
                    }


                    for (int i = 0; i < dtUpdate.Count; i++)
                    {
                        dtUpdate[i].DocStatus      = dt.DocStatus;
                        dtUpdate[i].DocAuditResult = dt.DocAuditResult;
                        dtUpdate[i].CollectDocDate = dt.CollectDocDate;
                    }

                    if (dtUpdate.Count > 1)
                    {
                        dtUpdate.RemoveRange(1, dtUpdate.Count - 1);
                    }

                    // Keep back
                    dt.DocNo = dtUpdate[0].DocNo;



                    // Set Not user status
                    int isUpdated = handlerCD.SetNotUsedStatus(dtUpdate[0].ContractCode, dtUpdate[0].OCC, ContractDocStatus.C_CONTRACT_DOC_STATUS_NOT_USED, ContractDocStatus.C_CONTRACT_DOC_STATUS_COLLECTED, false, null);

                    // Update : UpdateTbt_ContractDocument **
                    List <tbt_ContractDocument> tt_Updated = handlerCD.UpdateTbt_ContractDocument(dtUpdate);

                    // Call UpdateContractBasic
                    CTS190_UpdateContractBasicData(dtUpdate);

                    // Update RentalSecurityBasic
                    CTS190_UpdateRentalSecurityBasic(dtUpdate);

                    // Update SalesBasic
                    CTS190_UpdateSaleBasic(dtUpdate);

                    // Update about PO (Recursive)
                    if (dt.DocumentCode == DocumentCode.C_DOCUMENT_CODE_CONTRACT_EN || dt.DocumentCode == DocumentCode.C_DOCUMENT_CODE_CONTRACT_TH)
                    {
                        List <tbt_ContractDocument> dtContractDoc = handlerCD.GetContractDocHeaderByContractCode(dt.ContractCode, ParticularOCC.C_PARTICULAR_OCC_PO, null);

                        if (dtContractDoc.Count == 0)
                        {
                            dtContractDocHeader dtPO = new dtContractDocHeader();
                            dtPO.IsCreateFlag   = true;
                            dtPO.IsContractFlag = false;

                            dtPO.ContractCode        = dtUpdate[0].ContractCode;
                            dtPO.OCC                 = ParticularOCC.C_PARTICULAR_OCC_PO;
                            dtPO.DocumentCode        = DocumentCode.C_DOCUMENT_CODE_PO;
                            dtPO.ContractOfficeCode  = dtUpdate[0].ContractOfficeCode;
                            dtPO.OperationOfficeCode = dtUpdate[0].OperationOfficeCode;
                            dtPO.IssuedDate          = CommonUtil.dsTransData.dtOperationData.ProcessDateTime;
                            dtPO.DocStatus           = ContractDocStatus.C_CONTRACT_DOC_STATUS_ISSUED;
                            dtPO.DocAuditResult      = DocAuditResult.C_DOC_AUDIT_RESULT_NO_NEED_TO_RECEIVE;

                            // Recursive
                            CTS190_Register(dtPO);
                        }
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                //Add by Jutarat A. on 12032013
                string source    = "SIMS web application";
                string logName   = "(CTS190)Application";
                string logDetail = ex.ToString();

                if (!EventLog.SourceExists(source))
                {
                    EventLog.CreateEventSource(source, logName);
                }

                if (lsInsert != null && lsInsert.Count > 0)
                {
                    logDetail = String.Format("{0} : {1}", ex.ToString(), CommonUtil.ConvertToXml_Store <tbt_ContractDocument>(lsInsert));
                }
                else if (dtUpdate != null && dtUpdate.Count > 0)
                {
                    logDetail = String.Format("{0} : {1}", ex.ToString(), CommonUtil.ConvertToXml_Store <tbt_ContractDocument>(dtUpdate));
                }

                EventLog objLog = new EventLog();
                objLog.Source = source;
                objLog.Log    = logName;
                objLog.WriteEntry(logDetail, EventLogEntryType.Error);
                //End Add

                throw ex;
            }
        }