void TLogTranslateItem_OnAfterRuleLoad(object sender, TranslateEventArgs e) { TranslateRule transrule = (TranslateRule)sender; if (transrule.ID == "L30") { //When we reach the 30 record we reset the discount line number so we can reassign it later if the 30 record has a valid Line (L) item to create DiscountLineNumber = -1; //Reset out counter to keep track of the number of discount line items in the transaction. UniqueDiscountId = 0; } if (transrule.ID == "L60") { XPathNavigator nav = e.CurrentTranslateItem.CreateNavigator(); if (Convert.ToBoolean(nav.Evaluate(GetXpathExpression("string(@type) = '2' and string(@seq_num) = '38'")))) { if (String.IsNullOrEmpty(PolledNetSalesFile)) { PolledNetSalesFile = base.PluginConfig.GetValue("PolledNetSalesFile"); } //NetSales sales = new NetSales(); string netsales = nav.Evaluate(GetXpathExpression("string(@amount)")).ToString(); string storeNum = nav.Evaluate(GetXpathExpression("string(@store_num)")).ToString(); DateTime TransDate = Convert.ToDateTime(nav.Evaluate(GetXpathExpression("string(@trans_date)")).ToString()); WritePolledNetSales(storeNum, netsales, TransDate); } } //This will store the notes for bank deposit and will be added to the output when the translate hits the 52 record if (transrule.ID == "L51") { if (BankNotes == null) { BankNotes = new List <XmlNode>(); } XPathNavigator nav = e.CurrentTranslateItem.CreateNavigator(); int transType = 10; while (transType <= 26) { string strExpr = String.Format("count(following-sibling::L52[@Tender_id_sub1='{0}' and number(@tender_id) = 0]) > 0", transType); if (Convert.ToBoolean(nav.Evaluate(GetXpathExpression(strExpr)))) { string LineNote = String.Format("number(following-sibling::L52[@Tender_id_sub1='{0}' and number(@tender_id) = 0]/@extended_amount)", transType); string NoteType = String.Format("number(100 + number(following-sibling::L52[@Tender_id_sub1='{0}' and number(@tender_id) = 0]/@Tender_id_sub1))", transType); XmlNode BankNote = DestinationDocumentTemplate.SelectSingleNode("//N"); BankNote.Attributes["Line_id"].Value = "0"; BankNote.Attributes["Line_Note"].Value = Convert.ToString(nav.Evaluate(GetXpathExpression(LineNote))); BankNote.Attributes["Line_note_type"].Value = Convert.ToString(nav.Evaluate(GetXpathExpression(NoteType))); BankNotes.Add(BankNote); } transType++; } } }
void TLogTranslateItem_OnAfterRuleProcess(object sender, TranslateEventArgs e) { XmlNode TransNode = (XmlNode)sender; string SaveType = TransNode.SelectSingleNode("//L10").Attributes["type"].Value; if (String.IsNullOrEmpty(TransNode.SelectSingleNode("//L10").Attributes["flgs_L10ADMIN"].Value)) { return; } bool isAdminTrans = Convert.ToBoolean(Int32.Parse(TransNode.SelectSingleNode("//L10").Attributes["flgs_L10ADMIN"].Value)); //We are not allowed to have a header item without a line item so we handle that here //if (HeadItemFound != LineFound && (isAdminTrans && (SaveType == "1" || SaveType == "144"))) if ((HeadItemFound != LineFound) && isAdminTrans) { CreateLineItem(TransNode, e.OutputDocument); } }