public static bool isValidCandidateForField(string field, string candidate) { int fieldIndex = getIndexForField(field); switch (fieldIndex) { case 3: //Security Code return(MasterListManager.isExistSecurityCode(candidate)); case 5: //Contract Type return(ContractNote.isEqual(candidate, "SELL") || ContractNote.isEqual(candidate, "BUY")); } if (fieldType[fieldIndex] == 'C') { return(ContractNote.getValidationOfCurrency(ContractNote.getAdjustedCurrency(candidate))); } if (fieldType[fieldIndex] == 'D') { return(ContractNote.getValidationOfDate(ContractNote.getAdjustedDate(candidate))); } if (fieldType[fieldIndex] == 'M') { if (candidate.Length >= 4 && candidate[candidate.Length - 4] == '-') { candidate = candidate.Remove(candidate.Length - 4, 1).Substring(1); } return(candidate.Length > 1 && ContractNote.getValidationOfNumber(candidate.Substring(1))); } return(candidate.Length > 0); }
public ContractNoteItemManager(ContractNote contractNote) { masterListManager = new MasterListManager(); this.contractNote = contractNote; for (int i = 0; i < FIELD_COUNT; i++) { contractNoteItems[i] = new ContractNoteItem(fields[i]); } clear(); }
public static int getIndexForField(string field) { for (int i = 0; i < FIELD_COUNT; i++) { if (ContractNote.isEqual(field, fields[i])) { return(i); } } return(-1); }
public bool fillOutContractNoteItems(ContractNote contractNote, List <Word> wordList) { if (!isInstance(wordList)) { return(false); } for (int i = 0; i < contractNoteTemplateFields.Count; i++) { contractNoteTemplateFields[i].fillOutContractNoteItems(contractNote, wordList); } return(true); }
public void fillOutContractNoteItems(ContractNote contractNote, List <Word> wordList) { currentFieldName = fieldName; for (int i = 0; i < contractNoteTemplateFieldCandidates.Count; i++) { string candidate = contractNoteTemplateFieldCandidates[i].getCandidate(wordList); if (candidate == null) { continue; } contractNote.contractNoteItemManager.setValueForField(fieldName, candidate); return; } }
public void searchSecurityInfo(string code, string name, out string securityCode, out string securityName) { name = getFilteredName(name); for (int i = 0; i < count; i++) { if (ContractNote.isEqual(securityNameList[i], name, 0.95)) { securityCode = securityCodeList[i]; securityName = securityNameList[i]; return; } } securityCode = getFilteredCode(code); securityName = name; }
bool isInstance(List <Word> wordList) { for (int i = 0; i < wordList.Count; i++) { if (ContractNote.isEqual(contractNoteTemplateId, wordList[i].word)) { return(true); } if (wordList[i].word.Contains(contractNoteTemplateId)) { return(true); } } return(false); }
void adjustWords1() { string plainText = extractPlainText(tempPdfFilePath); char[] lineSeparatingChars = { '\n' }; char[] wordSeparatingChars = { ' ' }; string[] lines = plainText.Split(lineSeparatingChars, StringSplitOptions.RemoveEmptyEntries); List <string> wordCombinationList = new List <string>(); foreach (string line in lines) { string[] words = line.Split(wordSeparatingChars, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < words.Length; i++) { string wordCombination = ""; for (int j = i; j < words.Length; j++) { wordCombination += (i == j ? "" : " ") + words[j]; wordCombinationList.Add(wordCombination); } } } for (int i = 0; i < completedWordList.Count; i++) { double bestSimilarity = 0; int bestSimilarWordId = 0; string agent1 = Regex.Replace(completedWordList[i].word, @"[^0-9a-zA-Z$@]+", ""); for (int j = 0; j < wordCombinationList.Count; j++) { string agent2 = Regex.Replace(wordCombinationList[j], @"[^0-9a-zA-Z$@]+", ""); double similarity = ContractNote.getSimilarity(agent1, agent2); if (bestSimilarity < similarity) { bestSimilarity = similarity; bestSimilarWordId = j; } } if (bestSimilarity > 0.8) { completedWordList[i].word = wordCombinationList[bestSimilarWordId]; } } }
public string getCandidate(ContractNoteTemplateFieldCandidate fieldCandidate, List <Word> wordList) { if (!ContractNote.isEqual(fieldCandidate.key, word)) { return(null); } string referenceWord = findAdjacencyWord(fieldCandidate, wordList, fieldCandidate.referenceDirection); if (referenceWord == null) { return(null); } if (!referenceWord.Equals("NULL") && !ContractNote.isPrefix(fieldCandidate.referenceFieldPrefix, referenceWord)) { return(null); } return(findAdjacencyWord(fieldCandidate, wordList, fieldCandidate.valueDirection, false)); }
public void completeContractNoteItems(string pdfFilePath) { this.pdfFilePath = pdfFilePath; templateIsFound = true; Rule rule = contractNote.ruleManager.getRuleWithSource(Path.GetDirectoryName(pdfFilePath)); contractNoteItems[0].Value = rule.Instance; string securityCode, securityName; masterListManager.searchSecurityInfo(contractNoteItems[3].Value, contractNoteItems[4].Value, out securityCode, out securityName); contractNoteItems[3].Value = securityCode; contractNoteItems[4].Value = securityName; contractNoteItems[5].Value = contractNoteItems[5].Value.Replace(" ", ""); contractNoteItems[6].Value = ContractNote.getAdjustedDate(contractNoteItems[6].Value); contractNoteItems[7].Value = ContractNote.getAdjustedDate(contractNoteItems[7].Value); contractNoteItems[8].Value = ContractNote.getAdjustedNumber(contractNoteItems[8].Value); contractNoteItems[9].Value = ContractNote.getAdjustedCurrency(contractNoteItems[9].Value); contractNoteItems[10].Value = ContractNote.getAdjustedCurrency(contractNoteItems[10].Value); contractNoteItems[12].Value = ContractNote.getAdjustedCurrency(contractNoteItems[12].Value); contractNoteItems[13].Value = ContractNote.getAdjustedCurrency(contractNoteItems[13].Value); contractNoteItems[18].Value = ContractNote.getAdjustedNumber(contractNoteItems[18].Value); contractNoteItems[19].Value = ContractNote.getAdjustedCurrency(contractNoteItems[19].Value); contractNoteItems[23].Value = string.Format(@"{0}-{1}-{2}-{3}", contractNoteItems[0].Value, contractNoteItems[16].Value, contractNoteItems[1].Value, contractNoteItems[14].Value); }
public MainWindow() { InitializeComponent(); createFieldTextBoxes(); string applicationName = AppDomain.CurrentDomain.FriendlyName; string processName = applicationName.Substring(0, applicationName.Length - 4); if (Process.GetProcessesByName(processName).Length > 1) { MessageBox.Show(string.Format("{0} is already running", processName)); Application.Current.Shutdown(); } DateTime expireDate = new DateTime(2017, 3, 29, 12, 0, 0); DateTime today = DateTime.Now; if (today > expireDate) { //MessageBox.Show(@"Please Contact '*****@*****.**'", "Demo Expired"); //Application.Current.Shutdown(); } SplashWindow splashWindow = new SplashWindow(); splashWindow.Show(); TemporaryDataManager.cleanTemporaryDirectory(); contractNote = new ContractNote(this); setEnable(false); scanButton.IsEnabled = true; settingButton.IsEnabled = true; quitButton.IsEnabled = true; splashWindow.Close(); }
public void validateContractNoteItems(bool skip = false) { success = true; if (skip) { for (int i = 0; i < FIELD_COUNT; i++) { contractNoteItems[i].Valid = true; } return; } if (contractNoteItems[0].Value.Equals("NoTemplate")) { contractNoteItems[23].Value = "NoTemplate"; } else { contractNoteItems[23].Value = string.Format(@"{0}-{1}-{2}-{3}", contractNoteItems[0].Value, contractNoteItems[16].Value, contractNoteItems[1].Value, contractNoteItems[14].Value); } for (int i = 0; i < FIELD_COUNT; i++) { if (mandatory[i]) { if (contractNoteItems[i].Value.Equals("NoTemplate")) { contractNoteItems[i].Valid = false; } else { switch (fieldType[i]) { case 'N': contractNoteItems[i].Valid = ContractNote.getValidationOfNumber(contractNoteItems[i].Value); break; case 'C': contractNoteItems[i].Valid = ContractNote.getValidationOfCurrency(contractNoteItems[i].Value); break; case 'D': contractNoteItems[i].Valid = ContractNote.getValidationOfDate(contractNoteItems[i].Value); break; case 'B': contractNoteItems[i].Valid = ContractNote.getValidationOfBoolean(contractNoteItems[i].Value); break; default: contractNoteItems[i].Valid = !contractNoteItems[i].Value.Equals(""); break; } } if (!contractNoteItems[i].Valid) { success = false; } } } contractNoteItems[4].Valid = contractNoteItems[3].Valid; double units = ContractNote.getCurrency(contractNoteItems[8].Value); double average = ContractNote.getCurrency(contractNoteItems[18].Value); double consideration = ContractNote.getCurrency(contractNoteItems[19].Value); if (contractNoteItems[8].Valid && contractNoteItems[18].Valid && contractNoteItems[19].Valid && consideration > 0) { double rate = units * average / consideration; if (rate < 0.95 || rate > 1.05) { success = contractNoteItems[8].Valid = contractNoteItems[18].Valid = contractNoteItems[19].Valid = false; } } else { success = contractNoteItems[8].Valid = contractNoteItems[18].Valid = contractNoteItems[19].Valid = false; } double brokerage = ContractNote.getCurrency(contractNoteItems[9].Value); double gstAmount = ContractNote.getCurrency(contractNoteItems[10].Value); double miscFee = ContractNote.getCurrency(contractNoteItems[12].Value); if (contractNoteItems[9].Valid && contractNoteItems[10].Valid && contractNoteItems[11].Valid && gstAmount > 0) { double rate = (brokerage + miscFee) / gstAmount; double expectedRate = contractNoteItems[11].Value == "Y" ? 11 : 10; if (rate < expectedRate - 0.3 || rate > expectedRate + 0.3) { success = contractNoteItems[9].Valid = contractNoteItems[10].Valid = false; } } }
void adjustWords2() { string plainText = extractPlainText(tempPdfFilePath); char[] lineSeparatingChars = { '\n' }; char[] wordSeparatingChars = { ' ' }; string[] lines = plainText.Split(lineSeparatingChars, StringSplitOptions.RemoveEmptyEntries); List <string> wordCombinationList = new List <string>(); foreach (string line in lines) { string[] words = line.Split(wordSeparatingChars, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < words.Length; i++) { string wordCombination = ""; for (int j = i; j < words.Length; j++) { wordCombination += (i == j ? "" : " ") + words[j]; wordCombinationList.Add(wordCombination); } } } try { using (PdfReader reader = new PdfReader(tempPdfFilePath)) { var pageRectangle = reader.GetPageSize(1); float pageWidth = pageRectangle.Width; float pageHeight = pageRectangle.Height; float sizeRate = 2754f / 595; for (int i = 0; i < completedWordList.Count; i++) { double bestSimilarity = 0; string word = completedWordList[i].word; float w = completedWordList[i].w / sizeRate; float h = completedWordList[i].h / sizeRate; float x = completedWordList[i].x / sizeRate; float y = pageHeight - completedWordList[i].y / sizeRate - h; RenderFilter[] filter = { new RegionTextRenderFilter(new System.util.RectangleJ(x, y, w, h)) }; ITextExtractionStrategy strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), filter); string text = PdfTextExtractor.GetTextFromPage(reader, 1, strategy); string[] wordSeparatingStrings = { " " }; string[] words = text.Split(wordSeparatingStrings, StringSplitOptions.RemoveEmptyEntries); if (words.Length > 0) { bestSimilarity = ContractNote.getSimilarity(word, words[0]); if (bestSimilarity > 0.8) { completedWordList[i].word = words[0]; } } int bestSimilarWordId = 0; string agent1 = Regex.Replace(word, @"[^0-9a-zA-Z$@]+", ""); for (int j = 0; j < wordCombinationList.Count; j++) { string agent2 = Regex.Replace(wordCombinationList[j], @"[^0-9a-zA-Z$@]+", ""); double similarity = ContractNote.getSimilarity(agent1, agent2); if (bestSimilarity < similarity) { bestSimilarity = similarity; bestSimilarWordId = j; } } if (bestSimilarity > 0.8) { completedWordList[i].word = wordCombinationList[bestSimilarWordId]; } } } } catch { } }
public PdfParser(ContractNote contractNote) { this.contractNote = contractNote; }
public ContractNoteTemplateManager(ContractNote contractNote) { this.contractNote = contractNote; loadContractNoteTemplates(); }