예제 #1
0
        private void btnDelete_Click(object sender, EventArgs e)
        {
            string str = MessageBox.Show("Are you want to delete this Company", "", MessageBoxButtons.YesNo, MessageBoxIcon.Warning).ToString();

            if (str.Equals("Yes"))
            {
                SQLHelper      objSQLHelper      = new SQLHelper();
                SqlTransaction objSqlTransaction = objSQLHelper.BeginTrans();
                try
                {
                    DeliveryOrderDL objDeliveryOrderDL = new DeliveryOrderDL();
                    int             DeliveryOrderId    = Convert.ToInt32(ListDeliveryOrder.SelectedValue);
                    objDeliveryOrderDL.Delete(objSqlTransaction, DeliveryOrderId);


                    objSqlTransaction.Commit();
                    Common.MessageDelete();
                    FillListBox();
                    ControlClear();
                }
                catch
                {
                    objSqlTransaction.Rollback();
                }
            }
        }
예제 #2
0
        // [SwaggerOperation("Get")]
        public HttpResponseMessage GetAllDOHeaderandDetails()
        {
            DeliveryOrderDL doObj = new DeliveryOrderDL();
            var             list  = doObj.GetAllDOHeaderandDetails();

            return(Request.CreateResponse(HttpStatusCode.OK, list, Configuration.Formatters.JsonFormatter));
        }
예제 #3
0
        void GridBind()
        {
            dtDeletingDeliveryOrderDetail.Rows.Clear();
            dataGridView1.Rows.Clear();

            try
            {
                int DeliveryOrderId = Convert.ToInt32(ListDeliveryOrder.SelectedValue);
                if (DeliveryOrderId <= 0)
                {
                    btnSave.Visible   = true;
                    btnUpdate.Visible = false;
                    btnDelete.Visible = false;
                }
                else
                {
                    BindControl();
                }
                DeliveryOrderDL objDeliveryOrderDL = new DeliveryOrderDL();
                DataTable       dt = objDeliveryOrderDL.GetDeliveryOrderDetail(DeliveryOrderId, purchaseOrderEL.Purchases_Order_Id);

                textDeliveryOrderNo.Text = objDeliveryOrderDL.DeliveryOrderNo;
                textCGST.Text            = objDeliveryOrderDL.CGST.ToString();
                textSGST.Text            = objDeliveryOrderDL.SGST.ToString();
                textIGST.Text            = objDeliveryOrderDL.IGST.ToString();
                dateTimePickerDeliveryOrderDate.Value = objDeliveryOrderDL.DeliveryDate;



                if (dt.Rows.Count > 0)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        dataGridView1.Rows.Add();
                        dataGridView1.Rows[i].Cells["IS_Item_Deliver"].Value          = dt.Rows[i]["IS_Item_Deliver"];
                        dataGridView1.Rows[i].Cells["Delivery_Detail_Id"].Value       = dt.Rows[i]["Delivery_Detail_Id"];
                        dataGridView1.Rows[i].Cells["Purchase_Order_Detail_Id"].Value = dt.Rows[i]["Purchase_Order_Detail_Id"];
                        dataGridView1.Rows[i].Cells["Item_Name"].Value        = dt.Rows[i]["Item_Name"];
                        dataGridView1.Rows[i].Cells["Item_Quantity"].Value    = dt.Rows[i]["Item_Quantity"];
                        dataGridView1.Rows[i].Cells["Item_Rate"].Value        = dt.Rows[i]["Item_Rate"];
                        dataGridView1.Rows[i].Cells["Total_Amount"].Value     = dt.Rows[i]["Total_Amount"];
                        dataGridView1.Rows[i].Cells["Deliver_Quantity"].Value = dt.Rows[i]["Deliver_Quantity"];
                        dataGridView1.Rows[i].Cells["Gst_Rate"].Value         = dt.Rows[i]["Gst_Rate"];


                        if (Convert.ToInt32(dt.Rows[i]["IS_Item_Deliver"]) == 1)
                        {
                            dataGridView1.Rows[i].DefaultCellStyle.BackColor = System.Drawing.Color.BurlyWood;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }
        }
예제 #4
0
        public HttpResponseMessage CreateInvoicePDF(string orderkey)
        {
            var viewmodel = new InvoiceViewModel();
            //   string orderKey = "33215b82-91a6-11e9-b6c9-3f0945f4a3b5";
            DeliveryOrderDL orderDl = new DeliveryOrderDL();
            InvoiceDL       dl      = new InvoiceDL();
            var             orderBO = orderDl.GetDeliveryOrder(orderkey);

            viewmodel.Order = orderBO;
            var orderdetailBO = orderDl.GetOrderDetailsByKey(orderkey);

            if (orderdetailBO != null && orderdetailBO.Count > 0)
            {
                var orderdtlList = new List <ThinOrderDetailViewModel>();
                orderdetailBO.ForEach(d =>
                {
                    orderdtlList.Add(new ThinOrderDetailViewModel()
                    {
                        Chassis        = d.Chassis,
                        ContainerNo    = d.ContainerNo,
                        OrderDetailKey = d.OrderDetailKey,
                        InvoiceHeader  = d.OrderDetailKey != null ? dl.GetInvoicebyOrderDetailKey(Convert.ToString(d.OrderDetailKey)) : null,
                        InvoiceDetail  = d.OrderDetailKey != null ? dl.GetInvoiceDetail(Convert.ToString(d.OrderDetailKey)) : null,
                    });
                });
                viewmodel.OrderDtl = orderdtlList;
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Order not found", Configuration.Formatters.JsonFormatter));
            }
            var stringified = new InvoiceViewController().RenderRazorViewToString("~/Views/InvoiceView/Index.cshtml", viewmodel);
            var pdf         = IronPdf.HtmlToPdf.StaticRenderHtmlAsPdf(stringified);
            var basepath    = HttpContext.Current.Server.MapPath("~/App_Data/Files/");
            var doccreated  = pdf.SaveAs(Path.Combine(basepath, $"{viewmodel.Order.OrderNo}.pdf"));

            if (doccreated.PageCount > 0)
            {
                return(Request.CreateResponse(HttpStatusCode.OK, "Invoice generated", Configuration.Formatters.JsonFormatter));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Error occurred while creating Invoice", Configuration.Formatters.JsonFormatter));
            }
        }
예제 #5
0
        void FillListBox()
        {
            try
            {
                DeliveryOrderDL objDeliveryOrderDL = new DeliveryOrderDL();
                DataTable       dt = objDeliveryOrderDL.GetPurchasesDeliveryOrder(companyEL.Company_id, purchaseOrderEL.Purchases_Order_Id);

                ListDeliveryOrder.SelectedValueChanged -= ListPurchaseOrder_SelectedValueChanged;
                ListDeliveryOrder.DataSource            = dt;
                ListDeliveryOrder.DisplayMember         = "Delivery_No";
                ListDeliveryOrder.ValueMember           = "Delivery_Id";
                GridBind();
                ListDeliveryOrder.SelectedValueChanged += ListPurchaseOrder_SelectedValueChanged;
            }
            catch
            {
            }
        }
예제 #6
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            SQLHelper      objSQLHelper      = new SQLHelper();
            SqlTransaction objSqlTransaction = objSQLHelper.BeginTrans();

            try
            {
                DeliveryOrderDL objDeliveryOrderDL = new DeliveryOrderDL();

                string DeliveryOrderNo = "";
                double CGST            = 0;
                double SGST            = 0;
                double IGST            = 0;
                if (textDeliveryOrderNo.Text.Trim() != "")
                {
                    try
                    {
                        DeliveryOrderNo = Convert.ToInt64(textDeliveryOrderNo.Text).ToString();
                    }
                    catch (Exception)
                    {
                        Common.MessageAlert("Please enter integer value for Challan no");
                        return;
                    }
                }
                if (textCGST.Text.Trim() != "")
                {
                    try
                    {
                        CGST = Convert.ToDouble(textCGST.Text);
                    }
                    catch (Exception)
                    {
                        Common.MessageAlert("Please enter integer value for CGST");
                        return;
                    }
                }
                if (textSGST.Text.Trim() != "")
                {
                    try
                    {
                        SGST = Convert.ToDouble(textSGST.Text);
                    }
                    catch (Exception)
                    {
                        Common.MessageAlert("Please enter integer value for SGST");
                        return;
                    }
                }
                if (textIGST.Text.Trim() != "")
                {
                    try
                    {
                        IGST = Convert.ToDouble(textIGST.Text);
                    }
                    catch (Exception)
                    {
                        Common.MessageAlert("Please enter integer value for IGST");
                        return;
                    }
                }

                DateTime  DeliveryOrderDate = dateTimePickerDeliveryOrderDate.Value;
                DataTable dt = new DataTable();
                dt.Columns.Add("Purchase_Order_Detail_Id", typeof(int));
                dt.Columns.Add("Deliver_Quantity", typeof(double));
                dt.Columns.Add("Gst_Rate", typeof(double));

                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    if (Convert.ToInt32(dataGridView1.Rows[i].Cells["IS_Item_Deliver"].Value) == 1)
                    {
                        double PurchaseOrderDetailId = Convert.ToInt32(dataGridView1.Rows[i].Cells["Purchase_Order_Detail_Id"].Value);
                        double DeliverQuantity       = Convert.ToDouble(dataGridView1.Rows[i].Cells["Deliver_Quantity"].Value);
                        double GstRate = Convert.ToDouble(dataGridView1.Rows[i].Cells["Gst_Rate"].Value);

                        if (DeliverQuantity > 0)
                        {
                            dt.Rows.Add(PurchaseOrderDetailId, DeliverQuantity, GstRate);
                        }
                        else
                        {
                            Common.MessageAlert("Can not deliver 0 or -ve quantity");
                            throw new Exception();
                        }
                    }
                }

                if (dt.Rows.Count > 0)
                {
                    objDeliveryOrderDL.Insert(objSqlTransaction, companyEL.Company_id, companyEL.Company_Type_Id, purchaseOrderEL.Purchases_Order_Id, DeliveryOrderDate, DeliveryOrderNo, CGST, SGST, IGST, dt);
                    objSqlTransaction.Commit();
                    Common.MessageSave();
                    FillListBox();
                    ControlClear();
                }
                else
                {
                    Common.MessageAlert("Select at least one item to deliver ");
                }
            }
            catch (Exception ex)
            {
                objSqlTransaction.Rollback();
                Common.MessageAlert("First enter data in correct format");
            }
        }
예제 #7
0
        public IEnumerable <AddressBO> GetAddressesByType(int addressType)
        {
            DeliveryOrderDL dl = new DeliveryOrderDL();

            var list = EnumExtensions.GetEnumValues <AddressType>();
            List <AddressBO> returnList = new List <AddressBO>();

            var         specifiedType = list.FirstOrDefault(a => a.Value == addressType);
            AddressType addType;

            Enum.TryParse(specifiedType.Name, out addType);

            switch (addType)
            {
            case AddressType.Customer:
            {
                var CustomerRepository = new CustomerRepository();
                var allcustomers       = CustomerRepository.GetAll();

                foreach (var customer in allcustomers)
                {
                    var addressBO = dl.GetAddress(customer.addrkey);
                    addressBO.AddrKey = customer.addrkey;
                    addressBO.Name    = customer.custname;
                    returnList.Add(addressBO);
                }
            }
            break;

            case AddressType.Company:
            {
                var DL        = new CompanyDL();
                var companies = DL.GetCompanies();

                foreach (var company in companies)
                {
                    var addressBO = DL.GetAddress(company.addrkey);
                    addressBO.AddrKey = company.addrkey;
                    addressBO.Name    = company.compname;
                    returnList.Add(addressBO);
                }
            }
            break;

            case AddressType.ShippingPort:
            {
                var shippingRepo = new ShippingPortRepository();
                var allPorts     = shippingRepo.GetAll();
                foreach (var port in allPorts)
                {
                    var addressBO = dl.GetAddress(port.addrkey);
                    addressBO.AddrKey = port.addrkey;
                    addressBO.Name    = port.shippingportid;
                    returnList.Add(addressBO);
                }
            }
            break;

            case AddressType.Terminal:
            {
                var shippingRepo = new TerminalRepository();
                var allPorts     = shippingRepo.GetAll();
                foreach (var port in allPorts)
                {
                    var addressBO = dl.GetAddress(port.addrkey);
                    addressBO.AddrKey = port.portkey;
                    returnList.Add(addressBO);
                }
            }
            break;

            case AddressType.Warehouse:
            {
                var shippingRepo = new WarehouseRepository();
                var allPorts     = shippingRepo.GetAll();
                foreach (var port in allPorts)
                {
                    var addressBO = dl.GetAddress(port.addrkey);
                    addressBO.AddrKey = port.warehousekey;
                    addressBO.Name    = port.warehouseid;
                    returnList.Add(addressBO);
                }
            }
            break;

            case AddressType.Vendor:
            {
                var repo     = new VendorRepository();
                var allPorts = repo.GetAll();
                foreach (var port in allPorts)
                {
                    var addressBO = dl.GetAddress(port.addrkey);
                    addressBO.AddrKey = port.vendkey;
                    addressBO.Name    = port.vendname;
                    returnList.Add(addressBO);
                }
            }
            break;
            }
            return(returnList);
        }
예제 #8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="custname"></param>
        /// <returns></returns>
        //[HttpPost]
        //[Route("DownloadInvoice_1")]
        //[SwaggerOperation("DownloadInvoice_1")]
        private HttpResponseMessage DownloadInvoice_1(string orderkey)
        {
            // var invoicetotals = dl.AutoPullInvoiceCosts(orderkey);
            var             fileuploadPath = HttpContext.Current.Server.MapPath("~/App_Data/Files/");
            PdfDocument     pdfDoc         = new PdfDocument(new PdfWriter(Path.Combine(fileuploadPath, $"invoice_{orderkey}.pdf")));
            DeliveryOrderDL doObj          = new DeliveryOrderDL();
            var             orderHeader    = doObj.GetDeliveryOrder(orderkey);
            var             customer       = new CustomerDL().GetCustomerbykey(orderHeader.CustKey);

            var      orderdetaillist = doObj.GetOrderDetailsByKey(orderkey);
            Document doc             = new Document(pdfDoc);

            /*
             * 1483 Via Plata StreetLong Beach, CA
             */
            var paragraph = new Paragraph("INVOICE").SetTextAlignment(TextAlignment.CENTER).SetFontSize(15);

            doc.Add(paragraph);

            var cell = new Cell().SetTextAlignment(TextAlignment.LEFT);

            cell.Add(new Paragraph(new Text("PLEASE REMIT TO").SetFontSize(14).SetBold()));
            cell.Add(new Paragraph("Junction Collaborative Transports").SetFontSize(12));
            cell.Add(new Paragraph("1483 Via Plata Street").SetFontSize(12));
            cell.Add(new Paragraph("Long Beach, CA").SetFontSize(12));
            cell.Add(new Paragraph("90810").SetFontSize(12));
            cell.Add(new Paragraph("Phone: (310) 537-7730").SetFontSize(12));
            cell.Add(new Paragraph("Fax: (310) 537-7723").SetFontSize(12));

            //p.Add(new Paragraph().Add("PLEASE REMIT TO").Add(customer.CustName).Add(customer.Address.Address1)
            //    .Add(customer.Address.Address2).Add(customer.Address.City).Add(customer.Address.State)
            //    .Add(customer.Address.Zip));
            doc.Add(cell);

            List      header       = new List();
            double    runningtotal = 0.0;
            InvoiceDL dl           = new InvoiceDL();

            foreach (var orderdetail in orderdetaillist)
            {
                var   invoice  = dl.GetInvoicebyOrderDetailKey(orderdetail.OrderDetailKey.ToString());
                Table dtlTable = new Table(UnitValue.CreatePercentArray(7)).UseAllAvailableWidth();
                dtlTable.AddHeaderCell(new Cell().Add(new Paragraph("Container no")));
                dtlTable.AddHeaderCell(new Cell().Add(new Paragraph("Container size")));
                dtlTable.AddHeaderCell(new Cell().Add(new Paragraph("Chassis")));
                dtlTable.AddHeaderCell(new Cell().Add(new Paragraph("Invoice No")));
                dtlTable.AddHeaderCell(new Cell().Add(new Paragraph("Due date")));
                dtlTable.AddHeaderCell(new Cell().Add(new Paragraph("Invoice Date")));
                dtlTable.AddHeaderCell(new Cell().Add(new Paragraph("Amount")));
                dtlTable.AddCell(new Cell().Add(new Paragraph(orderdetail.ContainerNo)));
                dtlTable.AddCell(new Cell().Add(new Paragraph(orderdetail.ContainerSize.ToString())));
                dtlTable.AddCell(new Cell().Add(new Paragraph(orderdetail.Chassis)));
                dtlTable.AddCell(new Cell().Add(new Paragraph(invoice.InvoiceNo.ToString())));
                dtlTable.AddCell(new Cell().Add(new Paragraph(invoice.DueDate.ToString())));
                dtlTable.AddCell(new Cell().Add(new Paragraph(invoice.InvoiceDate.ToString())));
                dtlTable.AddCell(new Cell().Add(new Paragraph(invoice.InvoiceAmt.ToString())));
                runningtotal += (double)invoice.InvoiceAmt;
                ListItem dtl = new ListItem();
                dtl.Add(new Paragraph().Add(dtlTable));

                // doc.Add(dtlTable);

                var      invoicedtl  = dl.GetInvoiceDetail(orderdetail.OrderDetailKey.ToString());
                ListItem invoiceItem = new ListItem();
                Table    table       = new Table(UnitValue.CreatePercentArray(5));
                table.AddHeaderCell(new Cell().Add(new Paragraph("Item")));
                table.AddHeaderCell(new Cell().Add(new Paragraph("Price")));
                table.AddHeaderCell(new Cell().Add(new Paragraph("Quantity")));
                table.AddHeaderCell(new Cell().Add(new Paragraph("UnitPrice")));
                table.AddHeaderCell(new Cell().Add(new Paragraph("Excess Amount")));

                foreach (var invoiceline in invoicedtl)
                {
                    table.AddCell(new Cell().Add(new Paragraph(invoiceline.Description)));
                    table.AddCell(new Cell().Add(new Paragraph(invoiceline.Price.ToString())));
                    table.AddCell(new Cell().Add(new Paragraph(invoiceline.Quantity.ToString())));
                    table.AddCell(new Cell().Add(new Paragraph(invoiceline.UnitPrice.ToString())));
                    table.AddCell(new Cell().Add(new Paragraph(invoiceline.ExcessAmount.ToString())));
                    runningtotal += (double)invoiceline.Price * (double)invoiceline.Quantity;
                }

                invoiceItem.Add(new Paragraph("Detailed Breakup:").SetFirstLineIndent(25).Add(table));
                dtl.Add(invoiceItem);
                header.Add(dtl);
            }
            header.SetSymbolIndent(80).Add($"Total:{runningtotal.ToString()}");
            doc.Add(header);
            //Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);


            // By default column width is calculated automatically for the best fit.
            // useAllAvailableWidth() method set table to use the whole page's width while placing the content.

            //foreach (var record in invoicetotals)
            //{
            //    table.AddCell(new Cell().Add(new Paragraph(record.ContainerNo)));
            //    table.AddCell(new Cell().Add(new Paragraph(record.ItemId)));
            //    table.AddCell(new Cell().Add(new Paragraph(record.UnitPrice.ToString())));
            //}
            //table.AddCell(new Cell().Add(new Paragraph()));
            //table.AddCell(new Cell().Add(new Paragraph("Totals:")));
            //table.AddCell(new Cell().Add(new Paragraph(invoicetotals.Select(x => x.UnitPrice).Sum().ToString())));
            //doc.Add(table);
            //}
            doc.Close();
            if (doc != null)
            {
                byte[] bytes = File.ReadAllBytes(Path.Combine(fileuploadPath, $"invoice_{orderkey}.pdf"));
                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK);
                //Set the Response Content.
                response.Content = new ByteArrayContent(bytes);

                //Set the Response Content Length.
                response.Content.Headers.ContentLength = bytes.LongLength;

                //Set the Content Disposition Header Value and FileName.
                response.Content.Headers.ContentDisposition          = new ContentDispositionHeaderValue("attachment");
                response.Content.Headers.ContentDisposition.FileName = $"invoice_{orderkey}.pdf";

                //Set the File Content Type.
                response.Content.Headers.ContentType = new MediaTypeHeaderValue(MimeMapping.GetMimeMapping($"invoice_{orderkey}.pdf"));
                return(response);
            }
            return(Request.CreateResponse(HttpStatusCode.InternalServerError, string.Empty, Configuration.Formatters.JsonFormatter));
        }
예제 #9
0
        public HttpResponseMessage CreatePDFforInvoice(string invoicekey)
        {
            var             viewmodel = new InvoiceViewModel();
            DeliveryOrderDL orderDl   = new DeliveryOrderDL();
            InvoiceDL       dl        = new InvoiceDL();

            string orderkey = dl.getOrderkeybyInvoicekey(invoicekey);

            if (!string.IsNullOrEmpty(orderkey))
            {
                var orderBO = orderDl.GetDeliveryOrder(orderkey);
                viewmodel.Order         = orderBO;
                viewmodel.InvoiceHeader = dl.GetInvoicebyinvoiceKey(invoicekey);
                viewmodel.InvoiceDetail = dl.GetInvoiceDetail(invoicekey);

                var orderdetailBO = orderDl.GetOrderDetailsByKey(orderkey);

                if (orderdetailBO != null && orderdetailBO.Count > 0)
                {
                    var orderdtlList = new List <ThinOrderDetailViewModel>();
                    orderdetailBO.ForEach(d =>
                    {
                        orderdtlList.Add(new ThinOrderDetailViewModel()
                        {
                            Chassis        = d.Chassis,
                            ContainerNo    = d.ContainerNo,
                            OrderDetailKey = d.OrderDetailKey,
                            //InvoiceHeader = d.OrderDetailKey != null ? dl.GetInvoicebyinvoiceKey(Convert.ToString(invoicekey)) : null,
                            //InvoiceDetail = d.OrderDetailKey != null ? dl.GetInvoiceDetail(invoicekey) : null,
                        });
                    });
                    viewmodel.OrderDtl = orderdtlList;
                }
            }
            //if (orderdetailBO != null && orderdetailBO.Count > 0)
            //{
            //    var orderdtlList = new List<ThinOrderDetailViewModel>();
            //    orderdetailBO.ForEach(d =>
            //    {
            //        orderdtlList.Add(new ThinOrderDetailViewModel()
            //        {
            //            Chassis = d.Chassis,
            //            ContainerNo = d.ContainerNo,
            //            OrderDetailKey = d.OrderDetailKey,
            //            InvoiceHeader = d.OrderDetailKey != null ? dl.GetInvoicebyOrderDetailKey(Convert.ToString(d.OrderDetailKey)) : null,
            //            InvoiceDetail = d.OrderDetailKey != null ? dl.GetInvoiceDetail(Convert.ToString(d.OrderDetailKey)) : null,

            //        });
            //    });
            //    viewmodel.OrderDtl = orderdtlList;
            //}
            //else
            //{
            //    return Request.CreateResponse(HttpStatusCode.InternalServerError, "Order not found", Configuration.Formatters.JsonFormatter);
            //}

            if (viewmodel == null)
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Order not found", Configuration.Formatters.JsonFormatter));
            }

            var stringified = new InvoiceViewController().RenderRazorViewToString("~/Views/InvoiceView/Invoice.cshtml", viewmodel);
            var pdf         = IronPdf.HtmlToPdf.StaticRenderHtmlAsPdf(stringified);
            var basepath    = HttpContext.Current.Server.MapPath("~/App_Data/Files/");
            var doccreated  = pdf.SaveAs(Path.Combine(basepath, $"{viewmodel.Order.OrderNo}.pdf"));

            if (doccreated.PageCount > 0)
            {
                return(Request.CreateResponse(HttpStatusCode.OK, "Invoice generated", Configuration.Formatters.JsonFormatter));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Error occurred while creating Invoice", Configuration.Formatters.JsonFormatter));
            }
        }