private void butMissing_Click(object sender, EventArgs e)
        {
            Cursor = Cursors.WaitCursor;
            Font          font         = new Font("Tahoma", 9);
            Font          fontTitle    = new Font("Tahoma", 17, FontStyle.Bold);
            Font          fontSubTitle = new Font("Tahoma", 10, FontStyle.Bold);
            ReportComplex report       = new ReportComplex(true, false);

            report.ReportName = "Missing";
            report.AddTitle("Title", "XCharge Transactions From " + date1.SelectionStart.ToShortDateString() + " To " + date2.SelectionStart.ToShortDateString(), fontTitle);
            report.GetTitle("Title").IsUnderlined = true;
            report.AddSubTitle("SubTitle", "No Matching Transaction Found in Open Dental", fontSubTitle);
            QueryObject query;
            DataTable   dt = XChargeTransactions.GetMissingPaymentsTable(date1.SelectionStart, date2.SelectionStart);

            query = report.AddQuery(dt, "Missing Payments", "", SplitByKind.None, 1, true);     //Valid entries to count have result code 0
            query.AddColumn("Transaction Date/Time", 170, FieldValueType.String, font);
            query.AddColumn("Transaction Type", 120, FieldValueType.String, font);
            query.AddColumn("Clerk ID", 80, FieldValueType.String, font);
            query.AddColumn("Item#", 50, FieldValueType.String, font);
            query.AddColumn("Pat", 50, FieldValueType.String, font);
            query.AddColumn("Credit Card Num", 140, FieldValueType.String, font);
            query.AddColumn("Exp", 50, FieldValueType.String, font);
            query.AddColumn("Result", 50, FieldValueType.String, font);
            query.AddColumn("Amount", 60, FieldValueType.Number, font);
            query.GetColumnHeader("Amount").ContentAlignment = ContentAlignment.MiddleRight;
            Cursor = Cursors.Default;
            if (!report.SubmitQueries(true))
            {
                return;
            }
            // display report
            FormReportComplex FormR = new FormReportComplex(report);

            //FormR.MyReport=report;
            FormR.ShowDialog();
        }
        private void butExtra_Click(object sender, EventArgs e)
        {
            Cursor = Cursors.WaitCursor;
            Font          font         = new Font("Tahoma", 9);
            Font          fontTitle    = new Font("Tahoma", 17, FontStyle.Bold);
            Font          fontSubTitle = new Font("Tahoma", 10, FontStyle.Bold);
            ReportComplex report       = new ReportComplex(true, false);

            report.ReportName = "Extra Payments";
            report.AddTitle("Title", "Payments From " + date1.SelectionStart.ToShortDateString() + " To " + date2.SelectionStart.ToShortDateString(), fontTitle);
            report.GetTitle("Title").IsUnderlined = true;
            report.AddSubTitle("SubTitle", "No Matching X-Charge Transactions for these Payments", fontSubTitle);
            QueryObject query;
            DataTable   dt = XChargeTransactions.GetMissingXTransTable(date1.SelectionStart, date2.SelectionStart);

            query = report.AddQuery(dt, "Extra Payments", "", SplitByKind.None, 1, true);
            query.AddColumn("Pat", 50, FieldValueType.String, font);
            query.AddColumn("LName", 100, FieldValueType.String, font);
            query.AddColumn("FName", 100, FieldValueType.String, font);
            query.AddColumn("DateEntry", 90, FieldValueType.Date, font);
            query.AddColumn("PayDate", 90, FieldValueType.Date, font);
            query.AddColumn("PayNote", 210, FieldValueType.String, font);
            query.AddColumn("PayAmt", 70, FieldValueType.Number, font);
            query.GetColumnHeader("PayAmt").ContentAlignment = ContentAlignment.MiddleRight;
            query.GetColumnDetail("PayAmt").ContentAlignment = ContentAlignment.MiddleRight;
            Cursor = Cursors.Default;
            if (!report.SubmitQueries(true))
            {
                return;
            }
            // display report
            FormReportComplex FormR = new FormReportComplex(report);

            //FormR.MyReport=report;
            FormR.ShowDialog();
        }
Exemple #3
0
        private void butImport_Click(object sender, EventArgs e)
        {
            Cursor = Cursors.WaitCursor;
            OpenFileDialog Dlg = new OpenFileDialog();

            if (Directory.Exists(@"C:\X-Charge\"))
            {
                Dlg.InitialDirectory = @"C:\X-Charge\";
            }
            else if (Directory.Exists(@"C:\"))
            {
                Dlg.InitialDirectory = @"C:\";
            }
            if (Dlg.ShowDialog() != DialogResult.OK)
            {
                Cursor = Cursors.Default;
                return;
            }
            if (!File.Exists(Dlg.FileName))
            {
                Cursor = Cursors.Default;
                MsgBox.Show(this, "File not found");
                return;
            }
            XChargeTransaction trans = new XChargeTransaction();

            string[]           fields;
            XChargeTransaction transCheck;

            using (StreamReader sr = new StreamReader(Dlg.FileName)) {
                Cursor = Cursors.WaitCursor;
                string line = sr.ReadLine();
                while (line != null)
                {
                    fields = line.Split(new string[1] {
                        ","
                    }, StringSplitOptions.None);
                    if (fields.Length < 16)
                    {
                        continue;
                    }
                    trans.TransType = fields[0];
                    fields[1]       = fields[1].Replace("$", "");
                    if (fields[1].Contains("("))
                    {
                        fields[1] = fields[1].TrimStart('(');
                        fields[1] = fields[1].TrimEnd(')');
                        fields[1] = fields[1].Insert(0, "-");
                    }
                    trans.Amount              = PIn.Double(fields[1]);
                    trans.CCEntry             = fields[2];
                    trans.PatNum              = PIn.Long(fields[3].Substring(3));     //remove "PAT" from the beginning of the string
                    trans.Result              = fields[4];
                    trans.ClerkID             = fields[5];
                    trans.ResultCode          = fields[7];
                    trans.Expiration          = fields[8];
                    trans.CCType              = fields[9];
                    trans.CreditCardNum       = fields[10];
                    trans.BatchNum            = fields[11];
                    trans.ItemNum             = fields[12];
                    trans.ApprCode            = fields[13];
                    trans.TransactionDateTime = PIn.Date(fields[14]).AddHours(PIn.Double(fields[15].Substring(0, 2))).AddMinutes(PIn.Double(fields[15].Substring(3, 2)));
                    if (trans.BatchNum == "" || trans.ItemNum == "")
                    {
                        line = sr.ReadLine();
                        continue;
                    }
                    transCheck = XChargeTransactions.CheckByBatchItem(trans.BatchNum, trans.ItemNum);
                    if (transCheck == trans)
                    {
                        XChargeTransactions.Delete(transCheck.XChargeTransactionNum);
                        XChargeTransactions.Insert(trans);
                    }
                    else
                    {
                        XChargeTransactions.Insert(trans);
                    }
                    line = sr.ReadLine();
                }
            }
            Cursor = Cursors.Default;
            MsgBox.Show(this, "Done.");
        }
        private void butImport_Click(object sender, EventArgs e)
        {
            Cursor = Cursors.WaitCursor;
            OpenFileDialog Dlg = new OpenFileDialog();

            if (Directory.Exists(@"C:\X-Charge\"))
            {
                Dlg.InitialDirectory = @"C:\X-Charge\";
            }
            else if (Directory.Exists(@"C:\"))
            {
                Dlg.InitialDirectory = @"C:\";
            }
            if (Dlg.ShowDialog() != DialogResult.OK)
            {
                Cursor = Cursors.Default;
                return;
            }
            if (!File.Exists(Dlg.FileName))
            {
                Cursor = Cursors.Default;
                MsgBox.Show(this, "File not found");
                return;
            }
            XChargeTransaction trans = new XChargeTransaction();

            string[]           fields;
            XChargeTransaction transCheck;

            using (StreamReader sr = new StreamReader(Dlg.FileName)) {
                Cursor = Cursors.WaitCursor;
                string line = sr.ReadLine();
                while (line != null)
                {
                    fields = line.Split(new string[1] {
                        ","
                    }, StringSplitOptions.None);
                    if (fields.Length < 16 || fields.All(x => x == ""))
                    {
                        //This occurs when the XCharge transaction is blank. For example, ,,,,,,,,,,,,,,,, which is what is outputted by XCharge
                        //when no transactions occurred for a day.
                        line = sr.ReadLine();
                        continue;
                    }
                    trans.TransType = fields[0];
                    fields[1]       = fields[1].Replace("$", "");
                    if (fields[1].Contains("("))
                    {
                        fields[1] = fields[1].TrimStart('(');
                        fields[1] = fields[1].TrimEnd(')');
                        fields[1] = fields[1].Insert(0, "-");
                    }
                    trans.Amount  = PIn.Double(fields[1]);
                    trans.CCEntry = fields[2];
                    trans.PatNum  = 0;
                    if (!string.IsNullOrWhiteSpace(fields[3]))
                    {
                        trans.PatNum = PIn.Long(fields[3].Substring(3));                      //remove "PAT" from the beginning of the string
                    }
                    trans.Result              = fields[4];
                    trans.ClerkID             = fields[5];
                    trans.ResultCode          = fields[7];
                    trans.Expiration          = fields[8];
                    trans.CCType              = fields[9];
                    trans.CreditCardNum       = fields[10];
                    trans.BatchNum            = fields[11];
                    trans.ItemNum             = fields[12];
                    trans.ApprCode            = fields[13];
                    trans.TransactionDateTime = PIn.Date(fields[14])
                                                .AddHours(PIn.Double(fields[15].Substring(0, 2)))
                                                .AddMinutes(PIn.Double(fields[15].Substring(3, 2)))
                                                .AddSeconds(PIn.Double(fields[15].Substring(6, 2)));
                    transCheck = XChargeTransactions.GetOneMatch(trans.BatchNum, trans.ItemNum, trans.PatNum, trans.TransactionDateTime, trans.TransType);
                    if (transCheck != null && trans.Result != "AP DUPE" &&
                        transCheck.Amount.IsEqual(trans.Amount)
                        //Before 17.1.19, we did not store the seconds value of the TransactionDateTime, so we consider it a match if Second==0.
                        && (transCheck.TransactionDateTime == trans.TransactionDateTime || transCheck.TransactionDateTime.Second == 0))
                    {
                        XChargeTransactions.Delete(transCheck.XChargeTransactionNum);
                        XChargeTransactions.Insert(trans);
                    }
                    else
                    {
                        XChargeTransactions.Insert(trans);
                    }
                    line = sr.ReadLine();
                }
            }
            Cursor = Cursors.Default;
            MsgBox.Show(this, "Done.");
        }