Ejemplo n.º 1
0
        private static string makeStringInvoice(VNSUploadData invoices, out string ErrorMessage)
        {
            ErrorMessage = "";
            try
            {
                StringBuilder sbInvoice = new StringBuilder("<Invoice>");
                sbInvoice.AppendFormat("<InvType>{0}</InvType>", invoices.InvType);
                sbInvoice.AppendFormat("<FileName>{0}</FileName>", convertSpecialCharacter(invoices.FileName));
                sbInvoice.AppendFormat("<RefFkey>{0}</RefFkey>", invoices.RefFkey);
                sbInvoice.AppendFormat("<Description>{0}</Description>", convertSpecialCharacter(invoices.Description));
                sbInvoice.AppendFormat("<InvNo>{0}</InvNo>", invoices.InvNo);
                sbInvoice.AppendFormat("<InvPattern>{0}</InvPattern>", invoices.InvPattern);
                sbInvoice.AppendFormat("<InvSerial>{0}</InvSerial>", invoices.InvSeries);
                sbInvoice.AppendFormat("<CusCode>{0}</CusCode>", invoices.SLAcount ?? invoices.CusCode);
                sbInvoice.AppendFormat("<CusName>{0}</CusName>", invoices.CusName);
                sbInvoice.AppendFormat("<Buyer>{0}</Buyer>", convertSpecialCharacter(invoices.Buyer));
                sbInvoice.AppendFormat("<CusAddress>{0}</CusAddress>", convertSpecialCharacter(invoices.CusAddress));
                sbInvoice.AppendFormat("<CusEmail>{0}</CusEmail>", convertSpecialCharacter(invoices.CusEmail));
                sbInvoice.AppendFormat("<CusTaxCode>{0}</CusTaxCode>", convertSpecialCharacter(invoices.CusTaxCode));
                sbInvoice.AppendFormat("<OrderNo>{0}</OrderNo>", convertSpecialCharacter(invoices.OrderNo));
                sbInvoice.AppendFormat("<DeliveryNumber>{0}</DeliveryNumber>", convertSpecialCharacter(invoices.DeliveryNumber));
                sbInvoice.AppendFormat("<DeliveryDate>{0}</DeliveryDate>", invoices.DeliveryDate);
                sbInvoice.AppendFormat("<DeliveryPlace>{0}</DeliveryPlace>", convertSpecialCharacter(invoices.DeliveryPlace));
                sbInvoice.AppendFormat("<PaymentMethod>{0}</PaymentMethod>", invoices.PaymentMethod);
                sbInvoice.AppendFormat("<Model>{0}</Model>", convertSpecialCharacter(invoices.Model));
                sbInvoice.AppendFormat("<CarType>{0}</CarType>", convertSpecialCharacter(invoices.CarType));
                sbInvoice.AppendFormat("<Color>{0}</Color>", invoices.Color);
                sbInvoice.AppendFormat("<Inclusive>{0}</Inclusive>", convertSpecialCharacter(invoices.Inclusive));
                sbInvoice.AppendFormat("<Upholstery>{0}</Upholstery>", convertSpecialCharacter(invoices.Upholstery));
                sbInvoice.AppendFormat("<ChassisNumber>{0}</ChassisNumber>", convertSpecialCharacter(invoices.ChassisNumber));
                sbInvoice.AppendFormat("<EngineNumber>{0}</EngineNumber>", convertSpecialCharacter(invoices.EngineNumber));
                sbInvoice.AppendFormat("<ProductionYear>{0}</ProductionYear>", invoices.ProductionYear);
                sbInvoice.AppendFormat("<RONo>{0}</RONo>", convertSpecialCharacter(invoices.RONo));
                sbInvoice.AppendFormat("<RODate>{0}</RODate>", invoices.RODate);
                sbInvoice.AppendFormat("<RegNo>{0}</RegNo>", convertSpecialCharacter(invoices.RegNo));
                sbInvoice.AppendFormat("<ReceivedTime>{0}</ReceivedTime>", convertSpecialCharacter(invoices.ReceivedTime));
                sbInvoice.AppendFormat("<ReceivedDate>{0}</ReceivedDate>", invoices.ReceivedDate);
                sbInvoice.AppendFormat("<KmNo>{0}</KmNo>", invoices.KmNo);
                sbInvoice.AppendFormat("<BroughtBy>{0}</BroughtBy>", convertSpecialCharacter(invoices.BroughtBy));
                sbInvoice.AppendFormat("<RegDate>{0}</RegDate>", invoices.RegDate);
                sbInvoice.AppendFormat("<ServiceDate>{0}</ServiceDate>", invoices.ServiceDate);
                sbInvoice.AppendFormat("<ReceivedBy>{0}</ReceivedBy>", invoices.ReceivedBy);
                sbInvoice.AppendFormat("<DeadlineTime>{0}</DeadlineTime>", invoices.DeadlineTime);
                sbInvoice.AppendFormat("<DeadlineDate>{0}</DeadlineDate>", invoices.DeadlineDate);

                sbInvoice.Append(makeStringProducts(invoices.Details));
                sbInvoice.AppendFormat("<ArisingDate>{0}</ArisingDate>", invoices.ArisingDate.ToString("dd/MM/yyyy"));
                sbInvoice.AppendFormat("<LabourCharge>{0}</LabourCharge>", invoices.LabourCharge);
                sbInvoice.AppendFormat("<Parts>{0}</Parts>", invoices.Parts);
                sbInvoice.AppendFormat("<Lubricants>{0}</Lubricants>", invoices.Lubricants);
                sbInvoice.AppendFormat("<Subcontract>{0}</Subcontract>", invoices.Subcontract);
                sbInvoice.AppendFormat("<Miscellaneous>{0}</Miscellaneous>", invoices.Miscellaneous);
                sbInvoice.AppendFormat("<ExceedInsurance>{0}</ExceedInsurance>", invoices.ExceedInsurance);
                sbInvoice.AppendFormat("<Total>{0}</Total>", invoices.TotalBeforeTax);
                sbInvoice.AppendFormat("<VATRate>{0}</VATRate>", invoices.VATRate);
                sbInvoice.AppendFormat("<VATAmount>{0}</VATAmount>", invoices.VATAmount);
                sbInvoice.AppendFormat("<Amount>{0}</Amount>", invoices.Amount);
                sbInvoice.AppendFormat("<Reason>{0}</Reason>", invoices.Reason);
                string tienbangchu   = null;
                long   amountinvoice = (long)invoices.Amount;
                tienbangchu = NumberToLeter.DocTienBangChu(amountinvoice);
                sbInvoice.AppendFormat("<AmountInWords>{0}</AmountInWords>", tienbangchu);
                sbInvoice.Append("</Invoice>");
                return(sbInvoice.ToString());
            }
            catch (Exception ex)
            {
                log.Error(ex);
                ErrorMessage = ex.Message;
                return(null);
            }
        }
Ejemplo n.º 2
0
        public static VNSUploadData ParseIInvoice(string filePath, List <VNSMapping> Lstvnsmap, List <SerialMapping> lstserialMapping, ref string message, out string comtaxcode)
        {
            message    = "";
            comtaxcode = "";
            VNSUploadData uploaddata = new VNSUploadData();
            List <VNSUploadDataDetail> uploaddetail = new List <VNSUploadDataDetail>();

            try
            {
                if (!File.Exists(filePath))
                {
                    message = "Đường dẫn file " + filePath + " không tìm thấy";
                    return(null);
                }
                DataSet dSet = new DataSet();
                dSet.ReadXml(filePath);

                DataRow dtInvoice = dSet.Tables["Invoice"].Rows[0];
                if (string.IsNullOrWhiteSpace(dtInvoice["InvSeries"].ToString()))
                {
                    message = "Ký hiệu [InvSeries] không có dữ liệu.";
                    return(null);
                }

                VNSInvoiceType InvvoiceType;
                string         invType = dtInvoice["InvType"].ToString(); // loại hóa đơn
                Enum.TryParse(invType, out InvvoiceType);
                uploaddata.InvType = InvvoiceType;

                var _strInvDate = dtInvoice["ArisingDate"].ToString();
                uploaddata.InvNo   = dtInvoice["InvNo"].ToString();
                uploaddata.Fkey    = dtInvoice["Fkey"].ToString();
                uploaddata.RefFkey = dtInvoice["RefFkey"].ToString();

                if (uploaddata.InvType == VNSInvoiceType.New)
                {
                    if (string.IsNullOrWhiteSpace(uploaddata.Fkey))
                    {
                        message = "[Fkey] không có giá trị";
                        return(null);
                    }
                    if (string.IsNullOrWhiteSpace(uploaddata.InvNo))
                    {
                        message = "[InvNo] không có giá trị";
                        return(null);
                    }
                    if (string.IsNullOrWhiteSpace(_strInvDate))
                    {
                        message = "[ArisingDate] không có giá trị";
                        return(null);
                    }
                }
                else
                {
                    if (string.IsNullOrWhiteSpace(uploaddata.RefFkey))
                    {
                        message = "[RefFkey] không có giá trị";
                        return(null);
                    }
                    if (string.IsNullOrWhiteSpace(_strInvDate))
                    {
                        _strInvDate = DateTime.Today.ToString("dd/MM/yyyy");
                    }
                }

                uploaddata.InvSeries = dtInvoice["InvSeries"].ToString().Trim(); // AA/19T

                var serialMapping = lstserialMapping.FirstOrDefault(x => x.Serial == uploaddata.InvSeries);
                if (serialMapping == null)
                {
                    message = "Không tìm thấy ký hiệu hoá đơn: " + uploaddata.InvSeries;
                    return(null);
                }
                uploaddata.InvPattern = serialMapping.Pattern;

                uploaddata.Comp = !string.IsNullOrEmpty(dtInvoice["comp"].ToString()) ? dtInvoice["comp"].ToString().Trim() : "";

                uploaddata.InvBussi = !string.IsNullOrEmpty(dtInvoice["InvBussi"].ToString()) ? dtInvoice["InvBussi"].ToString().Trim() : "";

                uploaddata.SrcModule = !string.IsNullOrEmpty(dtInvoice["Srcmodule"].ToString()) ? dtInvoice["Srcmodule"].ToString() : "";

                uploaddata.SLAcount = !string.IsNullOrEmpty(dtInvoice["SLAcount"].ToString()) ? dtInvoice["SLAcount"].ToString() : null;
                //check bộ key tương ứng comtaxcode
                var mapping = new VNSMapping();
                if (uploaddata.Comp == "V1" && uploaddata.SrcModule == "SL")
                {
                    if (!string.IsNullOrEmpty(uploaddata.InvBussi))
                    {
                        mapping = Lstvnsmap.FirstOrDefault(x => x.Comp == uploaddata.Comp && x.Srcmodules.Contains(uploaddata.SrcModule) && x.InvBuss.Contains(uploaddata.InvBussi));
                    }
                }
                else
                {
                    mapping = Lstvnsmap.FirstOrDefault(x => x.Comp == uploaddata.Comp && x.Srcmodules.Contains(uploaddata.SrcModule));
                }
                if (mapping == null)
                {
                    message = "Không tìm thấy ComTaxCode tương ứng với bộ key";
                    return(null);
                }
                uploaddata.ComTaxCode = comtaxcode = mapping.ComTaxCode;
                var ArisingDate = dtInvoice["ArisingDate"].ToString(); // Ngày hóa đơn ArisingDate
                uploaddata.ArisingDate = DateTime.ParseExact(ArisingDate, new string[] { "dd/MM/yyyy", "dd/M/yyyy", "dd.MM.yyyy" }, new CultureInfo("en-US"), DateTimeStyles.None);

                uploaddata.OrderNo = !string.IsNullOrEmpty(dtInvoice["OrderNo"].ToString()) ? dtInvoice["OrderNo"].ToString() : "";                // Số đơn hàng : OrderNo

                uploaddata.DeliveryNumber = !string.IsNullOrEmpty(dtInvoice["DeliveryNo"].ToString()) ? dtInvoice["DeliveryNo"].ToString() : "";   // Phiếu xuất kho số : DeliveryNumber

                uploaddata.DeliveryDate = !string.IsNullOrEmpty(dtInvoice["DeliveryDate"].ToString()) ? dtInvoice["DeliveryDate"].ToString() : ""; // Ngày giao hàng : DeiveryDate

                uploaddata.CusCode = !string.IsNullOrEmpty(dtInvoice["CusCode"].ToString()) ? dtInvoice["CusCode"].ToString() : "";

                uploaddata.SLAcount = !string.IsNullOrEmpty(dtInvoice["SLAcount"].ToString()) ? dtInvoice["SLAcount"].ToString() : null;

                uploaddata.Buyer = !string.IsNullOrEmpty(dtInvoice["Buyer"].ToString()) ? dtInvoice["Buyer"].ToString() : null;

                uploaddata.CusName = !string.IsNullOrEmpty(dtInvoice["CusName"].ToString()) ? dtInvoice["CusName"].ToString().Trim() : "";          //

                uploaddata.CusAddress = !string.IsNullOrEmpty(dtInvoice["CusAddress"].ToString()) ? dtInvoice["CusAddress"].ToString().Trim() : ""; //Địa chỉ: CusAddress = CusHouseNo + CusStreet + CusDistrict + CusCity + CusCountry

                if (uploaddata.ComTaxCode == "0303313001")
                {
                    uploaddata.DeliveryPlace = "811-813 (thuộc Lô H8-2) đường Nguyễn Văn Linh, Phường Tân Phong, Quận 7, Thành phố Hồ Chí Minh, Việt Nam";
                }
                else
                {
                    uploaddata.DeliveryPlace = mapping.ComAdress;
                }

                uploaddata.CusPhone = !string.IsNullOrEmpty(dtInvoice["CusPhone"].ToString()) ? dtInvoice["CusPhone"].ToString() : "";       // điện thoại KH

                uploaddata.CusEmail = !string.IsNullOrEmpty(dtInvoice["CusEmail"].ToString()) ? dtInvoice["CusEmail"].ToString() : "";       // Email KH

                uploaddata.CusTaxCode = !string.IsNullOrEmpty(dtInvoice["CusTaxCode"].ToString()) ? dtInvoice["CusTaxCode"].ToString() : ""; // Mã số thuế KH

                uploaddata.PaymentMethod = "chuyển khoản/tiền mặt";

                uploaddata.Model = !string.IsNullOrEmpty(dtInvoice["Model"].ToString()) ? dtInvoice["Model"].ToString() : "";

                uploaddata.Color = !string.IsNullOrEmpty(dtInvoice["Colour"].ToString()) ? dtInvoice["Colour"].ToString() : "";              // Màu xe: Color

                uploaddata.Upholstery = !string.IsNullOrEmpty(dtInvoice["Upholstery"].ToString()) ? dtInvoice["Upholstery"].ToString() : ""; // Nệm bọc : Upholstery

                if (uploaddata.SrcModule == "VS")
                {
                    uploaddata.CarType = "ô tô con";
                }

                uploaddata.ChassisNumber = !string.IsNullOrEmpty(dtInvoice["VINNo"].ToString()) ? dtInvoice["VINNo"].ToString() : "";      // Số khung: ChassisNumber

                uploaddata.EngineNumber = !string.IsNullOrEmpty(dtInvoice["EngineNo"].ToString()) ? dtInvoice["EngineNo"].ToString() : ""; // Số máy: EngineNumber

                uploaddata.ProductionYear = !string.IsNullOrEmpty(dtInvoice["ProYear"].ToString()) ? dtInvoice["ProYear"].ToString() : ""; // Năm sản xuất: ProductionYear

                uploaddata.Inclusive = !string.IsNullOrEmpty(dtInvoice["Inclusive"].ToString()) ? dtInvoice["Inclusive"].ToString() : "";

                uploaddata.RegNo = !string.IsNullOrEmpty(dtInvoice["RegNo"].ToString()) ? dtInvoice["RegNo"].ToString() : "";

                uploaddata.KmNo = !string.IsNullOrEmpty(dtInvoice["KM"].ToString()) ? dtInvoice["KM"].ToString() : "";

                uploaddata.RegDate = !string.IsNullOrEmpty(dtInvoice["DateOfFirstReg"].ToString()) ? dtInvoice["DateOfFirstReg"].ToString() : "";

                uploaddata.ServiceDate = !string.IsNullOrEmpty(dtInvoice["LastDate"].ToString()) ? dtInvoice["LastDate"].ToString() : "";

                uploaddata.DealerCode = !string.IsNullOrEmpty(dtInvoice["DealerCode"].ToString()) ? dtInvoice["DealerCode"].ToString() : "";

                uploaddata.RONo = !string.IsNullOrEmpty(dtInvoice["RONo"].ToString()) ? dtInvoice["RONo"].ToString() : "";

                uploaddata.RODate = !string.IsNullOrEmpty(dtInvoice["RODate"].ToString()) ? dtInvoice["RODate"].ToString() : "";

                uploaddata.ReceivedTime = !string.IsNullOrEmpty(dtInvoice["RecTime"].ToString()) ? dtInvoice["RecTime"].ToString() : "";

                uploaddata.ReceivedDate = !string.IsNullOrEmpty(dtInvoice["RecDate"].ToString()) ? dtInvoice["RecDate"].ToString() : "";

                uploaddata.ReceivedBy = !string.IsNullOrEmpty(dtInvoice["RecBy"].ToString()) ? dtInvoice["RecBy"].ToString() : "";

                uploaddata.BroughtBy = !string.IsNullOrEmpty(dtInvoice["BroughtBy"].ToString()) ? dtInvoice["BroughtBy"].ToString() : "";

                uploaddata.DeadlineTime = !string.IsNullOrEmpty(dtInvoice["DeadlineTime"].ToString()) ? dtInvoice["DeadlineTime"].ToString() : "";

                uploaddata.DeadlineDate = !string.IsNullOrEmpty(dtInvoice["DeadlineDate"].ToString()) ? dtInvoice["DeadlineDate"].ToString() : "";

                uploaddata.Notes = !string.IsNullOrEmpty(dtInvoice["Notes"].ToString()) ? dtInvoice["Notes"].ToString() : "";

                uploaddata.Reason = !string.IsNullOrEmpty(dtInvoice["Reason"].ToString()) ? dtInvoice["Reason"].ToString() : "";

                uploaddata.SLType = !string.IsNullOrEmpty(dtInvoice["SLType"].ToString()) ? dtInvoice["SLType"].ToString() : "";

                var Total = !string.IsNullOrEmpty(dtInvoice["Total"].ToString()) ? dtInvoice["Total"].ToString() : "0"; // cộng tiền hàng trước thuế : Amount
                uploaddata.TotalBeforeTax = !string.IsNullOrEmpty(Total) ? decimal.Parse(Total) : 0;

                var VATRate = !string.IsNullOrEmpty(dtInvoice["VATRate"].ToString()) ? dtInvoice["VATRate"].ToString() : "0";
                uploaddata.VATRate = !string.IsNullOrEmpty(VATRate) ? float.Parse(VATRate) : 0;

                var VATAmount = !string.IsNullOrEmpty(dtInvoice["VATAmount"].ToString()) ? dtInvoice["VATAmount"].ToString() : "0";
                uploaddata.VATAmount = !string.IsNullOrEmpty(VATAmount) ? decimal.Parse(VATAmount) : 0;

                var Amount = !string.IsNullOrEmpty(dtInvoice["Amount"].ToString()) ? dtInvoice["Amount"].ToString() : "0";
                uploaddata.Amount = !string.IsNullOrEmpty(Amount) ? decimal.Parse(Amount) : 0;

                var Lubricants = !string.IsNullOrEmpty(dtInvoice["Lubricants"].ToString()) ? dtInvoice["Lubricants"].ToString() : "0";
                uploaddata.Lubricants = !string.IsNullOrEmpty(Lubricants) ? decimal.Parse(Lubricants) : 0;

                var LabourCharge = !string.IsNullOrEmpty(dtInvoice["LabourCharge"].ToString()) ? dtInvoice["LabourCharge"].ToString() : "0";
                uploaddata.LabourCharge = !string.IsNullOrEmpty(LabourCharge) ? decimal.Parse(LabourCharge) : 0;

                var Parts = !string.IsNullOrEmpty(dtInvoice["Parts"].ToString()) ? dtInvoice["Parts"].ToString() : "0";
                uploaddata.Parts = !string.IsNullOrEmpty(Parts) ? decimal.Parse(Parts) : 0;

                var Subcontract = !string.IsNullOrEmpty(dtInvoice["Subcontract"].ToString()) ? dtInvoice["Subcontract"].ToString() : "0";
                uploaddata.Subcontract = !string.IsNullOrEmpty(Subcontract) ? decimal.Parse(Subcontract) : 0;

                var Miscellaneous = !string.IsNullOrEmpty(dtInvoice["Miscellaneous"].ToString()) ? dtInvoice["Miscellaneous"].ToString() : "0";
                uploaddata.Miscellaneous = !string.IsNullOrEmpty(Miscellaneous) ? decimal.Parse(Miscellaneous) : 0;

                var ExceedInsurance = !string.IsNullOrEmpty(dtInvoice["ExceedInsurance"].ToString()) ? dtInvoice["Miscellaneous"].ToString() : "0";
                uploaddata.ExceedInsurance = !string.IsNullOrEmpty(ExceedInsurance) ? decimal.Parse(ExceedInsurance) : 0;

                int stt = 1;
                foreach (DataRow dtProduct in dSet.Tables["Product"].Rows)
                {
                    VNSUploadDataDetail prd = new VNSUploadDataDetail();
                    prd.Position = stt;
                    prd.Code     = !string.IsNullOrEmpty(dtProduct["Code"].ToString()) ? dtProduct["Code"].ToString() : "";                       // Mã sản phẩm : Code

                    prd.Name = !string.IsNullOrEmpty(dtProduct["ProdName1"].ToString()) ? dtProduct["ProdName1"].ToString() : "";                 // Mô tả: Name

                    prd.Name2 = !string.IsNullOrEmpty(dtProduct["ProdName2"].ToString()) ? dtProduct["ProdName2"].ToString() : "";                // Mô tả: Name

                    prd.Name3 = !string.IsNullOrEmpty(dtProduct["ProdName3"].ToString()) ? dtProduct["ProdName3"].ToString() : "";                // Mô tả: Name

                    prd.Name4 = !string.IsNullOrEmpty(dtProduct["ProdName4"].ToString()) ? dtProduct["ProdName4"].ToString() : "";                // Mô tả: Name

                    prd.Unit = !string.IsNullOrEmpty(dtProduct["ProdUnit"].ToString()) ? dtProduct["ProdUnit"].ToString() : "";                   // Mô tả: Name

                    var Quantity = !string.IsNullOrWhiteSpace(dtProduct["ProdQuantity"].ToString()) ? dtProduct["ProdQuantity"].ToString() : "0"; // Số lượng
                    prd.Quantity = decimal.Parse(Quantity);

                    var UnitPrice = !string.IsNullOrWhiteSpace(dtProduct["ProdPrice"].ToString()) ? dtProduct["ProdPrice"].ToString() : "0"; // Đơn giá
                    prd.Price = decimal.Parse(UnitPrice);

                    var ProdTotal = !string.IsNullOrWhiteSpace(dtProduct["Total"].ToString()) ? dtProduct["Total"].ToString() : "0"; //Tổng tiền hàng trước thuế : ProdTotal
                    prd.Total = decimal.Parse(ProdTotal);

                    var ProdVATRate = !string.IsNullOrWhiteSpace(dtProduct["VatRate"].ToString()) ? dtProduct["VatRate"].ToString() : "0"; // Thuế tiêu thục đặc biệt: VATRate
                    prd.VATRate = float.Parse(ProdVATRate);

                    var ProdVATAmount = !string.IsNullOrWhiteSpace(dtProduct["VATAmount"].ToString()) ? dtProduct["VATAmount"].ToString() : "0"; //Tiền thuế tiêu thụ đặc biệt : VATAmount
                    prd.VATAmount = decimal.Parse(ProdVATAmount);

                    prd.Description = !string.IsNullOrEmpty(dtProduct["Description"].ToString()) ? dtProduct["Description"].ToString() : ""; // Diễn giải

                    prd.Contribution = !string.IsNullOrEmpty(dtProduct["Contribution"].ToString()) ? dtProduct["Contribution"].ToString() : "";

                    var ProdAmount = !string.IsNullOrWhiteSpace(dtProduct["Amount"].ToString()) ? dtProduct["Amount"].ToString() : "0"; //Tiền thuế tiêu thụ đặc biệt : VATAmount
                    prd.Amount = decimal.Parse(ProdAmount);
                    uploaddata.Details.Add(prd);
                    stt++;
                }

                uploaddata.FileName = Path.GetFileName(filePath);
                uploaddata.Status   = VNSUploadStatus.CreateNew;
                uploaddata.XMLData  = makeStringInvoice(uploaddata, out message);
                return(uploaddata);
            }
            catch (Exception ex)
            {
                log.Error("ParseXML error-" + ex);
                message = ex.ToString();
                return(null);
            }
        }