public long GetCurrentSequence(Enums.FormType formtype, EMSDataModel context, int?month = null, int?year = null) { try { var current = 0L; var sequencePerForm = context.DOC_NUMBER_SEQ.Where(x => !x.FORM_TYPE_ID.HasValue).FirstOrDefault(); if (sequencePerForm == null) // Not present yet { var sequence = new DOC_NUMBER_SEQ() { DOC_NUMBER_SEQ_LAST = current, FORM_TYPE_ID = (int)formtype, MONTH = month, YEAR = year }; context.DOC_NUMBER_SEQ.Add(sequence); } else { var newSequence = (DOC_NUMBER_SEQ)context.Entry(sequencePerForm).GetDatabaseValues().ToObject(); current = sequencePerForm.DOC_NUMBER_SEQ_LAST; newSequence.DOC_NUMBER_SEQ_LAST = current + 1; context.Entry(sequencePerForm).CurrentValues.SetValues(newSequence); } context.SaveChanges(); return(current + 1); } catch (Exception ex) { throw ex; } }
private string GetGenerateNumberByFormType(Enums.FormType formType, out DOC_NUMBER_SEQ docSeqNumberToInsertOrUpdate) { var lastSeqData = _repository.Get(c => c.FORM_TYPE_ID == formType).FirstOrDefault(); if (lastSeqData == null) { //insert new record lastSeqData = new DOC_NUMBER_SEQ() { YEAR = 0, MONTH = 1, //have rellation with table MONTH so default will be 1 FORM_TYPE_ID = formType, DOC_NUMBER_SEQ_LAST = 1 }; } else { lastSeqData.DOC_NUMBER_SEQ_LAST += 1; } docSeqNumberToInsertOrUpdate = lastSeqData; var docNumber = lastSeqData.DOC_NUMBER_SEQ_LAST.ToString("0000000000"); return docNumber; }
public void GenerateNumber_WhenValidInput_GenerateDocumentNumber() { //arr var docNumberSeq = new DOC_NUMBER_SEQ() { MONTH = 1, YEAR = 2015, DOC_NUMBER_SEQ_LAST = 1 }; var t001k = new T001K() { T001 = new T001() { BUTXT = "Philip Morris Indonesia", BUTXT_ALIAS = "HMS-E", BUKRS = "3006" }, T001W = new T001W() { ZAIDM_EX_NPPBKC = new ZAIDM_EX_NPPBKC() { CITY_ALIAS = "SBY" } } }; var input = new GenerateDocNumberInput() { Month = 1, Year = 1, NppbkcId = "1" }; _repository.Get().ReturnsForAnyArgs(new List <DOC_NUMBER_SEQ>() { docNumberSeq }); _t001KReporRepository.Get().ReturnsForAnyArgs(new List <T001K> { t001k }); string expectedResult = (docNumberSeq.DOC_NUMBER_SEQ_LAST + 1).ToString("0000000000") + "/" + t001k.T001.BUTXT_ALIAS + "/" + t001k.T001W.ZAIDM_EX_NPPBKC.CITY_ALIAS + "/" + MonthHelper.ConvertToRomansNumeral(input.Month) + "/" + input.Year.ToString(); //act var result = _bll.GenerateNumber(input); //assert Assert.AreEqual(expectedResult, result); }
private string GetGenerateNumber(GenerateDocNumberInput input, out DOC_NUMBER_SEQ docSeqNumberToInsertOrUpdate) { var lastSeqData = _repository.Get(c => c.FORM_TYPE_ID != Enums.FormType.CK5).FirstOrDefault(); if (lastSeqData == null) { //insert new record lastSeqData = new DOC_NUMBER_SEQ() { YEAR = input.Year, MONTH = input.Month, DOC_NUMBER_SEQ_LAST = 1 }; } else { lastSeqData.DOC_NUMBER_SEQ_LAST += 1; } //var docNumber = lastSeqData.DOC_NUMBER_SEQ_LAST.ToString();//log : 2015-10-12 var docNumber = lastSeqData.DOC_NUMBER_SEQ_LAST.ToString("0000000000"); //log : 2015-1013 if (input.FormType != Enums.FormType.CK5) { //var t001Data = // _t001KReporRepository.Get( // c => // (c.T001W.NPPBKC_ID == input.NppbkcId || c.T001W.NPPBKC_IMPORT_ID == input.NppbkcId) && c.T001W.IS_MAIN_PLANT.HasValue && // c.T001W.IS_MAIN_PLANT.Value, null, "T001, T001W, T001W.ZAIDM_EX_NPPBKC").FirstOrDefault(); //2016-07-12 ////http://tp.voxteneo.co.id/entity/8347 var t001Data = _t001KReporRepository.Get( c => (c.T001W.NPPBKC_ID == input.NppbkcId || c.T001W.NPPBKC_IMPORT_ID == input.NppbkcId), null, "T001, T001W, T001W.ZAIDM_EX_NPPBKC").FirstOrDefault(); if (t001Data == null || t001Data.T001 == null) { throw new BLLException(ExceptionCodes.BLLExceptions.GenerateNumberCompanyDataHasNotSet); } if (string.IsNullOrEmpty(t001Data.T001.BUTXT_ALIAS)) { throw new BLLException(ExceptionCodes.BLLExceptions.GenerateNumberCompanyAliasHasNotSet); } if (t001Data.T001W == null || t001Data.T001W.ZAIDM_EX_NPPBKC == null) { throw new BLLException(ExceptionCodes.BLLExceptions.GenerateNumberPlantDataHasNotSet); } if (string.IsNullOrEmpty(t001Data.T001W.ZAIDM_EX_NPPBKC.CITY_ALIAS)) { throw new BLLException(ExceptionCodes.BLLExceptions.GenerateNumberCityAliasHasNotSet); } //generate number docNumber = docNumber + "/" + t001Data.T001.BUTXT_ALIAS + "/" + t001Data.T001W.ZAIDM_EX_NPPBKC.CITY_ALIAS + "/" + MonthHelper.ConvertToRomansNumeral(input.Month) + "/" + input.Year; } docSeqNumberToInsertOrUpdate = lastSeqData; return docNumber; }