diff --git a/BodyshopUploader/BodyshopUploader.csproj b/BodyshopUploader/BodyshopUploader.csproj
index 3607c1d..4c37c65 100644
--- a/BodyshopUploader/BodyshopUploader.csproj
+++ b/BodyshopUploader/BodyshopUploader.csproj
@@ -281,6 +281,7 @@
+
diff --git a/BodyshopUploader/Utils/Decoder/EstimateDecoder.cs b/BodyshopUploader/Utils/Decoder/EstimateDecoder.cs
index c594ade..3f71912 100644
--- a/BodyshopUploader/Utils/Decoder/EstimateDecoder.cs
+++ b/BodyshopUploader/Utils/Decoder/EstimateDecoder.cs
@@ -30,8 +30,11 @@ namespace BodyshopUploader.Utils.Decoder
string _dir = Path.GetDirectoryName(FilePath) + @"\";
ParseAd1File(ref ret, _dir);
+ ParseAd2File(ref ret, _dir);
ParseVehFile(ref ret, _dir);
- //ParseStlFile(ref ret, _dir);
+ ParsePfhFile(ref ret, _dir);
+ ParsePflFile(ref ret, _dir);
+ //ParseStlFile(ref ret, _dir); //Contains information about the total amounts of the estimate.
//ParseTtlFile(ref ret, _dir);
//ParseLinFile(ref ret, _dir);
@@ -70,143 +73,143 @@ namespace BodyshopUploader.Utils.Decoder
});
var readValues = reader.NextRecord();
- dynamic o = new JObject();
-
+ dynamic ownerRoot = new JObject();
- j.ins_co_id = readValues[0]?.ToString();
- j.ins_co_nm = readValues[1]?.ToString();
- j.ins_addr1 = readValues[2]?.ToString();
- j.ins_addr2 = readValues[3]?.ToString();
- j.ins_city = readValues[4]?.ToString();
- j.ins_st = readValues[5]?.ToString();
- j.ins_zip = readValues[6]?.ToString();
- j.ins_ctry = readValues[7]?.ToString();
- j.ins_ea = readValues[8]?.ToString();
- j.policy_no = readValues[9]?.ToString();
- j.ded_amt = readValues[10]?.ToString();
- j.ded_status = readValues[11]?.ToString();
- j.asgn_no = readValues[12]?.ToString();
- j.asgn_date = readValues[13]?.ToString();
- j.asgn_type = readValues[14]?.ToString();
- j.clm_no = readValues[15]?.ToString();
- j.clm_ofc_id = readValues[16]?.ToString();
- j.clm_ofc_nm = readValues[17]?.ToString();
- j.clm_addr1 = readValues[18]?.ToString();
- j.clm_addr2 = readValues[19]?.ToString();
- j.clm_city = readValues[20]?.ToString();
- j.clm_st = readValues[21]?.ToString();
- j.clm_zip = readValues[22]?.ToString();
- j.clm_ctry = readValues[23]?.ToString();
- j.clm_ph1 = readValues[24]?.ToString();
- j.clm_ph1x = readValues[25]?.ToString();
- j.clm_ph2 = readValues[26]?.ToString();
- j.clm_ph2x = readValues[27]?.ToString();
- j.clm_fax = readValues[28]?.ToString();
- j.clm_faxx = readValues[29]?.ToString();
- j.clm_ct_ln = readValues[30]?.ToString();
- j.clm_ct_fn = readValues[31]?.ToString();
- j.clm_title = readValues[32]?.ToString();
- j.clm_ct_ph = readValues[33]?.ToString();
- j.clm_ct_phx = readValues[34]?.ToString();
- j.clm_ea = readValues[35]?.ToString();
- j.payee_nms = readValues[36]?.ToString();
- j.pay_type = readValues[37]?.ToString();
- j.pay_date = readValues[38]?.ToString();
- j.pay_chknm = readValues[39]?.ToString();
- j.pay_amt = readValues[40]?.ToString();
- j.agt_co_id = readValues[41]?.ToString();
- j.agt_co_nm = readValues[42]?.ToString();
- j.agt_addr1 = readValues[43]?.ToString();
- j.agt_addr2 = readValues[44]?.ToString();
- j.agt_city = readValues[45]?.ToString();
- j.agt_st = readValues[46]?.ToString();
- j.agt_zip = readValues[47]?.ToString();
- j.agt_ctry = readValues[48]?.ToString();
- j.agt_ph1 = readValues[49]?.ToString();
- j.agt_ph1x = readValues[50]?.ToString();
- j.agt_ph2 = readValues[51]?.ToString();
- j.agt_ph2x = readValues[52]?.ToString();
- j.agt_fax = readValues[53]?.ToString();
- j.agt_faxx = readValues[54]?.ToString();
- j.agt_ct_ln = readValues[55]?.ToString();
- j.agt_ct_fn = readValues[56]?.ToString();
- j.agt_ct_ph = readValues[57]?.ToString();
- j.agt_ct_phx = readValues[58]?.ToString();
- j.agt_ea = readValues[59]?.ToString();
- j.agt_lic_no = readValues[60]?.ToString();
- j.loss_date = readValues[61]?.ToString();
- j.loss_type = readValues[62]?.ToString();
- j.loss_desc = readValues[63]?.ToString();
- j.theft_ind = readValues[64]?.ToString(); //BOOL
- j.cat_no = readValues[65]?.ToString();
- j.tlos_ind = readValues[66]?.ToString();
- j.cust_pr = readValues[67]?.ToString();
- j.insd_ln = readValues[68]?.ToString();
- j.insd_fn = readValues[69]?.ToString();
- j.insd_title = readValues[70]?.ToString();
- j.insd_co_nm = readValues[71]?.ToString();
- j.insd_addr1 = readValues[72]?.ToString();
- j.insd_addr2 = readValues[73]?.ToString();
- j.insd_city = readValues[74]?.ToString();
- j.insd_st = readValues[75]?.ToString();
- j.insd_zip = readValues[76]?.ToString();
- j.insd_ctry = readValues[77]?.ToString();
- j.insd_ph1 = readValues[78]?.ToString();
- j.insd_ph1x = readValues[79]?.ToString();
- j.insd_ph2 = readValues[80]?.ToString();
- j.insd_ph2x = readValues[81]?.ToString();
- j.insd_fax = readValues[82]?.ToString();
- j.insd_faxx = readValues[83]?.ToString();
- j.insd_ea = readValues[84]?.ToString();
- j.ownr_ln = readValues[85]?.ToString();
- j.ownr_fn = readValues[86]?.ToString();
- j.ownr_title = readValues[87]?.ToString();
- j.ownr_co_nm = readValues[88]?.ToString();
- j.ownr_addr1 = readValues[89]?.ToString();
- j.ownr_addr2 = readValues[90]?.ToString();
- j.ownr_city = readValues[91]?.ToString();
- j.ownr_st = readValues[92]?.ToString();
- j.ownr_zip = readValues[93]?.ToString();
- j.ownr_ctry = readValues[94]?.ToString();
- j.ownr_ph1 = readValues[95]?.ToString();
- //j.ownr_ph1x = readValues[96]?.ToString();
- j.ownr_ph2 = readValues[97]?.ToString();
- // j.ownr_ph2x = readValues[98]?.ToString();
- //j.ownr_fax = readValues[99]?.ToString();
- //j.ownr_faxx = readValues[100]?.ToString();
- j.ownr_ea = readValues[101]?.ToString();
- j.ins_ph1 = readValues[102]?.ToString();
- j.ins_ph1x = readValues[103]?.ToString();
- j.ins_ph2 = readValues[104]?.ToString();
- j.ins_ph2x = readValues[105]?.ToString();
- j.ins_fax = readValues[106]?.ToString();
- j.ins_faxx = readValues[107]?.ToString();
- j.ins_ct_ln = readValues[108]?.ToString();
- j.ins_ct_fn = readValues[109]?.ToString();
- j.ins_title = readValues[110]?.ToString();
- j.ins_ct_ph = readValues[111]?.ToString();
- j.ins_ct_phx = readValues[112]?.ToString();
- j.loss_cat = readValues[113]?.ToString();
+ j.ins_co_id = readValues[0];
+ j.ins_co_nm = readValues[1];
+ j.ins_addr1 = readValues[2];
+ j.ins_addr2 = readValues[3];
+ j.ins_city = readValues[4];
+ j.ins_st = readValues[5];
+ j.ins_zip = readValues[6];
+ j.ins_ctry = readValues[7];
+ j.ins_ea = readValues[8];
+ j.policy_no = readValues[9];
+ j.ded_amt = readValues[10];
+ j.ded_status = readValues[11];
+ j.asgn_no = readValues[12];
+ j.asgn_date = readValues[13];
+ j.asgn_type = readValues[14];
+ j.clm_no = readValues[15];
+ j.clm_ofc_id = readValues[16];
+ j.clm_ofc_nm = readValues[17];
+ j.clm_addr1 = readValues[18];
+ j.clm_addr2 = readValues[19];
+ j.clm_city = readValues[20];
+ j.clm_st = readValues[21];
+ j.clm_zip = readValues[22];
+ j.clm_ctry = readValues[23];
+ j.clm_ph1 = readValues[24];
+ j.clm_ph1x = readValues[25];
+ j.clm_ph2 = readValues[26];
+ j.clm_ph2x = readValues[27];
+ j.clm_fax = readValues[28];
+ j.clm_faxx = readValues[29];
+ j.clm_ct_ln = readValues[30];
+ j.clm_ct_fn = readValues[31];
+ j.clm_title = readValues[32];
+ j.clm_ct_ph = readValues[33];
+ j.clm_ct_phx = readValues[34];
+ j.clm_ea = readValues[35];
+ j.payee_nms = readValues[36];
+ j.pay_type = readValues[37];
+ j.pay_date = readValues[38];
+ j.pay_chknm = readValues[39];
+ j.pay_amt = readValues[40];
+ j.agt_co_id = readValues[41];
+ j.agt_co_nm = readValues[42];
+ j.agt_addr1 = readValues[43];
+ j.agt_addr2 = readValues[44];
+ j.agt_city = readValues[45];
+ j.agt_st = readValues[46];
+ j.agt_zip = readValues[47];
+ j.agt_ctry = readValues[48];
+ j.agt_ph1 = readValues[49];
+ j.agt_ph1x = readValues[50];
+ j.agt_ph2 = readValues[51];
+ j.agt_ph2x = readValues[52];
+ j.agt_fax = readValues[53];
+ j.agt_faxx = readValues[54];
+ j.agt_ct_ln = readValues[55];
+ j.agt_ct_fn = readValues[56];
+ j.agt_ct_ph = readValues[57];
+ j.agt_ct_phx = readValues[58];
+ j.agt_ea = readValues[59];
+ j.agt_lic_no = readValues[60];
+ j.loss_date = readValues[61];
+ j.loss_type = readValues[62];
+ j.loss_desc = readValues[63];
+ j.theft_ind = readValues[64]; //BOOL
+ j.cat_no = readValues[65];
+ j.tlos_ind = readValues[66];
+ j.cust_pr = readValues[67];
+ j.insd_ln = readValues[68];
+ j.insd_fn = readValues[69];
+ j.insd_title = readValues[70];
+ j.insd_co_nm = readValues[71];
+ j.insd_addr1 = readValues[72];
+ j.insd_addr2 = readValues[73];
+ j.insd_city = readValues[74];
+ j.insd_st = readValues[75];
+ j.insd_zip = readValues[76];
+ j.insd_ctry = readValues[77];
+ j.insd_ph1 = readValues[78];
+ j.insd_ph1x = readValues[79];
+ j.insd_ph2 = readValues[80];
+ j.insd_ph2x = readValues[81];
+ j.insd_fax = readValues[82];
+ j.insd_faxx = readValues[83];
+ j.insd_ea = readValues[84];
+ j.ownr_ln = readValues[85];
+ j.ownr_fn = readValues[86];
+ j.ownr_title = readValues[87];
+ j.ownr_co_nm = readValues[88];
+ j.ownr_addr1 = readValues[89];
+ j.ownr_addr2 = readValues[90];
+ j.ownr_city = readValues[91];
+ j.ownr_st = readValues[92];
+ j.ownr_zip = readValues[93];
+ j.ownr_ctry = readValues[94];
+ j.ownr_ph1 = readValues[95];
+ //j.ownr_ph1x = readValues[96];
+ j.ownr_ph2 = readValues[97];
+ // j.ownr_ph2x = readValues[98];
+ //j.ownr_fax = readValues[99];
+ //j.ownr_faxx = readValues[100];
+ j.ownr_ea = readValues[101];
+ j.ins_ph1 = readValues[102];
+ j.ins_ph1x = readValues[103];
+ j.ins_ph2 = readValues[104];
+ j.ins_ph2x = readValues[105];
+ j.ins_fax = readValues[106];
+ j.ins_faxx = readValues[107];
+ j.ins_ct_ln = readValues[108];
+ j.ins_ct_fn = readValues[109];
+ j.ins_title = readValues[110];
+ j.ins_ct_ph = readValues[111];
+ j.ins_ct_phx = readValues[112];
+ j.loss_cat = readValues[113];
j.shopid = AppMetaData.ActiveShopId;
//Set Owner Record
- o.ownr_ln = readValues[85]?.ToString();
- o.ownr_fn = readValues[86]?.ToString();
- o.ownr_title = readValues[87]?.ToString();
- o.ownr_co_nm = readValues[88]?.ToString();
- o.ownr_addr1 = readValues[89]?.ToString();
- o.ownr_addr2 = readValues[90]?.ToString();
- o.ownr_city = readValues[91]?.ToString();
- o.ownr_st = readValues[92]?.ToString();
- o.ownr_zip = readValues[93]?.ToString();
- o.ownr_ctry = readValues[94]?.ToString();
- o.ownr_ph1 = readValues[95]?.ToString();
- o.ownr_ph2 = readValues[97]?.ToString();
- o.ownr_ea = readValues[101]?.ToString();
- o.shopid = AppMetaData.ActiveShopId;
+ //Owner record will be removed by the application if required.
+ ownerRoot.ownr_ln = readValues[85];
+ ownerRoot.ownr_fn = readValues[86];
+ ownerRoot.ownr_title = readValues[87];
+ ownerRoot.ownr_co_nm = readValues[88];
+ ownerRoot.ownr_addr1 = readValues[89];
+ ownerRoot.ownr_addr2 = readValues[90];
+ ownerRoot.ownr_city = readValues[91];
+ ownerRoot.ownr_st = readValues[92];
+ ownerRoot.ownr_zip = readValues[93];
+ ownerRoot.ownr_ctry = readValues[94];
+ ownerRoot.ownr_ph1 = readValues[95];
+ ownerRoot.ownr_ph2 = readValues[97];
+ ownerRoot.ownr_ea = readValues[101];
+ ownerRoot.shopid = AppMetaData.ActiveShopId;
j.owner = new JObject();
- j.owner.data = o;
+ j.owner.data = ownerRoot;
return;
}
}
@@ -234,147 +237,137 @@ namespace BodyshopUploader.Utils.Decoder
{
try
{
- using (Stream fis = File.Open(RootFilePath + j.ciecaid.Value + "A.ad2", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
+ using (Stream fis = File.Open(RootFilePath + j.ciecaid.Value + "B.ad2", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
var reader = new DBFReader(fis);
+ //RO_AUTH references a memo file and had to be reemoved.
+ reader.SetSelectFields(new string[] { "CLMT_LN","CLMT_FN","CLMT_TITLE","CLMT_CO_NM","CLMT_ADDR1","CLMT_ADDR2","CLMT_CITY","CLMT_ST","CLMT_ZIP","CLMT_CTRY","CLMT_PH1",
+"CLMT_PH1X","CLMT_PH2","CLMT_PH2X","CLMT_FAX","CLMT_FAXX","CLMT_EA","EST_CO_ID","EST_CO_NM","EST_ADDR1","EST_ADDR2","EST_CITY","EST_ST","EST_ZIP","EST_CTRY","EST_PH1","EST_PH1X","EST_PH2","EST_PH2X",
+"EST_FAX","EST_FAXX","EST_CT_LN","EST_CT_FN","EST_EA","EST_LIC_NO","EST_FILENO","INSP_CT_LN","INSP_CT_FN","INSP_ADDR1","INSP_ADDR2","INSP_CITY","INSP_ST","INSP_ZIP","INSP_CTRY","INSP_PH1","INSP_PH1X",
+"INSP_PH2","INSP_PH2X","INSP_FAX","INSP_FAXX","INSP_EA","INSP_CODE","INSP_DESC","INSP_DATE","INSP_TIME","RF_CO_ID","RF_CO_NM","RF_ADDR1","RF_ADDR2","RF_CITY","RF_ST","RF_ZIP","RF_CTRY","RF_PH1","RF_PH1X",
+"RF_PH2","RF_PH2X","RF_FAX","RF_FAXX","RF_CT_LN","RF_CT_FN","RF_EA","RF_TAX_ID","RF_LIC_NO","RF_BAR_NO","RO_IN_DATE","RO_IN_TIME",
+ "TAR_DATE","TAR_TIME","RO_CMPDATE","RO_CMPTIME","DATE_OUT","TIME_OUT",
+"RF_ESTIMTR","MKTG_TYPE","MKTG_SRC","LOC_NM","LOC_ADDR1","LOC_ADDR2","LOC_CITY","LOC_ST","LOC_ZIP","LOC_CTRY","LOC_PH1","LOC_PH1X","LOC_PH2","LOC_PH2X","LOC_FAX","LOC_FAXX","LOC_CT_LN","LOC_CT_FN","LOC_TITLE",
+"LOC_PH","LOC_PHX","LOC_EA"
- reader.SetSelectFields(new string[] { "INS_CO_ID","INS_CO_NM","INS_ADDR1","INS_ADDR2","INS_CITY","INS_ST","INS_ZIP","INS_CTRY",
-
- "INS_EA","POLICY_NO","DED_AMT","DED_STATUS","ASGN_NO","ASGN_DATE","ASGN_TYPE","CLM_NO","CLM_OFC_ID","CLM_OFC_NM","CLM_ADDR1",
- "CLM_ADDR2","CLM_CITY","CLM_ST","CLM_ZIP","CLM_CTRY","CLM_PH1","CLM_PH1X","CLM_PH2","CLM_PH2X","CLM_FAX","CLM_FAXX","CLM_CT_LN",
- "CLM_CT_FN","CLM_TITLE","CLM_CT_PH","CLM_CT_PHX","CLM_EA","PAYEE_NMS","PAY_TYPE","PAY_DATE","PAY_CHKNM","PAY_AMT","AGT_CO_ID","AGT_CO_NM",
- "AGT_ADDR1","AGT_ADDR2","AGT_CITY","AGT_ST","AGT_ZIP","AGT_CTRY","AGT_PH1","AGT_PH1X","AGT_PH2","AGT_PH2X","AGT_FAX","AGT_FAXX","AGT_CT_LN",
- "AGT_CT_FN","AGT_CT_PH","AGT_CT_PHX","AGT_EA","AGT_LIC_NO",
- "LOSS_DATE","LOSS_TYPE","LOSS_DESC","THEFT_IND","CAT_NO",
- "TLOS_IND","CUST_PR","INSD_LN","INSD_FN","INSD_TITLE","INSD_CO_NM","INSD_ADDR1","INSD_ADDR2","INSD_CITY","INSD_ST","INSD_ZIP",
- "INSD_CTRY","INSD_PH1","INSD_PH1X","INSD_PH2","INSD_PH2X","INSD_FAX","INSD_FAXX","INSD_EA","OWNR_LN","OWNR_FN","OWNR_TITLE","OWNR_CO_NM",
- "OWNR_ADDR1","OWNR_ADDR2","OWNR_CITY","OWNR_ST","OWNR_ZIP","OWNR_CTRY","OWNR_PH1","OWNR_PH1X","OWNR_PH2","OWNR_PH2X","OWNR_FAX","OWNR_FAXX",
- "OWNR_EA", "INS_PH1","INS_PH1X","INS_PH2","INS_PH2X","INS_FAX","INS_FAXX","INS_CT_LN","INS_CT_FN","INS_TITLE","INS_CT_PH","INS_CT_PHX", "LOSS_CAT"
});
var readValues = reader.NextRecord();
- j.ins_co_id = readValues[0]?.ToString();
- j.ins_co_nm = readValues[1]?.ToString();
- j.ins_addr1 = readValues[2]?.ToString();
- j.ins_addr2 = readValues[3]?.ToString();
- j.ins_city = readValues[4]?.ToString();
- j.ins_st = readValues[5]?.ToString();
- j.ins_zip = readValues[6]?.ToString();
- j.ins_ctry = readValues[7]?.ToString();
- j.ins_ea = readValues[8]?.ToString();
- j.policy_no = readValues[9]?.ToString();
- j.ded_amt = readValues[10]?.ToString();
- j.ded_status = readValues[11]?.ToString();
- j.asgn_no = readValues[12]?.ToString();
- j.asgn_date = readValues[13]?.ToString();
- j.asgn_type = readValues[14]?.ToString();
- j.clm_no = readValues[15]?.ToString();
- j.clm_ofc_id = readValues[16]?.ToString();
- j.clm_ofc_nm = readValues[17]?.ToString();
- j.clm_addr1 = readValues[18]?.ToString();
- j.clm_addr2 = readValues[19]?.ToString();
- j.clm_city = readValues[20]?.ToString();
- j.clm_st = readValues[21]?.ToString();
- j.clm_zip = readValues[22]?.ToString();
- j.clm_ctry = readValues[23]?.ToString();
- j.clm_ph1 = readValues[24]?.ToString();
- j.clm_ph1x = readValues[25]?.ToString();
- j.clm_ph2 = readValues[26]?.ToString();
- j.clm_ph2x = readValues[27]?.ToString();
- j.clm_fax = readValues[28]?.ToString();
- j.clm_faxx = readValues[29]?.ToString();
- j.clm_ct_ln = readValues[30]?.ToString();
- j.clm_ct_fn = readValues[31]?.ToString();
- j.clm_title = readValues[32]?.ToString();
- j.clm_ct_ph = readValues[33]?.ToString();
- j.clm_ct_phx = readValues[34]?.ToString();
- j.clm_ea = readValues[35]?.ToString();
- j.payee_nms = readValues[36]?.ToString();
- j.pay_type = readValues[37]?.ToString();
- j.pay_date = readValues[38]?.ToString();
- j.pay_chknm = readValues[39]?.ToString();
- j.pay_amt = readValues[40]?.ToString();
- j.agt_co_id = readValues[41]?.ToString();
- j.agt_co_nm = readValues[42]?.ToString();
- j.agt_addr1 = readValues[43]?.ToString();
- j.agt_addr2 = readValues[44]?.ToString();
- j.agt_city = readValues[45]?.ToString();
- j.agt_st = readValues[46]?.ToString();
- j.agt_zip = readValues[47]?.ToString();
- j.agt_ctry = readValues[48]?.ToString();
- j.agt_ph1 = readValues[49]?.ToString();
- j.agt_ph1x = readValues[50]?.ToString();
- j.agt_ph2 = readValues[51]?.ToString();
- j.agt_ph2x = readValues[52]?.ToString();
- j.agt_fax = readValues[53]?.ToString();
- j.agt_faxx = readValues[54]?.ToString();
- j.agt_ct_ln = readValues[55]?.ToString();
- j.agt_ct_fn = readValues[56]?.ToString();
- j.agt_ct_ph = readValues[57]?.ToString();
- j.agt_ct_phx = readValues[58]?.ToString();
- j.agt_ea = readValues[59]?.ToString();
- j.agt_lic_no = readValues[60]?.ToString();
- j.loss_date = readValues[61]?.ToString();
- j.loss_type = readValues[62]?.ToString();
- j.loss_desc = readValues[63]?.ToString();
- j.theft_ind = readValues[64]?.ToString(); //BOOL
- j.cat_no = readValues[65]?.ToString();
- j.tlos_ind = readValues[66]?.ToString();
- j.cust_pr = readValues[67]?.ToString();
- j.insd_ln = readValues[68]?.ToString();
- j.insd_fn = readValues[69]?.ToString();
- j.insd_title = readValues[70]?.ToString();
- j.insd_co_nm = readValues[71]?.ToString();
- j.insd_addr1 = readValues[72]?.ToString();
- j.insd_addr2 = readValues[73]?.ToString();
- j.insd_city = readValues[74]?.ToString();
- j.insd_st = readValues[75]?.ToString();
- j.insd_zip = readValues[76]?.ToString();
- j.insd_ctry = readValues[77]?.ToString();
- j.insd_ph1 = readValues[78]?.ToString();
- j.insd_ph1x = readValues[79]?.ToString();
- j.insd_ph2 = readValues[80]?.ToString();
- j.insd_ph2x = readValues[81]?.ToString();
- j.insd_fax = readValues[82]?.ToString();
- j.insd_faxx = readValues[82]?.ToString();
- j.insd_ea = readValues[83]?.ToString();
- j.ownr_ln = readValues[84]?.ToString();
- j.ownr_fn = readValues[85]?.ToString();
- j.ownr_title = readValues[86]?.ToString();
- j.ownr_co_nm = readValues[87]?.ToString();
- j.ownr_addr1 = readValues[88]?.ToString();
- j.ownr_addr2 = readValues[89]?.ToString();
- j.ownr_city = readValues[90]?.ToString();
- j.ownr_st = readValues[91]?.ToString();
- j.ownr_zip = readValues[92]?.ToString();
- j.ownr_ctry = readValues[93]?.ToString();
- j.ownr_ph1 = readValues[94]?.ToString();
- j.ownr_ph1x = readValues[95]?.ToString();
- j.ownr_ph2 = readValues[96]?.ToString();
- j.ownr_ph2x = readValues[97]?.ToString();
- j.ownr_fax = readValues[98]?.ToString();
- j.ownr_faxx = readValues[99]?.ToString();
- j.ownr_ea = readValues[100]?.ToString();
- j.ins_ph1 = readValues[101]?.ToString();
- j.ins_ph1x = readValues[102]?.ToString();
- j.ins_ph2 = readValues[103]?.ToString();
- j.ins_ph2x = readValues[104]?.ToString();
- j.ins_fax = readValues[105]?.ToString();
- j.ins_faxx = readValues[106]?.ToString();
- j.ins_ct_ln = readValues[107]?.ToString();
- j.ins_ct_fn = readValues[108]?.ToString();
- j.ins_title = readValues[109]?.ToString();
- j.ins_ct_ph = readValues[110]?.ToString();
- j.ins_ct_phx = readValues[111]?.ToString();
- j.loss_cat = readValues[112]?.ToString();
- j.shopid = AppMetaData.ActiveShopId;
+ //j.clmt_ln = readValues[0];//CLMT_LN
+ //j.clmt_fn = readValues[1];//CLMT_FN
+ //j.clmt_title = readValues[2];//CLMT_TITLE
+ //j.clmt_co_nm = readValues[3];//CLMT_CO_NM
+ //j.clmt_addr1 = readValues[4];//CLMT_ADDR1
+ //j.clmt_addr2 = readValues[5];//CLMT_ADDR2
+ //j.clmt_city = readValues[6];//CLMT_CITY
+ //j.clmt_st = readValues[7];//CLMT_ST
+ //j.clmt_zip = readValues[8];//CLMT_ZIP
+ //j.clmt_ctry = readValues[9];//CLMT_CTRY
+ //j.clmt_ph1 = readValues[10];//CLMT_PH1
+ //j.clmt_ph1x = readValues[11];//CLMT_PH1X
+ //j.clmt_ph2 = readValues[12];//CLMT_PH2
+ //j.clmt_ph2x = readValues[13];//CLMT_PH2X
+ //j.clmt_fax = readValues[14];//CLMT_FAX
+ //j.clmt_faxx = readValues[15];//CLMT_FAXX
+ //j.clmt_ea = readValues[16];//CLMT_EA
+ //j.est_co_id = readValues[17];//EST_CO_ID
+ j.est_co_nm = readValues[18];//EST_CO_NM
+ j.est_addr1 = readValues[19];//EST_ADDR1
+ j.est_addr2 = readValues[20];//EST_ADDR2
+ j.est_city = readValues[21];//EST_CITY
+ j.est_st = readValues[22];//EST_ST
+ j.est_zip = readValues[23];//EST_ZIP
+ j.est_ctry = readValues[24];//EST_CTRY
+ j.est_ph1 = readValues[25];//EST_PH1
+ //j.est_ph1x = readValues[26];//EST_PH1X
+ //j.est_ph2 = readValues[27];//EST_PH2
+ //j.est_ph2x = readValues[28];//EST_PH2X
+ //j.est_fax = readValues[29];//EST_FAX
+ //j.est_faxx = readValues[30];//EST_FAXX
+ j.est_ct_ln = readValues[31];//EST_CT_LN
+ j.est_ct_fn = readValues[32];//EST_CT_FN
+ j.est_ea = readValues[33];//EST_EA
+ //j.est_lic_no = readValues[34];//EST_LIC_NO
+ //j.est_fileno = readValues[35];//EST_FILENO
+ //j.insp_ct_ln = readValues[36];//INSP_CT_LN
+ //j.insp_ct_fn = readValues[37];//INSP_CT_FN
+ //j.insp_addr1 = readValues[38];//INSP_ADDR1
+ //j.insp_addr2 = readValues[39];//INSP_ADDR2
+ //j.insp_city = readValues[40];//INSP_CITY
+ //j.insp_st = readValues[41];//INSP_ST
+ //j.insp_zip = readValues[42];//INSP_ZIP
+ //j.insp_ctry = readValues[43];//INSP_CTRY
+ //j.insp_ph1 = readValues[44];//INSP_PH1
+ //j.insp_ph1x = readValues[45];//INSP_PH1X
+ //j.insp_ph2 = readValues[46];//INSP_PH2
+ //j.insp_ph2x = readValues[47];//INSP_PH2X
+ //j.insp_fax = readValues[48];//INSP_FAX
+ //j.insp_faxx = readValues[49];//INSP_FAXX
+ //j.insp_ea = readValues[50];//INSP_EA
+ //j.insp_code = readValues[51];//INSP_CODE
+ //j.insp_desc = readValues[52];//INSP_DESC
+ //j.insp_date = readValues[53];//INSP_DATE
+ //j.insp_time = readValues[54];//INSP_TIME
+ //j.rf_co_id = readValues[55];//RF_CO_ID
+ //j.rf_co_nm = readValues[56];//RF_CO_NM
+ //j.rf_addr1 = readValues[57];//RF_ADDR1
+ //j.rf_addr2 = readValues[58];//RF_ADDR2
+ //j.rf_city = readValues[59];//RF_CITY
+ //j.rf_st = readValues[60];//RF_ST
+ //j.rf_zip = readValues[61];//RF_ZIP
+ //j.rf_ctry = readValues[62];//RF_CTRY
+ //j.rf_ph1 = readValues[63];//RF_PH1
+ //j.rf_ph1x = readValues[64];//RF_PH1X
+ //j.rf_ph2 = readValues[65];//RF_PH2
+ //j.rf_ph2x = readValues[66];//RF_PH2X
+ //j.rf_fax = readValues[67];//RF_FAX
+ //j.rf_faxx = readValues[68];//RF_FAXX
+ //j.rf_ct_ln = readValues[69];//RF_CT_LN
+ //j.rf_ct_fn = readValues[70];//RF_CT_FN
+ //j.rf_ea = readValues[71];//RF_EA
+ //j.rf_tax_id = readValues[72];//RF_TAX_ID
+ //j.rf_lic_no = readValues[73];//RF_LIC_NO
+ //j.rf_bar_no = readValues[74];//RF_BAR_NO
+ //j.ro_in_date = readValues[75];//RO_IN_DATE
+ //j.ro_in_time = readValues[76];//RO_IN_TIME
+ //j.tar_date = readValues[77];//TAR_DATE
+ //j.tar_time = readValues[78];//TAR_TIME
+ //j.ro_cmpdate = readValues[79];//RO_CMPDATE
+ //j.ro_cmptime = readValues[80];//RO_CMPTIME
+ //j.date_out = readValues[81];//DATE_OUT
+ //j.time_out = readValues[82];//TIME_OUT
+ //j.rf_estimtr = readValues[83];//RF_ESTIMTR
+ //j.mktg_type = readValues[84];//MKTG_TYPE
+ //j.mktg_src = readValues[85];//MKTG_SRC
+ //j.loc_nm = readValues[86];//LOC_NM
+ //j.loc_addr1 = readValues[87];//LOC_ADDR1
+ //j.loc_addr2 = readValues[88];//LOC_ADDR2
+ //j.loc_city = readValues[89];//LOC_CITY
+ //j.loc_st = readValues[90];//LOC_ST
+ //j.loc_zip = readValues[91];//LOC_ZIP
+ //j.loc_ctry = readValues[92];//LOC_CTRY
+ //j.loc_ph1 = readValues[93];//LOC_PH1
+ //j.loc_ph1x = readValues[94];//LOC_PH1X
+ //j.loc_ph2 = readValues[95];//LOC_PH2
+ //j.loc_ph2x = readValues[96];//LOC_PH2X
+ //j.loc_fax = readValues[97];//LOC_FAX
+ //j.loc_faxx = readValues[98];//LOC_FAXX
+ //j.loc_ct_ln = readValues[99];//LOC_CT_LN
+ //j.loc_ct_fn = readValues[100];//LOC_CT_FN
+ //j.loc_title = readValues[101];//LOC_TITLE
+ //j.loc_ph = readValues[102];//LOC_PH
+ //j.loc_phx = readValues[103];//LOC_PHX
+ //j.loc_ea = readValues[104];//LOC_EA
+
+
+
return;
}
}
catch (IOException ex)
{
- logger.Trace(ex, "Unable to open AD1 file. Retrying. ");
+ logger.Trace(ex, "Unable to open AD2 file. Retrying. ");
retryNumber++;
Thread.Sleep(3000);
}
@@ -383,6 +376,175 @@ namespace BodyshopUploader.Utils.Decoder
}
+ public static void ParsePfhFile(ref dynamic j, string RootFilePath)
+ {
+ if (string.IsNullOrWhiteSpace(j.ciecaid.Value))
+ {
+ return;
+ }
+ logger.Trace(@"Parsing PFH at: {0}{1}", RootFilePath, j.ciecaid.Value);
+
+ int retryNumber = 0;
+ while (retryNumber < 11)
+ {
+ try
+ {
+ using (Stream fis = File.Open(RootFilePath + j.ciecaid.Value + ".pfh", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
+ {
+ var reader = new DBFReader(fis);
+ reader.SetSelectFields(new string[] { "ID_PRO_NAM","TAX_PRETHR","TAX_THRAMT","TAX_PSTTHR","TAX_TOW_IN","TAX_TOW_RT","TAX_STR_IN","TAX_STR_RT","TAX_SUB_IN","TAX_SUB_RT",
+ "TAX_BTR_IN","TAX_LBR_RT","TAX_GST_RT","TAX_GST_IN","ADJ_G_DISC","ADJ_TOWDIS","ADJ_STRDIS","ADJ_BTR_IN","TAX_PREDIS",
+ });
+ var readValues = reader.NextRecord();
+
+ //Values divided by 100 to make consistent.
+
+ //j.id_pro_nam = readValues[0];//ID_PRO_NAM
+ //j.tax_prethr = readValues[1];//TAX_PRETHR
+ //j.tax_thramt = readValues[2];//TAX_THRAMT
+ //j.tax_pstthr = float.Parse(readValues[3].ToString())/100;//TAX_PSTTHR //PST for Parts
+ //j.tax_tow_in = readValues[4];//TAX_TOW_IN
+ j.tax_tow_rt = (bool)readValues[4] ? float.Parse(readValues[5].ToString()) / 100 : 0;//TAX_TOW_RT
+ //j.tax_str_in = readValues[6];//TAX_STR_IN
+ //j.tax_str_rt = readValues[7];//TAX_STR_RT
+ //j.tax_sub_in = readValues[8];//TAX_SUB_IN
+ //j.tax_sub_rt = (bool)readValues[8] ? float.Parse(readValues[9].ToString()) / 100 : 0;//TAX_SUB_RT
+ //j.tax_btr_in = readValues[10];//TAX_BTR_IN
+ //j.tax_lbr_rt = readValues[11];//TAX_LBR_RT
+ j.federal_tax_rate = float.Parse(readValues[12].ToString()) / 100;//TAX_GST_RT
+ //j.tax_gst_in = readValues[13];//TAX_GST_IN
+ //j.adj_g_disc = readValues[14];//ADJ_G_DISC
+ //j.adj_towdis = readValues[15];//ADJ_TOWDIS
+ //j.adj_strdis = readValues[16];//ADJ_STRDIS
+ //j.adj_btr_in = readValues[17];//ADJ_BTR_IN
+ //j.tax_predis = readValues[18];//TAX_PREDIS
+
+ return;
+ }
+ }
+ catch (IOException ex)
+ {
+ logger.Trace(ex, "Unable to open PFH file. Retrying. ");
+ retryNumber++;
+ Thread.Sleep(3000);
+ }
+ }
+ }
+
+ public static void ParsePflFile(ref dynamic j, string RootFilePath)
+ {
+ if (string.IsNullOrWhiteSpace(j.ciecaid.Value))
+ {
+ return;
+ }
+ logger.Trace(@"Parsing PFl at: {0}{1}", RootFilePath, j.ciecaid.Value);
+
+ int retryNumber = 0;
+ while (retryNumber < 11)
+ {
+ try
+ {
+ using (Stream fis = File.Open(RootFilePath + j.ciecaid.Value + ".pfl", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
+ {
+ var reader = new DBFReader(fis);
+ reader.SetSelectFields(new string[] { "LBR_TYPE",
+ "LBR_DESC",
+ "LBR_RATE",
+ "LBR_TAX_IN",
+ "LBR_TAXP",
+ "LBR_ADJP",
+ "LBR_TX_TY1",
+ "LBR_TX_IN1",
+ "LBR_TX_TY2",
+ "LBR_TX_IN2",
+ "LBR_TX_TY3",
+ "LBR_TX_IN3",
+ "LBR_TX_TY4",
+ "LBR_TX_IN4",
+ "LBR_TX_TY5",
+ "LBR_TX_IN5"
+ });
+ for (int i = 0; i < reader.RecordCount; i++)
+ {
+ var readValues = reader.NextRecord();
+ switch (readValues[0].ToString())//Case switch on LBR_TYPE to assign correctly.
+ {
+ case "LAB":
+ j.rate_lab = readValues[2];
+ break;
+ case "LAD":
+ j.rate_lad = readValues[2];
+ break;
+ case "LAS":
+ j.rate_las = readValues[2];
+ break;
+ case "LAR":
+ j.rate_lar = readValues[2];
+ break;
+ case "LAE":
+ j.rate_lae = readValues[2];
+ break;
+ case "LAG":
+ j.rate_lag = readValues[2];
+ break;
+ case "LAF":
+ j.rate_laf = readValues[2];
+ break;
+ case "LAM":
+ j.rate_lam = readValues[2];
+ break;
+ case "LAU":
+ j.rate_lau = readValues[2];
+ break;
+ case "LA1":
+ j.rate_la1 = readValues[2];
+ break;
+ case "LA2":
+ j.rate_la2 = readValues[2];
+ break;
+ case "LA3":
+ j.rate_la3 = readValues[2];
+ break;
+ case "LA4":
+ j.rate_la4 = readValues[2];
+ break;
+ default:
+ logger.Error("Unknown type value present in PFL file. {0}:{1}", readValues[0].ToString(), readValues[2]);
+ break;
+ }
+ }
+
+
+ //j.lbr_type = readValues[0];//LBR_TYPE
+ //j.lbr_desc = readValues[1];//LBR_DESC
+ //j.lbr_rate = readValues[2];//LBR_RATE
+ //j.lbr_tax_in = readValues[3];//LBR_TAX_IN
+ //j.lbr_taxp = readValues[4];//LBR_TAXP
+ //j.lbr_adjp = readValues[5];//LBR_ADJP
+ //j.lbr_tx_ty1 = readValues[6];//LBR_TX_TY1
+ //j.lbr_tx_in1 = readValues[7];//LBR_TX_IN1
+ //j.lbr_tx_ty2 = readValues[8];//LBR_TX_TY2
+ //j.lbr_tx_in2 = readValues[9];//LBR_TX_IN2
+ //j.lbr_tx_ty3 = readValues[10];//LBR_TX_TY3
+ //j.lbr_tx_in3 = readValues[11];//LBR_TX_IN3
+ //j.lbr_tx_ty4 = readValues[12];//LBR_TX_TY4
+ //j.lbr_tx_in4 = readValues[13];//LBR_TX_IN4
+ //j.lbr_tx_ty5 = readValues[14];//LBR_TX_TY5
+ //j.lbr_tx_in5 = readValues[15];//LBR_TX_IN5
+
+
+ return;
+ }
+ }
+ catch (IOException ex)
+ {
+ logger.Trace(ex, "Unable to open PFl file. Retrying. ");
+ retryNumber++;
+ Thread.Sleep(3000);
+ }
+ }
+ }
+
public static void ParseVehFile(ref dynamic j, string RootFilePath)
{
if (string.IsNullOrWhiteSpace(j.ciecaid.Value)) { return; }
@@ -397,7 +559,7 @@ namespace BodyshopUploader.Utils.Decoder
using (Stream fis = File.Open(RootFilePath + j.ciecaid.Value + "v.veh", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
dynamic v = new JObject();
-
+ //V_Options references a memo file and had to be removed
var reader = new DBFReader(fis);
reader.SetSelectFields(new string[] { "IMPACT_1",
"IMPACT_2",
@@ -411,7 +573,7 @@ namespace BodyshopUploader.Utils.Decoder
"V_MAKECODE",
"V_MAKEDESC",
"V_MODEL",
- "V_TYPE",
+ "V_TYPE",
"V_BSTYLE",
"V_TRIMCODE",
"TRIM_COLOR",
@@ -450,7 +612,6 @@ namespace BodyshopUploader.Utils.Decoder
v.trim_color = readValues[15]?.ToString();
v.v_mldgcode = readValues[16]?.ToString();
v.v_engine = readValues[17]?.ToString();
- // v.v_options = readValues[18]?.ToString();
v.v_color = readValues[18]?.ToString();
v.v_tone = readValues[19]?.ToString();
v.v_stage = readValues[20]?.ToString();
@@ -512,8 +673,6 @@ namespace BodyshopUploader.Utils.Decoder
logger.Trace(@"Parsing Ttl at: {0}{1}", RootFilePath, j.ciecaid.Value);
-
-
int retryNumber = 0;
while (retryNumber < 11)
{
diff --git a/BodyshopUploader/Utils/JobProcessingQueue.cs b/BodyshopUploader/Utils/JobProcessingQueue.cs
index bc2ff97..29bfb34 100644
--- a/BodyshopUploader/Utils/JobProcessingQueue.cs
+++ b/BodyshopUploader/Utils/JobProcessingQueue.cs
@@ -87,6 +87,9 @@ namespace BodyshopUploader.Utils
{
//TODO: This should perform some sort of upsert to update the vehicle with more up to date information.
+ //Strip out what isn't needed by replacing it with nulls to save DB space.
+ //https://stackoverflow.com/questions/29475467/when-merging-objects-using-newtonsoft-json-how-do-you-ignore-empty-string-value
+ ((JObject)item.Job).RemovePropertiesByValue(v => v.Type == JTokenType.String && string.IsNullOrEmpty((string)v.Value));
//Add to Holding Queue
@@ -95,9 +98,9 @@ namespace BodyshopUploader.Utils
newJob.bodyshopid = AppMetaData.ActiveShopId;
newJob.cieca_id = item.Job.ciecaid;
newJob.est_data = item.Job;
- newJob.ownr_name = item.Job.ownr_fn.Value + " " + item.Job.ownr_ln.Value;
+ newJob.ownr_name = item.Job.ownr_fn?.Value + " " + item.Job.ownr_ln?.Value;
newJob.vehicle_info = item.Job.vehicle.data.v_model_yr.Value + " " + item.Job.vehicle.data.v_make_desc.Value + " " + item.Job.vehicle.data.v_model_desc.Value;
- newJob.clm_no = item.Job.clm_no.Value;
+ newJob.clm_no = item.Job.clm_no?.Value;
var vehuuid = await Utils.Queries.VehicleQueries.GetVehicleUuidByVin(item?.Job?.vehicle?.data?.v_vin.Value ?? "");
if (!string.IsNullOrEmpty(vehuuid))
diff --git a/BodyshopUploader/Utils/JsonExtensions.cs b/BodyshopUploader/Utils/JsonExtensions.cs
new file mode 100644
index 0000000..0500193
--- /dev/null
+++ b/BodyshopUploader/Utils/JsonExtensions.cs
@@ -0,0 +1,33 @@
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BodyshopUploader.Utils
+{
+ public static class JsonExtensions
+ {
+ public static void RemovePropertiesByValue(this JToken root, Predicate filter)
+ {
+ var nulls = root.DescendantsAndSelf().OfType().Where(v => v.Parent is JProperty && filter(v)).ToList();
+ foreach (var value in nulls)
+ {
+ var parent = (JProperty)value.Parent;
+ parent.Remove();
+ }
+ }
+
+ public static IEnumerable DescendantsAndSelf(this JToken node)
+ {
+ if (node == null)
+ return Enumerable.Empty();
+ var container = node as JContainer;
+ if (container != null)
+ return container.DescendantsAndSelf();
+ else
+ return new[] { node };
+ }
+ }
+}
diff --git a/Reference/CIECA Standard.xlsx b/Reference/CIECA Standard.xlsx
new file mode 100644
index 0000000..638bf93
Binary files /dev/null and b/Reference/CIECA Standard.xlsx differ