Added PFP decoding.
This commit is contained in:
@@ -38,7 +38,7 @@ namespace BodyshopUploader.Utils.Decoder
|
||||
ParseStlFile(ref ret, _dir);
|
||||
ParseTtlFile(ref ret, _dir);
|
||||
ParseLinFile(ref ret, _dir);
|
||||
|
||||
ParsePfpFile(ref ret, _dir);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -403,7 +403,7 @@ namespace BodyshopUploader.Utils.Decoder
|
||||
//Values divided by 100 to make consistent.
|
||||
|
||||
//j.id_pro_nam = readValues[0];//ID_PRO_NAM
|
||||
j.tax_prethr = readValues[1];//TAX_PRETHR Parts tax for pre-threshold
|
||||
j.tax_prethr = float.Parse(readValues[1].ToString()) / 100;//TAX_PRETHR Parts tax for pre-threshold
|
||||
j.tax_thramt = readValues[2];//TAX_THRAMT Parts threshold amount
|
||||
j.tax_pstthr = float.Parse(readValues[3].ToString()) / 100;//TAX_PSTTHR //PST for Parts
|
||||
//j.tax_tow_in = readValues[4];//TAX_TOW_IN
|
||||
@@ -416,8 +416,8 @@ namespace BodyshopUploader.Utils.Decoder
|
||||
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_lbr_rt = float.Parse(readValues[11].ToString()) / 100;//TAX_LBR_RT
|
||||
j.federal_tax_rate = float.Parse(readValues[12].ToString()) / 100;//TAX_GST_RT //TODO Handling for different tax code fields?
|
||||
//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
|
||||
@@ -613,30 +613,30 @@ namespace BodyshopUploader.Utils.Decoder
|
||||
{
|
||||
//TODO: Import MAXDLR for every type.
|
||||
case "MAPA":
|
||||
j.rate_mapa = readValues[11];
|
||||
j.tax_paint_mat_rt = readValues[14];
|
||||
j.rate_mapa = readValues[7];
|
||||
j.tax_paint_mat_rt = float.Parse(readValues[14].ToString()) / 100;
|
||||
break;
|
||||
case "MASH":
|
||||
j.rate_mash = readValues[11];
|
||||
j.rate_mash = readValues[7];
|
||||
break;
|
||||
case "MAHW":
|
||||
j.rate_mahw = readValues[11];
|
||||
j.tax_levies_rt = readValues[14];
|
||||
case "MAHW": //TODO Should the remainder of these be index 7 or 11?
|
||||
j.rate_mahw = readValues[7];
|
||||
j.tax_levies_rt = float.Parse(readValues[14].ToString()) / 100;
|
||||
break;
|
||||
case "MA2S":
|
||||
j.rate_ma2s = readValues[11];
|
||||
j.rate_ma2s = readValues[7];
|
||||
break;
|
||||
case "MA2T":
|
||||
j.rate_ma2t = readValues[11];
|
||||
j.rate_ma2t = readValues[7];
|
||||
break;
|
||||
case "MA3S":
|
||||
j.rate_ma3s = readValues[11];
|
||||
j.rate_ma3s = readValues[7];
|
||||
break;
|
||||
case "MACS":
|
||||
j.rate_macs = readValues[11];
|
||||
j.rate_macs = readValues[7];
|
||||
break;
|
||||
case "MABL":
|
||||
j.rate_mabl = readValues[11];
|
||||
j.rate_mabl = readValues[7];
|
||||
break;
|
||||
default:
|
||||
logger.Error("Unknown type value present in PFM file. {0}:{1}", readValues[0].ToString(), readValues[2]);
|
||||
@@ -1122,6 +1122,83 @@ namespace BodyshopUploader.Utils.Decoder
|
||||
}
|
||||
}
|
||||
|
||||
public static void ParsePfpFile(ref dynamic j, string RootFilePath)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(j.ciecaid.Value))
|
||||
{
|
||||
return;
|
||||
}
|
||||
logger.Trace(@"Parsing PFP at: {0}{1}", RootFilePath, j.ciecaid.Value);
|
||||
|
||||
int retryNumber = 0;
|
||||
while (retryNumber < 11)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (Stream fis = File.Open(RootFilePath + j.ciecaid.Value + ".pfp", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||
{
|
||||
//"CAL_LBRMAX may have null values. had to be removed becauase dbf reader expects 0 and not null.
|
||||
var reader = new DBFReader(fis);
|
||||
reader.SetSelectFields(new string[] { "PRT_TYPE",
|
||||
"PRT_TAX_IN",
|
||||
"PRT_TAX_RT",
|
||||
"PRT_MKUPP",
|
||||
"PRT_MKTYP",
|
||||
"PRT_DISCP",
|
||||
"PRT_TX_TY1",
|
||||
"PRT_TX_IN1",
|
||||
"PRT_TX_TY2",
|
||||
"PRT_TX_IN2",
|
||||
"PRT_TX_TY3",
|
||||
"PRT_TX_IN3",
|
||||
"PRT_TX_TY4",
|
||||
"PRT_TX_IN4",
|
||||
"PRT_TX_TY5",
|
||||
"PRT_TX_IN5" });
|
||||
|
||||
var taxRates = new JObject();
|
||||
|
||||
|
||||
for (int i = 0; i < reader.RecordCount; i++)
|
||||
{
|
||||
var readValues = reader.NextRecord();
|
||||
dynamic t = new JObject();
|
||||
|
||||
t.prt_type = readValues[0];//PRT_TYPE
|
||||
t.prt_tax_in = readValues[1];//PRT_TAX_IN
|
||||
t.prt_tax_rt = (bool)readValues[1] ? float.Parse(readValues[2].ToString()) / 100 : 0;//PRT_TAX_RT
|
||||
t.prt_mkupp = readValues[3];//PRT_MKUPP
|
||||
t.prt_mktyp = readValues[4];//PRT_MKTYP
|
||||
t.prt_discp = readValues[5];//PRT_DISCP
|
||||
//t.prt_tx_ty1 = readValues[6];//PRT_TX_TY1
|
||||
//t.prt_tx_in1 = readValues[7];//PRT_TX_IN1
|
||||
//t.prt_tx_ty2 = readValues[8];//PRT_TX_TY2
|
||||
//t.prt_tx_in2 = readValues[9];//PRT_TX_IN2
|
||||
//t.prt_tx_ty3 = readValues[10];//PRT_TX_TY3
|
||||
//t.prt_tx_in3 = readValues[11];//PRT_TX_IN3
|
||||
//t.prt_tx_ty4 = readValues[12];//PRT_TX_TY4
|
||||
//t.prt_tx_in4 = readValues[13];//PRT_TX_IN4
|
||||
//t.prt_tx_ty5 = readValues[14];//PRT_TX_TY5
|
||||
//t.prt_tx_in5 = readValues[15];//PRT_TX_IN5
|
||||
|
||||
taxRates[readValues[0]] = t;
|
||||
}
|
||||
j.parts_tax_rates = taxRates;
|
||||
|
||||
reader.Dispose();
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
logger.Trace(ex, "Unable to open LIN file. Retrying. ");
|
||||
retryNumber++;
|
||||
Thread.Sleep(3000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user