public static Measure TryParse(string text, PhysicalQuantity pq = null, CultureInfo culture = null) { if (culture == null) { culture = CultureInfo.InvariantCulture; } if (pq == null) { var pqstart = text.LastIndexOf('[') + 1; if (pqstart != 0) { var pqname = text.Substring(pqstart, text.Length - pqstart - 1); pq = PQCollection.PhysicalQuantities.First(w => w.Name == pqname); text = text.Substring(0, pqstart - 1); } } if (pq != null && pq.Equals(PQCollection.Adimensional)) { double n; if (double.TryParse(text, NumberStyles.Number | NumberStyles.AllowExponent, culture, out n)) { var res = new Measure(n, MUCollection.Adimensional.adim); var regex = new Regex("([0-9.]*)([eE])(.*)"); var q = regex.Match(text); if (q.Success) { res.ExpPref = int.Parse(q.Groups[3].Value); } return(res); } } else { var s = text.Trim(); MeasureUnit mu = null; if (pq == null) { var all_mus = MUCollection.MeasureUnits; foreach (var _mu in all_mus.OrderByDescending(w => w.Name.Length)) { if (s.EndsWith(_mu.ToString())) { mu = _mu; break; } } if (mu == null) { return(null); } // ambiguity between different pq with same mu name if (all_mus.Count(r => r.ToString() == mu.ToString()) != 1) { return(null); } } else { foreach (var _mu in pq.MeasureUnits.OrderByDescending(w => w.Name.Length)) { if (s.EndsWith(_mu.ToString())) { mu = _mu; break; } } } if (mu == null) { return(null); } s = s.StripEnd(mu.ToString()); double n; if (double.TryParse(s, NumberStyles.Number | NumberStyles.AllowExponent, culture, out n)) { var res = new Measure(n, mu); var regex = new Regex("([0-9.]*)([eE])(.*)"); var q = regex.Match(s); if (q.Success) { res.ExpPref = int.Parse(q.Groups[3].Value); } return(res); } } return(null); }
public TransportPerformanceRecord() { MapField(2, 12, "Identificatie detailrecord").Numeric().Getter(x => Id.ToString()); MapField(14, 9, "Burgerservicenummer").Numeric().Getter(x => BurgerServiceNumber.ToString()); MapField(23, 4, "UZOVI-nummer").Numeric().Getter(x => UzoviId.ToString()); MapField(57, 1, "Doorsturen toegestaan").Numeric().Getter(x => { if (AllowForwarding) { return("1"); } else { return("0"); } }); MapField(58, 1, "Indicatie ongeval").Alphanumeric().Getter(x => { if (!DueToAccident.HasValue) { return("O"); } else if (DueToAccident.Value) { return("J"); } else { return("N"); } }); MapField(59, 4, "Code bestemming vervoer").Numeric().Getter(x => TransportDestinationCode.ToString()); MapField(63, 3, "Aanduiding prestatiecodelijst").Numeric().Getter(x => PerformanceCodeList.ToString()); MapField(66, 6, "Prestatiecode").Numeric().Getter(x => PerformanceCode.ToString()); MapField(100, 8, "Zorgverlenerscode vervoerder").Numeric().Getter(x => CareProviderAgbId.ToString()); MapField(108, 8, "Datum prestatie").Numeric().Getter(x => PerformanceDate.ToString("yyyyMMdd")); MapField(116, 4, "Vertrektijd vervoer").Numeric(); MapField(144, 5, "Huisnummer herkomst").Numeric(); MapField(220, 5, "Huisnummer bestemming").Numeric(); MapField(272, 1, "Eenheid rit/prestatie").Numeric().Getter(x => MeasureUnit.ToString("D")); MapField(273, 4, "Aantal (rit)eenheden").Numeric().Getter(x => UnitCount.ToString()); MapField(277, 8, "Tarief prestatie (incl. BTW)").Numeric().Getter(x => Math.Round(UnitPrice * 100).ToString()); MapField(285, 8, "Bedrag toeslag").Numeric(); MapField(293, 8, "Berekend bedrag (incl. BTW)").Numeric().Getter(x => Math.Round(TotalAmount * 100).ToString()); MapField(301, 1, "Indicatie debet/credit").Alphanumeric().Getter(x => { if (TotalAmount >= 0) { return("D"); } else { return("C"); } }); MapField(302, 4, "BTW percentage declaratiebedrag").Numeric(); MapField(306, 8, "Declaratiebedrag (incl. BTW)").Numeric().Getter(x => Math.Round(InvoicedAmount * 100).ToString()); MapField(314, 1, "Indicatie debet/credit").Alphanumeric().Getter(x => { if (InvoicedAmount >= 0) { return("D"); } else { return("C"); } }); // Set default values. AllowForwarding = true; MeasureUnit = TransportMeasureUnit.Kilometer; }