using System.Collections.Generic; using InABox.Core; using InABox.Integration.V6; namespace PRSDesktop.Integrations.V6 { public class V6Project : V6Object { [NullEditor] public int ID { get; set; } [NullEditor] public int Revision { get; set; } [IntegerEditor(Width=80)] [Caption("Quote")] [EditorSequence(1)] public int Number { get; set; } [TextBoxEditor(Width = 100)] [EditorSequence(3)] public string ClientID { get; set; } [TextBoxEditor(Visible = Visible.Hidden)] [EditorSequence(4)] public string ClientName { get; set; } [TextBoxEditor] [EditorSequence(5)] public string Title { get; set; } [MemoEditor(Visible = Visible.Hidden)] [EditorSequence(6)] public string Street { get; set; } [TextBoxEditor] [EditorSequence(7)] public string City { get; set; } [TextBoxEditor] [EditorSequence(8)] public string State { get; set; } [TextBoxEditor] [EditorSequence(9)] public string PostCode { get; set; } [CurrencyEditor] [EditorSequence(10)] public double SellPrice {get; set; } public override void ValidateQuery(string sql, List errors) { ValidateField(sql, nameof(ID), errors); ValidateField(sql, nameof(Revision), errors); ValidateField(sql, nameof(Number), errors); ValidateField(sql, nameof(ClientID), errors); ValidateField(sql, nameof(ClientName), errors); ValidateField(sql, nameof(Title), errors); ValidateField(sql, nameof(Street), errors); ValidateField(sql, nameof(City), errors); ValidateField(sql, nameof(State), errors); ValidateField(sql, nameof(PostCode), errors); ValidateField(sql, nameof(SellPrice), errors); } public string GetReference() { var result = $"V6:{Number}"; return result; } public static bool ParseReference(string? reference, out int quotenumber) { quotenumber = 0; if (reference?.StartsWith("V6:") != true) return false; var comps = reference.Split(':'); if (comps.Length < 2) return false; if (!int.TryParse(comps[1], out quotenumber)) return false; return true; } public static string SQL = $@" select distinct q.quote_id as {nameof(ID)}, q.quote_vers as {nameof(Revision)}, q.quote_num as {nameof(Number)}, c.cust_code as {nameof(ClientID)}, c.cust_name as {nameof(ClientName)}, coalesce(a.addr_1,'') + coalesce(char(13)+char(10)+a.addr_2,'') as {nameof(Street)}, a.addr_3 as {nameof(City)}, a.addr_4 as {nameof(State)}, a.addr_5 as {nameof(PostCode)}, q.quote_title as {nameof(Title)}, q.nett_sell_price + q.nett_sell_prc_lab as {nameof(SellPrice)} from quote q left outer join customer c on q.cust_id = c.cust_id left outer join addr a on q.del_addr_id = a.addr_id where 1=1 and q.quote_vers = (select max(quote_vers) from quote where quote_id = q.quote_id) and coalesce(q.quote_num_suff,'') = '' order by q.quote_num"; } }