Example #1
0
//		private void SetViewDelegate(View view,object clsobj)
//		{
//			SaleOrderDtls item = (SaleOrderDtls)clsobj;
//			string sqty =item.qty==0?"": item.qty.ToString ();
//			string sprice =item.price==0?"": item.price.ToString ("n2");
//
//			view.FindViewById<TextView> (Resource.Id.invitemcode).Text = item.icode;
//			view.FindViewById<TextView> (Resource.Id.invitemdesc).Text = item.description;
//			view.FindViewById<TextView> (Resource.Id.invitemqty).Text = sqty;
//			view.FindViewById<TextView> (Resource.Id.invitemtaxgrp).Text = item.taxgrp;
//			view.FindViewById<TextView> (Resource.Id.invitemtax).Text = item.tax.ToString ("n2");
//			view.FindViewById<TextView> (Resource.Id.invitemprice).Text = sprice;
//			view.FindViewById<TextView> (Resource.Id.invitemamt).Text = item.netamount.ToString ("n2");
//
//
//		}

        private void SetViewDelegate(View view, object clsobj)
        {
            SaleOrderDtls item   = (SaleOrderDtls)clsobj;
            string        sqty   = item.qty == 0?"": item.qty.ToString();
            string        sprice = item.price == 0?"": item.price.ToString("n2");

            if (item.icode == "TAX" || item.icode == "AMOUNT")
            {
                view.FindViewById <LinearLayout> (Resource.Id.linearLayout1).Visibility = ViewStates.Gone;
                view.FindViewById <LinearLayout> (Resource.Id.linearLayout2).Visibility = ViewStates.Visible;
                view.FindViewById <TextView> (Resource.Id.invitemdesc).Visibility       = ViewStates.Gone;
                view.FindViewById <TextView> (Resource.Id.invitemTemp1).Text            = item.description;
                view.FindViewById <TextView> (Resource.Id.invitemTemp2).Text            = item.netamount.ToString("n2");
            }
            else
            {
                view.FindViewById <LinearLayout> (Resource.Id.linearLayout2).Visibility = ViewStates.Gone;
                view.FindViewById <LinearLayout> (Resource.Id.linearLayout1).Visibility = ViewStates.Visible;
                view.FindViewById <TextView> (Resource.Id.invitemdesc).Visibility       = ViewStates.Visible;
                view.FindViewById <TextView> (Resource.Id.invitemdesc).Text             = item.description;
                view.FindViewById <TextView> (Resource.Id.invitemcode).Text             = item.icode;
                view.FindViewById <TextView> (Resource.Id.invitemtax).Text    = item.tax.ToString("n2");
                view.FindViewById <TextView> (Resource.Id.invitemprice).Text  = sprice;
                view.FindViewById <TextView> (Resource.Id.invitemamt).Text    = item.netamount.ToString("n2");
                view.FindViewById <TextView> (Resource.Id.invitemqty).Text    = sqty;
                view.FindViewById <TextView> (Resource.Id.invitemtaxgrp).Text = item.taxgrp;
            }
        }
Example #2
0
        void Printreceipt()
        {
            SaleOrderDtls[] list;
            using (var db = new SQLite.SQLiteConnection(pathToDatabase)){
                var ls = db.Table <SaleOrderDtls> ().Where(x => x.sono == inv.sono).ToList <SaleOrderDtls>();
                list = new SaleOrderDtls[ls.Count];
                ls.CopyTo(list);
            }
            //mmDevice = null;
            //findBTPrinter ();
            IPrintDocument prtInv = PrintDocManager.GetPrintDocument <PrintSalesOrder>();

            prtInv.SetDocument(inv);
            prtInv.SetDocumentDtls(list);
            prtInv.SetNoOfCopy(1);
            prtInv.SetCallingActivity(this);
            if (prtInv.StartPrint())
            {
                updatePrintedStatus(inv);
            }
            else
            {
                Toast.MakeText(this, prtInv.GetErrMsg(), ToastLength.Long).Show();
            }
        }
Example #3
0
        private void LoadData(string sono, string uid)
        {
            TextView txtInvNo = FindViewById <TextView> (Resource.Id.txtInvnp);
            Spinner  spinner  = FindViewById <Spinner> (Resource.Id.txtcode);
            EditText qty      = FindViewById <EditText> (Resource.Id.txtqty);
            //TextView desc =  FindViewById<TextView> (Resource.Id.txtdesc);
            EditText price  = FindViewById <EditText> (Resource.Id.txtprice);
            EditText amount = FindViewById <EditText> (Resource.Id.txtamount);
            //EditText taxper = FindViewById<EditText> (Resource.Id.txtinvtaxper);
            EditText taxamt = FindViewById <EditText> (Resource.Id.txttaxamt);
            //CheckBox isincl = FindViewById<CheckBox> (Resource.Id.txtinvisincl);
            TextView tax = FindViewById <TextView> (Resource.Id.txttax);

            int id = Convert.ToInt32(uid);

            using (var db = new SQLite.SQLiteConnection(pathToDatabase)) {
                var invlist = db.Table <SaleOrderDtls> ().Where(x => x.sono == sono && x.ID == id).ToList <SaleOrderDtls> ();
                if (invlist.Count > 0)
                {
                    SaleOrderDtls soItem = invlist [0];
                    int           index  = dataAdapter.GetPosition(soItem.icode + " | " + soItem.description);
                    Item          item   = items.Where(x => x.ICode == soItem.icode).FirstOrDefault();
                    spinner.SetSelection(index);
                    qty.Text    = soItem.qty.ToString();
                    price.Text  = soItem.price.ToString();
                    taxamt.Text = soItem.tax.ToString();

                    tax.Text    = item.taxgrp;
                    taxper      = item.tax;
                    isInclusive = item.isincludesive;
                    amount.Text = soItem.amount.ToString();
                    price.Text  = soItem.price.ToString();
                }
            }
        }
Example #4
0
        public void PrintSOTaxSumm(ref string test,SaleOrderDtls[] list )
        {
            List<Item> list2 = new List<Item> ();
            using (var db = new SQLite.SQLiteConnection (pathToDatabase)) {
                list2 = db.Table<Item> ().ToList<Item> ();
            }
            var grp = from p in list
                group p by p.taxgrp into g
                select new {taxgrp = g.Key, ttltax = g.Sum (x => x.tax),ttlAmt = g.Sum (v => v.netamount)};

            test += "SUMMARY\n";
            test += "-------------------------------\n";
            test += "TAX            AMOUNT   TAX AMT\n";
            test += "-------------------------------\n";
            //       123456789 12345678901 123456789
            string pline="";
            foreach (var g in grp) {
                var list3 =list2.Where (x => x.taxgrp == g.taxgrp).ToList ();
                if (list3.Count > 0) {
                    string stax = g.taxgrp.Trim () + " @ " + list3 [0].tax.ToString () + "%";
                    pline = pline + stax.PadRight (10,' ');
                } else pline = pline + g.taxgrp.Trim().PadRight (10, ' ');
                pline = pline + g.ttlAmt.ToString("n2").PadLeft(11, ' ')+" ";
                pline = pline + g.ttltax.ToString("n2").PadLeft(9, ' ');
                test += pline + "\n";
                pline = "";
            }
            test += "-------------------------------\n";
        }
Example #5
0
        public string PrintSODetail(SaleOrderDtls itm, int count)
        {
            string test   = "";
            string desc   = itm.description;
            string pline2 = desc.ToUpper().Trim() + "\n";

            pline2 = pline2 + count.ToString().PadRight(3, ' ');
            if (itm.qty < 0)
            {
                string sqty = "(EX)" + itm.qty.ToString().Trim();
                pline2 = pline2 + sqty.PadLeft(9, ' ') + " ";
            }
            else
            {
                pline2 = pline2 + itm.qty.ToString().PadLeft(9, ' ') + " ";
            }
            pline2 = pline2 + Math.Round(itm.price, 2).ToString("n2").PadLeft(8, ' ') + " ";
            string stax = Math.Round(itm.tax, 2).ToString("n2") + " " + itm.taxgrp;

            pline2 = pline2 + stax.PadLeft(10, ' ') + " ";
            pline2 = pline2 + Math.Round(itm.netamount, 2).ToString("n2").PadLeft(9, ' ');
            test  += pline2 + "\n";

            return(test);
        }
Example #6
0
        void PrintSO(SaleOrder so, int noofcopy)
        {
            //Toast.MakeText (this, "print....", ToastLength.Long).Show ();
            SaleOrderDtls[] list;
            using (var db = new SQLite.SQLiteConnection(pathToDatabase)){
                var ls = db.Table <SaleOrderDtls> ().Where(x => x.sono == so.sono).ToList <SaleOrderDtls>();
                list = new SaleOrderDtls[ls.Count];
                ls.CopyTo(list);
            }
            IPrintDocument prtSO = PrintDocManager.GetPrintDocument <PrintSalesOrder>();

            prtSO.SetDocument(so);
            prtSO.SetDocumentDtls(list);
            prtSO.SetNoOfCopy(noofcopy);
            prtSO.SetCallingActivity(this);
            if (prtSO.StartPrint())
            {
                updatePrintedStatus(so);
                var found = listData.Where(x => x.sono == so.sono).ToList();
                if (found.Count > 0)
                {
                    found [0].isPrinted = true;
                    SetViewDlg viewdlg = SetViewDelegate;
                    listView.Adapter = new GenericListAdapter <SaleOrder> (this, listData, Resource.Layout.ListItemRow, viewdlg);
                }
            }
            else
            {
                Toast.MakeText(this, prtSO.GetErrMsg(), ToastLength.Long).Show();
            }
        }
Example #7
0
        void OnListItemClick(object sender, AdapterView.ItemClickEventArgs e)
        {
            SaleOrderDtls item = listData.ElementAt(e.Position);

            if (item.icode.IndexOf("TAX") > -1)
            {
                return;
            }
            if (item.icode.IndexOf("AMOUNT") > -1)
            {
                return;
            }

            PopupMenu menu = new PopupMenu(e.Parent.Context, e.View);

            menu.Inflate(Resource.Menu.popupItem);
            menu.Menu.RemoveItem(Resource.Id.popadd);

            menu.MenuItemClick += (s1, arg1) => {
                if (arg1.Item.ItemId == Resource.Id.popdelete)
                {
                    Delete(item);
                }
                else if (arg1.Item.ItemId == Resource.Id.popedit)
                {
                    EditItem(item.sono, item.ID);
                }
            };
            menu.Show();
        }
Example #8
0
        void Delete(SaleOrderDtls so)
        {
            var builder = new AlertDialog.Builder(this);

            builder.SetMessage(Resources.GetString(Resource.String.msg_confirmdelete) + "?");
            builder.SetPositiveButton("YES", (s, e) => { DeleteItem(so); });
            builder.SetNegativeButton("Cancel", (s, e) => { /* do something on Cancel click */ });
            builder.Create().Show();
        }
Example #9
0
        void Edit(SaleOrderDtls so)
        {
            //var intent = new Intent(this, typeof(SOEntryActivity));
            var intent = ActivityManager.GetActivity <SOEntryActivityEx>(this.ApplicationContext);

            intent.PutExtra("invoiceno", so.sono);
            intent.PutExtra("itemuid", so.ID.ToString());
            intent.PutExtra("editmode", "EDIT");
            intent.PutExtra("customer", CUSTNAME);
            intent.PutExtra("custcode", CUSTCODE);
            StartActivity(intent);
        }
Example #10
0
        void OnListItemClick(object sender, AdapterView.ItemClickEventArgs e)
        {
            SaleOrderDtls item = listData.ElementAt(e.Position);

            if (item.icode.IndexOf("TAX") > -1)
            {
                return;
            }

            if (item.icode.IndexOf("AMOUNT") > -1)
            {
                return;
            }

            PopupMenu menu = new PopupMenu(e.Parent.Context, e.View);

            menu.Inflate(Resource.Menu.popupItem);
            if (!rights.SOAllowEdit)
            {
                menu.Menu.RemoveItem(Resource.Id.popedit);
            }
            if (!rights.SOAllowDelete)
            {
                menu.Menu.RemoveItem(Resource.Id.popdelete);
            }
            //if allow edit and SaleOrder printed, remove edit
            //printed invoice not allow to edit

            if (DataHelper.GetSaleOrderPrintStatus(pathToDatabase, item.sono, rights))
            {
                menu.Menu.RemoveItem(Resource.Id.popedit);
                menu.Menu.RemoveItem(Resource.Id.popdelete);
                menu.Menu.RemoveItem(Resource.Id.popadd);
            }


            menu.MenuItemClick += (s1, arg1) => {
                if (arg1.Item.ItemId == Resource.Id.popadd)
                {
                    NewItem(item.sono);
                }
                else if (arg1.Item.ItemId == Resource.Id.popedit)
                {
                    Edit(item);
                }
                else if (arg1.Item.ItemId == Resource.Id.popdelete)
                {
                    Delete(item);
                }
            };
            menu.Show();
        }
Example #11
0
        void populate(List <SaleOrderDtls> list)
        {
            list.Clear();
            using (var db = new SQLite.SQLiteConnection(pathToDatabase)) {
                var list2 = db.Table <SaleOrderDtls> ().Where(x => x.sono == inv.sono)
                            .OrderByDescending(x => x.ID)
                            .ToList <SaleOrderDtls> ();

                ttlamt = 0;
                ttltax = 0;
                foreach (var item in list2)
                {
                    ttlamt = ttlamt + item.netamount;
                    ttltax = ttltax + item.tax;
                    list.Add(item);
                }

                double roundVal = 0;
                double ttlNet   = Utility.AdjustToNear(ttlamt + ttltax, ref roundVal);


                SaleOrderDtls inv1 = new SaleOrderDtls();
                inv1.icode       = "TAX";
                inv1.netamount   = ttlamt;
                inv1.description = "TOTAL EXCL GST";
                SaleOrderDtls inv2 = new SaleOrderDtls();
                inv2.icode       = "AMOUNT";
                inv2.netamount   = ttltax;
                inv2.description = "TOTAL 6% GST";
                SaleOrderDtls inv3 = new SaleOrderDtls();
                inv3.icode       = "TAX";
                inv3.netamount   = ttlamt + ttltax;
                inv3.description = "TOTAL INCL GST";
                SaleOrderDtls inv4 = new SaleOrderDtls();
                inv4.icode       = "AMOUNT";
                inv4.netamount   = roundVal;
                inv4.description = "ROUNDING ADJUST";
                SaleOrderDtls inv5 = new SaleOrderDtls();
                inv5.icode       = "AMOUNT";
                inv5.netamount   = ttlNet;
                inv5.description = "NET TOTAL";


                list.Add(inv1);
                list.Add(inv2);
                list.Add(inv3);
            }
        }
Example #12
0
        void populate(List <SaleOrderDtls> list)
        {
//			var documents = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
//			pathToDatabase = Path.Combine(documents, "db_adonet.db");
            comp = DataHelper.GetCompany(pathToDatabase);
            //SqliteConnection.CreateFile(pathToDatabase);
            using (var db = new SQLite.SQLiteConnection(pathToDatabase))
            {
                var list1 = db.Table <SaleOrder>().Where(x => x.sono == sono).ToList <SaleOrder>();
                var list2 = db.Table <SaleOrderDtls>().Where(x => x.sono == sono).ToList <SaleOrderDtls>();
                var list3 = db.Table <Trader>().Where(x => x.CustCode == CUSTCODE).ToList <Trader>();

                double ttlamt = 0;
                double ttltax = 0;
                if (list3.Count > 0)
                {
                    CUSTNAME = list3 [0].CustName;
                }
                foreach (var item in list2)
                {
                    ttlamt = ttlamt + item.netamount;
                    ttltax = ttltax + item.tax;
                    list.Add(item);
                }
                if (list1.Count > 0)
                {
                    list1 [0].amount = ttlamt;
                    db.Update(list1 [0]);
                }

                SaleOrderDtls inv1 = new SaleOrderDtls();
                inv1.icode       = "TAX";
                inv1.netamount   = ttlamt;
                inv1.description = "TOTAL EXCL GST";
                SaleOrderDtls inv2 = new SaleOrderDtls();
                inv2.icode       = "AMOUNT";
                inv2.netamount   = ttltax;
                inv2.description = "TOTAL 6% GST";
                SaleOrderDtls inv3 = new SaleOrderDtls();
                inv3.icode       = "TAX";
                inv3.netamount   = ttlamt + ttltax;
                inv3.description = "TOTAL INCL GST";

                list.Add(inv1);
                list.Add(inv2);
                list.Add(inv3);
            }
        }
Example #13
0
 void DeleteItem(SaleOrderDtls so)
 {
     using (var db = new SQLite.SQLiteConnection(pathToDatabase))
     {
         var list = db.Table <SaleOrderDtls>().Where(x => x.sono == sono && x.ID == so.ID).ToList <SaleOrderDtls>();
         if (list.Count > 0)
         {
             db.Delete(list [0]);
             var arrlist = listData.Where(x => x.sono == sono && x.ID == so.ID).ToList <SaleOrderDtls>();
             if (arrlist.Count > 0)
             {
                 listData.Remove(arrlist [0]);
                 SetViewDlg viewdlg = SetViewDelegate;
                 listView.Adapter = new GenericListAdapter <SaleOrderDtls> (this, listData, Resource.Layout.InvDtlItemViewCS, viewdlg);
             }
         }
     }
 }
Example #14
0
        private void GetSaleOrderText(SaleOrder so, SaleOrderDtls[] list)
        {
            //if (string.IsNullOrEmpty(so.billTo))
                 prtcompHeader.PrintCompHeader (ref text);
            //else prtcompHeader.PrintCustomerHeader(ref text,so.billTo);

            prtCustHeader.PrintCustomer (ref text, so.custcode);
            prtHeader.PrintSOHeader (ref text, so);
            string dline = "";
            double ttlAmt = 0;
            double ttltax = 0;
            int count = 0;
            foreach (SaleOrderDtls itm in list) {
                count += 1;
                dline = dline + prtDetail.PrintSODetail (itm, count);
                ttlAmt = ttlAmt + itm.netamount;
                ttltax = ttltax + itm.tax;
            }
            text += dline;
            prtTotal.PrintTotal (ref text, ttlAmt, ttltax);
            prtTaxSummary.PrintSOTaxSumm (ref text, list);
            prtFooter.PrintFooter (ref text);
            text += "\nTHANK YOU\n\n\n\n\n\n\n\n";
        }
Example #15
0
        void PrintInv(SaleOrder inv,int noofcopy)
        {
            //Toast.MakeText (this, "print....", ToastLength.Long).Show ();
            SaleOrderDtls[] list;
            using (var db = new SQLite.SQLiteConnection (pathToDatabase)){
                var ls= db.Table<SaleOrderDtls> ().Where (x => x.sono==inv.sono&&x.CompCode==compCode&&x.BranchCode==branchCode).ToList<SaleOrderDtls>();
                list = new SaleOrderDtls[ls.Count];
                ls.CopyTo (list);
            }
            mmDevice = null;
            findBTPrinter ();

            if (mmDevice != null) {
                StartPrint (inv, list,noofcopy);
                updatePrintedStatus (inv);
            }
        }
Example #16
0
 void Edit(SaleOrderDtls so)
 {
     //var intent = new Intent(this, typeof(SOEntryActivity));
     var intent =ActivityManager.GetActivity<SOEntryActivityEx>(this.ApplicationContext);
     intent.PutExtra ("invoiceno",so.sono );
     intent.PutExtra ("itemuid",so.ID.ToString() );
     intent.PutExtra ("editmode","EDIT" );
     intent.PutExtra ("customer",CUSTNAME );
     intent.PutExtra ("custcode",CUSTCODE );
     StartActivity(intent);
 }
Example #17
0
        private void butSaveClick(object sender,EventArgs e)
        {
            TextView txtInvNo =  FindViewById<TextView> (Resource.Id.txtInvnp);
            Spinner spinner = FindViewById<Spinner> (Resource.Id.txtcode);
            EditText qty = FindViewById<EditText> (Resource.Id.txtqty);
            EditText price = FindViewById<EditText> (Resource.Id.txtprice);
            TextView txttax =  FindViewById<TextView> (Resource.Id.txttax);
            EditText ttlamt = FindViewById<EditText> (Resource.Id.txtamount);
            EditText ttltax = FindViewById<EditText> (Resource.Id.txttaxamt);
            if (spinner.SelectedItem == null) {
                Toast.MakeText (this, Resources.GetString(Resource.String.msg_invaliditem), ToastLength.Long).Show ();
                spinner.RequestFocus ();
                return;
            }

            if (string.IsNullOrEmpty(qty.Text)) {
                Toast.MakeText (this, Resources.GetString(Resource.String.msg_invalidqty), ToastLength.Long).Show ();
                qty.RequestFocus ();
                return;
            }
            if (string.IsNullOrEmpty(price.Text)) {
                Toast.MakeText (this, Resources.GetString(Resource.String.msg_invalidprice), ToastLength.Long).Show ();
                price.RequestFocus ();
                return;
            }
            double stqQty = Convert.ToDouble(qty.Text);
            double uprice = Convert.ToDouble(price.Text);
            double taxval = taxper;//Convert.ToDouble(taxper.Text);
            double amount = Math.Round((stqQty * uprice),2);
            double netamount = amount;
            bool taxinclusice = isInclusive;// isincl.Checked;
            double taxamt = 0;
            if (taxinclusice) {
                double percent = (taxval/100) + 1;
                double amt2 =Math.Round( amount / percent,2,MidpointRounding.AwayFromZero);
                taxamt = amount - amt2;
                netamount = amount - taxamt;

            } else {
                taxamt = Math.Round(amount * (taxval / 100),2,MidpointRounding.AwayFromZero);
            }

            SaleOrderDtls so = new SaleOrderDtls ();
            string[] codedesc = spinner.SelectedItem.ToString ().Split (new char[]{ '|' });
            so.sono = txtInvNo.Text;
            so.amount = amount;
            so.description = codedesc [1].Trim();
            so.icode = codedesc [0].Trim();// spinner.SelectedItem.ToString ();
            so.price = uprice;
            so.qty = stqQty;
            so.tax = taxamt;
            so.taxgrp = txttax.Text;
            so.netamount = netamount;

            var itemlist = items.Where (x => x.ICode == so.icode).ToList<Item> ();
            if (itemlist.Count == 0) {
                Toast.MakeText (this, Resources.GetString(Resource.String.msg_invaliditem), ToastLength.Long).Show ();
                return;
            }

            int id = Convert.ToInt32 (ITEMUID);
            //so..title = spinner.SelectedItem.ToString ();
            using (var db = new SQLite.SQLiteConnection (pathToDatabase)) {
                var invlist =db.Table<SaleOrderDtls> ().Where (x => x.sono == so.sono&& x.ID==id).ToList<SaleOrderDtls> ();
                if (invlist.Count > 0) {
                    SaleOrderDtls soItem = invlist [0];
                    soItem.amount = amount;
                    soItem.netamount = netamount;
                    soItem.tax = taxamt;
                    soItem.taxgrp = txttax.Text;
                    soItem.description =  codedesc [1].Trim();
                    soItem.icode =  codedesc [0].Trim(); //spinner.SelectedItem.ToString ();
                    soItem.price = uprice;
                    soItem.qty = stqQty;
                    db.Update (soItem);
                }else db.Insert (so);
            }

            //spinner.SetSelection (-1);
            qty.Text = "";
            //price.Text = "";
            ttltax.Text = "";
            ttlamt.Text = "";
            Toast.MakeText (this, Resources.GetString(Resource.String.msg_itemadded), ToastLength.Long).Show ();
        }
Example #18
0
        private void AddBarCodeItem(Item prd )
        {
            //TextView txtcnno =  FindViewById<TextView> (Resource.Id.txtInvnp);
            double stqQty = 1;
            double uprice= Utility.GetUnitPrice (trd, prd);
            double taxval = prd.tax;
            double amount = Math.Round((stqQty * uprice),2);
            double netamount = amount;
            bool taxinclusice = prd.isincludesive;
            double taxamt = 0;
            if (taxinclusice) {
                double percent = (taxval/100) + 1;
                double amt2 =Math.Round( amount / percent,2,MidpointRounding.AwayFromZero);
                taxamt = amount - amt2;
                netamount = amount - taxamt;

            } else {
                taxamt = Math.Round(amount * (taxval / 100),2,MidpointRounding.AwayFromZero);
            }

            SaleOrderDtls invdtls = new SaleOrderDtls ();
            invdtls.sono = inv.sono;
            invdtls.amount = amount;
            invdtls.icode = prd.ICode;
            invdtls.price = uprice;
            invdtls.qty = stqQty;
            invdtls.tax = taxamt;
            invdtls.taxgrp = prd.taxgrp;
            invdtls.netamount = netamount;
            invdtls.description = prd.IDesc;
            //int id = Convert.ToInt32 (ITEMUID);
            //inv..title = spinner.SelectedItem.ToString ();
            using (var db = new SQLite.SQLiteConnection (pathToDatabase)) {
                var list =db.Table<SaleOrderDtls> ().Where (x => x.sono == inv.sono && x.icode == prd.ICode).ToList ();
                if (list.Count > 0) {
                    list [0].qty = list [0].qty + 1;
                    stqQty = list [0].qty;
                    amount = Math.Round((stqQty * uprice),2);
                    netamount = amount;
                    if (taxinclusice) {
                        double percent = (taxval/100) + 1;
                        double amt2 =Math.Round( amount / percent,2,MidpointRounding.AwayFromZero);
                        taxamt = amount - amt2;
                        netamount = amount - taxamt;

                    } else {
                        taxamt = Math.Round(amount * (taxval / 100),2,MidpointRounding.AwayFromZero);
                    }
                    list [0].tax = taxamt;
                    list [0].amount =amount;
                    list [0].netamount = netamount;

                    db.Update (list [0]);
                }else db.Insert (invdtls);
            }
            spinItem.SetSelection (-1);
            Toast.MakeText (this, Resources.GetString(Resource.String.msg_itemadded), ToastLength.Long).Show ();
        }
Example #19
0
        void populate(List<SaleOrderDtls> list)
        {
            //			var documents = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
            //			pathToDatabase = Path.Combine(documents, "db_adonet.db");
            comp = DataHelper.GetCompany (pathToDatabase);
            //SqliteConnection.CreateFile(pathToDatabase);
            using (var db = new SQLite.SQLiteConnection(pathToDatabase))
            {
                var list1 = db.Table<SaleOrder>().Where(x=>x.sono==sono).ToList<SaleOrder>();
                var list2 = db.Table<SaleOrderDtls>().Where(x=>x.sono==sono).ToList<SaleOrderDtls>();
                var list3 = db.Table<Trader>().Where(x=>x.CustCode==CUSTCODE).ToList<Trader>();

                double ttlamt = 0;
                double ttltax = 0;
                if (list3.Count > 0) {
                    CUSTNAME = list3 [0].CustName;
                }
                foreach(var item in list2)
                {
                    ttlamt = ttlamt + item.netamount;
                    ttltax = ttltax + item.tax;
                    list.Add(item);
                }
                if (list1.Count > 0) {
                    list1 [0].amount = ttlamt;
                    db.Update (list1 [0]);
                }

                SaleOrderDtls inv1 = new SaleOrderDtls ();
                inv1.icode = "TAX";
                inv1.netamount = ttlamt;
                inv1.description = "TOTAL EXCL GST";
                SaleOrderDtls inv2 = new SaleOrderDtls ();
                inv2.icode = "AMOUNT";
                inv2.netamount = ttltax;
                inv2.description = "TOTAL 6% GST" ;
                SaleOrderDtls inv3 = new SaleOrderDtls ();
                inv3.icode = "TAX";
                inv3.netamount = ttlamt + ttltax;
                inv3.description = "TOTAL INCL GST" ;

                list.Add (inv1);
                list.Add (inv2);
                list.Add (inv3);

            }
        }
Example #20
0
        void populate(List<SaleOrderDtls> list)
        {
            list.Clear ();
            using (var db = new SQLite.SQLiteConnection (pathToDatabase)) {
                var list2 = db.Table<SaleOrderDtls> ().Where (x => x.sono == inv.sono)
                    .OrderByDescending(x=>x.ID)
                    .ToList<SaleOrderDtls> ();

                ttlamt = 0;
                ttltax = 0;
                foreach (var item in list2) {
                    ttlamt = ttlamt + item.netamount;
                    ttltax = ttltax + item.tax;
                    list.Add (item);
                }

                double roundVal = 0;
                double ttlNet = Utility.AdjustToNear (ttlamt + ttltax, ref roundVal);

                SaleOrderDtls inv1 = new SaleOrderDtls ();
                inv1.icode = "TAX";
                inv1.netamount = ttlamt;
                inv1.description = "TOTAL EXCL GST";
                SaleOrderDtls inv2 = new SaleOrderDtls ();
                inv2.icode = "AMOUNT";
                inv2.netamount = ttltax;
                inv2.description = "TOTAL 6% GST" ;
                SaleOrderDtls inv3 = new SaleOrderDtls ();
                inv3.icode = "TAX";
                inv3.netamount = ttlamt + ttltax;
                inv3.description = "TOTAL INCL GST" ;
                SaleOrderDtls inv4 = new SaleOrderDtls ();
                inv4.icode = "AMOUNT";
                inv4.netamount =  roundVal;
                inv4.description = "ROUNDING ADJUST";
                SaleOrderDtls inv5 = new SaleOrderDtls ();
                inv5.icode = "AMOUNT";
                inv5.netamount = ttlNet;
                inv5.description = "NET TOTAL";

                list.Add (inv1);
                list.Add (inv2);
                list.Add (inv3);

            }
        }
Example #21
0
        public string PrintSODetail_NTax(SaleOrderDtls itm,int count)
        {
            string test = "";
            string desc = itm.description;
            string pline2 = desc.ToUpper().Trim()+ "\n";
            pline2 = pline2 + count.ToString ().PadRight (4, ' ');
            if (itm.qty < 0) {
                string sqty = "(EX)"+itm.qty.ToString ().Trim ()  ;
                pline2 = pline2 +sqty.PadLeft (9, ' ')+" ";
            }else  pline2 = pline2 + itm.qty.ToString ().PadLeft (9, ' ')+" ";
            pline2 = pline2 + Math.Round (itm.price, 2).ToString ("n2").PadLeft (12, ' ')+" ";
            pline2 = pline2 + Math.Round (itm.netamount, 2).ToString ("n2").PadLeft (14, ' ');
            test += pline2 + "\n";

            return test;
        }
Example #22
0
 void Edit(SaleOrderDtls so)
 {
     var intent = new Intent(this, typeof(SOEntryActivity));
     intent.PutExtra ("invoiceno",so.sono );
     intent.PutExtra ("itemuid",so.ID.ToString() );
     intent.PutExtra ("editmode","EDIT" );
     intent.PutExtra ("customer",CUSTNAME );
     intent.PutExtra ("custcode",CUSTCODE );
     StartActivity(intent);
 }
Example #23
0
        void Printreceipt()
        {
            SaleOrderDtls[] list;
            using (var db = new SQLite.SQLiteConnection (pathToDatabase)){
                var ls= db.Table<SaleOrderDtls> ().Where (x => x.sono==inv.sono).ToList<SaleOrderDtls>();
                list = new SaleOrderDtls[ls.Count];
                ls.CopyTo (list);
            }
            //mmDevice = null;
            //findBTPrinter ();
            IPrintDocument prtInv = PrintDocManager.GetPrintDocument<PrintSalesOrder>();
            prtInv.SetDocument (inv);
            prtInv.SetDocumentDtls(list);
            prtInv.SetNoOfCopy (1);
            prtInv.SetCallingActivity (this);
            if (prtInv.StartPrint ()) {
                updatePrintedStatus (inv);

            } else {
                Toast.MakeText (this, prtInv.GetErrMsg(), ToastLength.Long).Show ();
            }
        }
Example #24
0
        private void AddBarCodeItem(Item prd)
        {
            //TextView txtcnno =  FindViewById<TextView> (Resource.Id.txtInvnp);
            double stqQty       = 1;
            double uprice       = Utility.GetUnitPrice(trd, prd);
            double taxval       = prd.tax;
            double amount       = Math.Round((stqQty * uprice), 2);
            double netamount    = amount;
            bool   taxinclusice = prd.isincludesive;
            double taxamt       = 0;

            if (taxinclusice)
            {
                double percent = (taxval / 100) + 1;
                double amt2    = Math.Round(amount / percent, 2, MidpointRounding.AwayFromZero);
                taxamt    = amount - amt2;
                netamount = amount - taxamt;
            }
            else
            {
                taxamt = Math.Round(amount * (taxval / 100), 2, MidpointRounding.AwayFromZero);
            }

            SaleOrderDtls invdtls = new SaleOrderDtls();

            invdtls.sono        = inv.sono;
            invdtls.amount      = amount;
            invdtls.icode       = prd.ICode;
            invdtls.price       = uprice;
            invdtls.qty         = stqQty;
            invdtls.tax         = taxamt;
            invdtls.taxgrp      = prd.taxgrp;
            invdtls.netamount   = netamount;
            invdtls.description = prd.IDesc;
            //int id = Convert.ToInt32 (ITEMUID);
            //inv..title = spinner.SelectedItem.ToString ();
            using (var db = new SQLite.SQLiteConnection(pathToDatabase)) {
                var list = db.Table <SaleOrderDtls> ().Where(x => x.sono == inv.sono && x.icode == prd.ICode).ToList();
                if (list.Count > 0)
                {
                    list [0].qty = list [0].qty + 1;
                    stqQty       = list [0].qty;
                    amount       = Math.Round((stqQty * uprice), 2);
                    netamount    = amount;
                    if (taxinclusice)
                    {
                        double percent = (taxval / 100) + 1;
                        double amt2    = Math.Round(amount / percent, 2, MidpointRounding.AwayFromZero);
                        taxamt    = amount - amt2;
                        netamount = amount - taxamt;
                    }
                    else
                    {
                        taxamt = Math.Round(amount * (taxval / 100), 2, MidpointRounding.AwayFromZero);
                    }
                    list [0].tax       = taxamt;
                    list [0].amount    = amount;
                    list [0].netamount = netamount;

                    db.Update(list [0]);
                }
                else
                {
                    db.Insert(invdtls);
                }
            }
            spinItem.SetSelection(-1);
            Toast.MakeText(this, Resources.GetString(Resource.String.msg_itemadded), ToastLength.Long).Show();
        }
Example #25
0
 void Delete(SaleOrderDtls invdtls)
 {
     var builder = new AlertDialog.Builder(this);
     builder.SetMessage(Resources.GetString(Resource.String.msg_confirmdelete)+"?");
     builder.SetPositiveButton("YES", (s, e) => { DeleteItem(invdtls); });
     builder.SetNegativeButton("Cancel", (s, e) => { /* do something on Cancel click */ });
     builder.Create().Show();
 }
Example #26
0
 public string OpenBTAndPrintSO(BluetoothSocket mmSocket,BluetoothDevice mmDevice,SaleOrder so,SaleOrderDtls[] list,int noofcopy )
 {
     string msg = "";
     string text = "";
     PrintSO (so, list, ref text);
     BluetoothPrint (mmSocket, mmDevice, text, noofcopy);
     return msg;
 }
Example #27
0
 void Delete(SaleOrderDtls so)
 {
     var builder = new AlertDialog.Builder(this);
     builder.SetMessage("Confimr to Delete?");
     builder.SetPositiveButton("YES", (s, e) => { DeleteItem(so); });
     builder.SetNegativeButton("Cancel", (s, e) => { /* do something on Cancel click */ });
     builder.Create().Show();
 }
Example #28
0
 internal string GetSaleOrderText_Template(string templatefilename,string pathToDatabase,string userID, SaleOrder so, SaleOrderDtls[] list)
 {
     //yet to implement
     return "";
 }
Example #29
0
 void StartPrint(SaleOrder so,SaleOrderDtls[] list,int noofcopy )
 {
     string userid = ((GlobalvarsApp)this.Application).USERID_CODE;
                     PrintInvHelper prnHelp = new PrintInvHelper (pathToDatabase, userid,compCode,branchCode);
     string msg =prnHelp.OpenBTAndPrintSO (mmSocket, mmDevice, so, list,noofcopy);
     Toast.MakeText (this, msg, ToastLength.Long).Show ();
     //AlertShow (msg);
 }
Example #30
0
        private void butSaveClick(object sender, EventArgs e)
        {
            TextView txtInvNo = FindViewById <TextView> (Resource.Id.txtInvnp);
            Spinner  spinner  = FindViewById <Spinner> (Resource.Id.txtcode);
            EditText qty      = FindViewById <EditText> (Resource.Id.txtqty);
            EditText price    = FindViewById <EditText> (Resource.Id.txtprice);
            TextView txttax   = FindViewById <TextView> (Resource.Id.txttax);
            EditText ttlamt   = FindViewById <EditText> (Resource.Id.txtamount);
            EditText ttltax   = FindViewById <EditText> (Resource.Id.txttaxamt);

            if (spinner.SelectedItem == null)
            {
                Toast.MakeText(this, Resources.GetString(Resource.String.msg_invaliditem), ToastLength.Long).Show();
                spinner.RequestFocus();
                return;
            }

            if (string.IsNullOrEmpty(qty.Text))
            {
                Toast.MakeText(this, Resources.GetString(Resource.String.msg_invalidqty), ToastLength.Long).Show();
                qty.RequestFocus();
                return;
            }
            if (string.IsNullOrEmpty(price.Text))
            {
                Toast.MakeText(this, Resources.GetString(Resource.String.msg_invalidprice), ToastLength.Long).Show();
                price.RequestFocus();
                return;
            }
            double stqQty       = Convert.ToDouble(qty.Text);
            double uprice       = Convert.ToDouble(price.Text);
            double taxval       = taxper;      //Convert.ToDouble(taxper.Text);
            double amount       = Math.Round((stqQty * uprice), 2);
            double netamount    = amount;
            bool   taxinclusice = isInclusive;          // isincl.Checked;
            double taxamt       = 0;

            if (taxinclusice)
            {
                double percent = (taxval / 100) + 1;
                double amt2    = Math.Round(amount / percent, 2, MidpointRounding.AwayFromZero);
                taxamt    = amount - amt2;
                netamount = amount - taxamt;
            }
            else
            {
                taxamt = Math.Round(amount * (taxval / 100), 2, MidpointRounding.AwayFromZero);
            }

            SaleOrderDtls so = new SaleOrderDtls();

            string[] codedesc = spinner.SelectedItem.ToString().Split(new char[] { '|' });
            so.sono        = txtInvNo.Text;
            so.amount      = amount;
            so.description = codedesc [1].Trim();
            so.icode       = codedesc [0].Trim();      // spinner.SelectedItem.ToString ();
            so.price       = uprice;
            so.qty         = stqQty;
            so.tax         = taxamt;
            so.taxgrp      = txttax.Text;
            so.netamount   = netamount;

            var itemlist = items.Where(x => x.ICode == so.icode).ToList <Item> ();

            if (itemlist.Count == 0)
            {
                Toast.MakeText(this, Resources.GetString(Resource.String.msg_invaliditem), ToastLength.Long).Show();
                return;
            }

            int id = Convert.ToInt32(ITEMUID);

            //so..title = spinner.SelectedItem.ToString ();
            using (var db = new SQLite.SQLiteConnection(pathToDatabase)) {
                var invlist = db.Table <SaleOrderDtls> ().Where(x => x.sono == so.sono && x.ID == id).ToList <SaleOrderDtls> ();
                if (invlist.Count > 0)
                {
                    SaleOrderDtls soItem = invlist [0];
                    soItem.amount      = amount;
                    soItem.netamount   = netamount;
                    soItem.tax         = taxamt;
                    soItem.taxgrp      = txttax.Text;
                    soItem.description = codedesc [1].Trim();
                    soItem.icode       = codedesc [0].Trim();                //spinner.SelectedItem.ToString ();
                    soItem.price       = uprice;
                    soItem.qty         = stqQty;
                    db.Update(soItem);
                }
                else
                {
                    db.Insert(so);
                }
            }

            //spinner.SetSelection (-1);
            qty.Text = "";
            //price.Text = "";
            ttltax.Text = "";
            ttlamt.Text = "";
            Toast.MakeText(this, Resources.GetString(Resource.String.msg_itemadded), ToastLength.Long).Show();
        }
Example #31
0
 void DeleteItem(SaleOrderDtls so)
 {
     using (var db = new SQLite.SQLiteConnection(pathToDatabase))
     {
         var list = db.Table<SaleOrderDtls>().Where(x=>x.sono==sono&& x.ID==so.ID).ToList<SaleOrderDtls>();
         if (list.Count > 0) {
             db.Delete (list [0]);
             var arrlist= listData.Where(x=>x.sono==sono&& x.ID==so.ID).ToList<SaleOrderDtls>();
             if (arrlist.Count > 0) {
                 listData.Remove (arrlist [0]);
                 SetViewDlg viewdlg = SetViewDelegate;
                 listView.Adapter = new GenericListAdapter<SaleOrderDtls> (this, listData, Resource.Layout.InvDtlItemView, viewdlg);
             }
         }
     }
 }
Example #32
0
        private void butAddClick(object sender, EventArgs e)
        {
            GetControls();
            TextView txttax = FindViewById <TextView> (Resource.Id.txttax);

            if (!IsValidEntry())
            {
                return;
            }

            string[] codedesc = spinItem.SelectedItem.ToString().Split(new char[] { '|' });
            var      itemlist = items.Where(x => x.ICode == codedesc [0].Trim()).ToList <Item> ();

            if (itemlist.Count == 0)
            {
                Toast.MakeText(this, Resources.GetString(Resource.String.msg_invaliditem), ToastLength.Long).Show();
                return;
            }
            Item ItemCode = itemlist [0];

            double stqQty       = Convert.ToDouble(txtqty.Text);
            double uprice       = Convert.ToDouble(txtprice.Text);
            double taxval       = taxper;      //Convert.ToDouble(taxper.Text);
            double amount       = Math.Round((stqQty * uprice), 2);
            double netamount    = amount;
            bool   taxinclusice = isInclusive;          // isincl.Checked;
            double taxamt       = 0;

            if (taxinclusice)
            {
                double percent = (taxval / 100) + 1;
                double amt2    = Math.Round(amount / percent, 2, MidpointRounding.AwayFromZero);
                taxamt    = amount - amt2;
                netamount = amount - taxamt;
            }
            else
            {
                taxamt = Math.Round(amount * (taxval / 100), 2, MidpointRounding.AwayFromZero);
            }
            using (var db = new SQLite.SQLiteConnection(pathToDatabase)) {
                SaleOrderDtls invdtl = new SaleOrderDtls();

                if (IsEdit)
                {
                    var list = db.Table <SaleOrderDtls> ().Where(x => x.sono == inv.sono && x.ID == IDdtls).ToList <SaleOrderDtls> ();
                    if (list.Count > 0)
                    {
                        invdtl = list [0];
                    }
                }

                invdtl.sono          = inv.sono;
                invdtl.amount        = amount;
                invdtl.icode         = codedesc [0].Trim();        // spinner.SelectedItem.ToString ();
                invdtl.price         = uprice;
                invdtl.qty           = stqQty;
                invdtl.tax           = taxamt;
                invdtl.taxgrp        = txttax.Text;
                invdtl.netamount     = netamount;
                invdtl.description   = ItemCode.IDesc;
                invdtl.isincludesive = taxinclusice;
                if (IsEdit)
                {
                    db.Update(invdtl);
                }
                else
                {
                    db.Insert(invdtl);
                }
            }


            IsEdit              = false;
            IDdtls              = -1;
            spinItem.Enabled    = true;
            butFindItem.Enabled = true;
            //spinner.SetSelection (-1);
            txtqty.Text     = "";
            txtInvMode.Text = "NEW";
            RefreshItemList();
        }
Example #33
0
        void populate(List<SaleOrderDtls> list)
        {
            comp = DataHelper.GetCompany (pathToDatabase,compCode,branchCode);
            //SqliteConnection.CreateFile(pathToDatabase);
            using (var db = new SQLite.SQLiteConnection(pathToDatabase))
            {
                var list1 = db.Table<SaleOrder>().Where(x=>x.sono==sono&&x.CompCode==compCode&&x.BranchCode==branchCode).ToList<SaleOrder>();
                var list2 = db.Table<SaleOrderDtls>().Where(x=>x.sono==sono&&x.CompCode==compCode&&x.BranchCode==branchCode).ToList<SaleOrderDtls>();
                var list3 = db.Table<Trader>().Where(x=>x.CustCode==CUSTCODE&&x.CompCode==compCode&&x.BranchCode==branchCode).ToList<Trader>();

                double ttlamt = 0;
                double ttltax = 0;
                if (list3.Count > 0) {
                    CUSTNAME = list3 [0].CustName;
                }
                foreach(var item in list2)
                {
                    ttlamt = ttlamt + item.netamount;
                    ttltax = ttltax + item.tax;
                    list.Add(item);
                }
                if (list1.Count > 0) {
                    list1 [0].amount = ttlamt;
                    db.Update (list1 [0]);
                }
                SaleOrderDtls inv1 = new SaleOrderDtls ();
                inv1.icode = "TAX";
                inv1.netamount = ttltax;
                SaleOrderDtls inv2 = new SaleOrderDtls ();
                inv2.icode = "AMOUNT";
                inv2.netamount = ttlamt;

                list.Add (inv1);
                list.Add (inv2);
            }
        }
Example #34
0
        private void butAddClick(object sender,EventArgs e)
        {
            GetControls ();
            TextView txttax =  FindViewById<TextView> (Resource.Id.txttax);

            if (!IsValidEntry ())
                return;

            string[] codedesc = spinItem.SelectedItem.ToString ().Split (new char[]{ '|' });
            var itemlist = items.Where (x => x.ICode == codedesc [0].Trim()).ToList<Item> ();
            if (itemlist.Count == 0) {
                Toast.MakeText (this, Resources.GetString(Resource.String.msg_invaliditem), ToastLength.Long).Show ();
                return;
            }
            Item ItemCode = itemlist [0];

            double stqQty = Convert.ToDouble(txtqty.Text);
            double uprice = Convert.ToDouble(txtprice.Text);
            double taxval = taxper;//Convert.ToDouble(taxper.Text);
            double amount = Math.Round((stqQty * uprice),2);
            double netamount = amount;
            bool taxinclusice = isInclusive;// isincl.Checked;
            double taxamt = 0;
            if (taxinclusice) {
                double percent = (taxval/100) + 1;
                double amt2 =Math.Round( amount / percent,2,MidpointRounding.AwayFromZero);
                taxamt = amount - amt2;
                netamount = amount - taxamt;

            } else {
                taxamt = Math.Round(amount * (taxval / 100),2,MidpointRounding.AwayFromZero);
            }
            using (var db = new SQLite.SQLiteConnection (pathToDatabase)) {
                SaleOrderDtls invdtl = new SaleOrderDtls ();

                if (IsEdit) {
                    var list = db.Table<SaleOrderDtls> ().Where (x => x.sono == inv.sono && x.ID == IDdtls).ToList<SaleOrderDtls> ();
                    if (list.Count > 0) {
                        invdtl = list [0];
                    }
                }

                invdtl.sono =inv.sono;
                invdtl.amount = amount;
                invdtl.icode = codedesc [0].Trim();// spinner.SelectedItem.ToString ();
                invdtl.price = uprice;
                invdtl.qty = stqQty;
                invdtl.tax = taxamt;
                invdtl.taxgrp = txttax.Text;
                invdtl.netamount = netamount;
                invdtl.description = ItemCode.IDesc;
                invdtl.isincludesive = taxinclusice;
                if (IsEdit)
                    db.Update(invdtl);
                else db.Insert (invdtl);
            }

            IsEdit = false;
            IDdtls = -1;
            spinItem.Enabled = true;
            butFindItem.Enabled = true;
            //spinner.SetSelection (-1);
            txtqty.Text = "";
            txtInvMode.Text = "NEW";
            RefreshItemList ();
        }
Example #35
0
 void PrintInv(SaleOrder so,int noofcopy)
 {
     //Toast.MakeText (this, "print....", ToastLength.Long).Show ();
     SaleOrderDtls[] list;
     using (var db = new SQLite.SQLiteConnection (pathToDatabase)){
         var ls= db.Table<SaleOrderDtls> ().Where (x => x.sono==so.sono).ToList<SaleOrderDtls>();
         list = new SaleOrderDtls[ls.Count];
         ls.CopyTo (list);
     }
     IPrintDocument prtSO = PrintDocManager.GetPrintDocument<PrintSalesOrder>();
     prtSO.SetDocument (so);
     prtSO.SetDocumentDtls(list);
     prtSO.SetNoOfCopy (noofcopy);
     prtSO.SetCallingActivity (this);
     if (prtSO.StartPrint ()) {
         updatePrintedStatus (so);
         var found = listData.Where (x => x.sono == so.sono).ToList ();
         if (found.Count > 0) {
             found [0].isPrinted = true;
             SetViewDlg viewdlg = SetViewDelegate;
             listView.Adapter = new GenericListAdapter<SaleOrder> (this, listData, Resource.Layout.ListItemRow, viewdlg);
         }
     } else {
         Toast.MakeText (this, prtSO.GetErrMsg(), ToastLength.Long).Show ();
     }
 }
Example #36
0
 void PrintSO(SaleOrder so, SaleOrderDtls[] list, ref string test)
 {
     PrintCompHeader (ref test);
     PrintCustomer (ref test, so.custcode);
     PrintSOHeader (ref test, so);
     string dline = "";
     double ttlAmt = 0;
     double ttltax = 0;
     int count = 0;
     foreach (SaleOrderDtls itm in list) {
         count += 1;
         dline = dline + PrintSODetail (itm, count);
         ttlAmt = ttlAmt + itm.netamount;
         ttltax = ttltax + itm.tax;
     }
     test += dline;
     PrintTotal (ref test, ttlAmt, ttltax);
     PrintSOTaxSumm (ref test, list);
     PrintFooter (ref test);
     test += "\nTHANK YOU\n\n\n\n";
 }