1741 lines
80 KiB
C#
1741 lines
80 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using DotNetDBF;
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
namespace BodyshopPartner.Utils
|
|
{
|
|
public static class OEConnection
|
|
{
|
|
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
|
private static string workingDirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
|
|
|
|
private static string emsBasePath = workingDirectory + @"\EmsBase";
|
|
private static string TempEmsDir = Properties.Settings.Default.EmsExportPath;
|
|
|
|
private static Encoding DbfFileCharEncoding = Encoding.ASCII;
|
|
private static byte DbfFileSignature = DBFSignature.DBase3; //DBFSignature.WithMemo;
|
|
|
|
private static byte DbfFileLanguageDriver = 0; //0x37;
|
|
public static void SendToOEConnection(dynamic PartsOrder)
|
|
{
|
|
Directory.CreateDirectory(TempEmsDir);
|
|
GenerateAd1File(PartsOrder.job);
|
|
GenerateAd2File(PartsOrder.job);
|
|
GenerateVehFile(PartsOrder.job);
|
|
GenerateLinFile(PartsOrder.job, PartsOrder);
|
|
GeneratePfhFile(PartsOrder.job);
|
|
GeneratePflFile(PartsOrder.job);
|
|
GeneratePfmFile(PartsOrder.job);
|
|
GeneratePfoFile(PartsOrder.job);
|
|
GeneratePfpFile(PartsOrder.job);
|
|
GeneratePftFile(PartsOrder.job);
|
|
GenerateStlFile(PartsOrder.job);
|
|
GenerateTtlFile(PartsOrder.job);
|
|
|
|
GenerateEnvFile(PartsOrder.job);
|
|
|
|
logger.Debug("All files created.");
|
|
}
|
|
|
|
public static DBFField[] ReadDbfFields(string dbfFilePath)
|
|
{
|
|
using (var blankEmsFileStream = File.Open(dbfFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
|
{
|
|
using (var reader = new DBFReader(blankEmsFileStream))
|
|
{
|
|
return reader.Fields;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static string GetSupplementNumber(dynamic Job)
|
|
{
|
|
//*** TODO
|
|
return "1";
|
|
}
|
|
|
|
public static string GenerateFileName(dynamic Job)
|
|
{
|
|
return Job.ciecaid?.Value;
|
|
//if (string.IsNullOrEmpty(Job.clm_no?.Value)) { return Job.ro_number?.Value; }
|
|
//return Job.clm_no;
|
|
}
|
|
|
|
public static void GenerateAd1File(dynamic Job)
|
|
{
|
|
try
|
|
{
|
|
DBFField[] StandardEmsFields = ReadDbfFields(emsBasePath + @"\EMSA.AD1");
|
|
|
|
using (var fileStream = File.Create(TempEmsDir + $@"\{GenerateFileName(Job)}.AD1"))
|
|
{
|
|
using (var writer = new DBFWriter())
|
|
{
|
|
writer.CharEncoding = DbfFileCharEncoding;
|
|
writer.Signature = DbfFileSignature;
|
|
writer.LanguageDriver = DbfFileLanguageDriver;
|
|
|
|
writer.Fields = StandardEmsFields;
|
|
|
|
writer.Fields[20] = new DBFField("INS_MEMO", NativeDbType.Char, 20);
|
|
writer.Fields[53] = new DBFField("PAY_MEMO", NativeDbType.Char, 20);
|
|
writer.Fields[81] = new DBFField("LOSS_MEMO", NativeDbType.Char, 20);
|
|
|
|
|
|
writer.AddRecord(
|
|
Job.ins_co_nm?.Value, //Ins CO ID
|
|
Job.ins_co_nm?.Value,
|
|
Job.ins_addr1?.Value,
|
|
Job.ins_addr2?.Value,
|
|
Job.ins_city?.Value,
|
|
Job.ins_st?.Value,
|
|
Job.ins_zip?.Value,
|
|
Job.ins_ctry?.Value,
|
|
Job.ins_ph1?.Value,
|
|
Job.ins_ph1x?.Value,
|
|
Job.ins_ph2?.Value,
|
|
Job.ins_ph2x?.Value,
|
|
Job.ins_fax?.Value,
|
|
Job.ins_faxx?.Value,
|
|
Job.ins_ct_ln?.Value,
|
|
Job.ins_ct_fn?.Value,
|
|
Job.ins_title?.Value,
|
|
Job.ins_ct_ph?.Value,
|
|
Job.ins_ct_phx?.Value,
|
|
Job.ins_ea?.Value,
|
|
Job.ins_memo?.Value,
|
|
Job.policy_no?.Value,
|
|
Job.ded_amt?.Value,
|
|
Job.ded_status?.Value,
|
|
Job.asgn_no?.Value,
|
|
string.IsNullOrEmpty(Job.asgn_date?.Value) ? null : DateTime.Parse(Job.asgn_date?.Value),
|
|
Job.asgn_type?.Value,
|
|
Job.clm_no?.Value,
|
|
Job.clm_ofc_id?.Value,
|
|
Job.clm_ofc_nm?.Value,
|
|
Job.clm_addr1?.Value,
|
|
Job.clm_addr2?.Value,
|
|
Job.clm_city?.Value,
|
|
Job.clm_st?.Value,
|
|
Job.clm_zip?.Value,
|
|
Job.clm_ctry?.Value,
|
|
Job.clm_ph1?.Value,
|
|
Job.clm_ph1x?.Value,
|
|
Job.clm_ph2?.Value,
|
|
Job.clm_ph2x?.Value,
|
|
Job.clm_fax?.Value,
|
|
Job.clm_faxx?.Value,
|
|
Job.clm_ct_ln?.Value,
|
|
Job.clm_ct_fn?.Value,
|
|
Job.clm_title?.Value,
|
|
Job.clm_ct_ph?.Value,
|
|
Job.clm_ct_phx?.Value,
|
|
Job.clm_ea?.Value,
|
|
Job.payee_nms?.Value,
|
|
Job.pay_type?.Value,
|
|
Job.pay_date?.Value,
|
|
null,//Job.pay_chknm?.Value,
|
|
null,//Job.pay_amt?.Value,
|
|
Job.pay_memo?.Value,
|
|
Job.agt_co_id?.Value,
|
|
Job.agt_co_nm?.Value,
|
|
Job.agt_addr1?.Value,
|
|
Job.agt_addr2?.Value,
|
|
Job.agt_city?.Value,
|
|
Job.agt_st?.Value,
|
|
Job.agt_zip?.Value,
|
|
Job.agt_ctry?.Value,
|
|
Job.agt_ph1?.Value,
|
|
Job.agt_ph1x?.Value,
|
|
Job.agt_ph2?.Value,
|
|
Job.agt_ph2x?.Value,
|
|
Job.agt_fax?.Value,
|
|
Job.agt_faxx?.Value,
|
|
Job.agt_ct_ln?.Value,
|
|
Job.agt_ct_fn?.Value,
|
|
Job.agt_ct_ph?.Value,
|
|
Job.agt_ct_phx?.Value,
|
|
Job.agt_ea?.Value,
|
|
Job.agt_lic_no?.Value,
|
|
string.IsNullOrEmpty(Job.loss_date?.Value) ? null : DateTime.Parse(Job.loss_date?.Value),
|
|
null,//Job.loss_cat?.Value,
|
|
null,//Job.loss_type?.Value,
|
|
Job.loss_desc?.Value,
|
|
null,//Job.theft_ind?.Value,
|
|
Job.cat_no?.Value,
|
|
null, //Job.tlos_ind?.Value,
|
|
Job.loss_memo?.Value,
|
|
Job.cust_pr?.Value,
|
|
Job.insd_ln?.Value,
|
|
Job.insd_fn?.Value,
|
|
Job.insd_title?.Value,
|
|
Job.insd_co_nm?.Value,
|
|
Job.insd_addr1?.Value,
|
|
Job.insd_addr2?.Value,
|
|
Job.insd_city?.Value,
|
|
Job.insd_st?.Value,
|
|
Job.insd_zip?.Value,
|
|
Job.insd_ctry?.Value,
|
|
Job.insd_ph1?.Value,
|
|
Job.insd_ph1x?.Value,
|
|
Job.insd_ph2?.Value,
|
|
Job.insd_ph2x?.Value,
|
|
Job.insd_fax?.Value,
|
|
Job.insd_faxx?.Value,
|
|
Job.insd_ea?.Value,
|
|
Job.ownr_ln?.Value,
|
|
Job.ownr_fn?.Value,
|
|
Job.ownr_title?.Value,
|
|
Job.ownr_co_nm?.Value,
|
|
Job.ownr_addr1?.Value,
|
|
Job.ownr_addr2?.Value,
|
|
Job.ownr_city?.Value,
|
|
Job.ownr_st?.Value,
|
|
Job.ownr_zip?.Value,
|
|
Job.ownr_ctry?.Value,
|
|
Job.ownr_ph1?.Value,
|
|
Job.ownr_ph1x?.Value,
|
|
Job.ownr_ph2?.Value,
|
|
Job.ownr_ph2x?.Value,
|
|
Job.ownr_fax?.Value,
|
|
Job.ownr_faxx?.Value,
|
|
Job.ownr_ea.Value
|
|
); ;
|
|
|
|
writer.Write(fileStream);
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex, "Error when creating AD1 file.");
|
|
throw ex;
|
|
}
|
|
|
|
}
|
|
public static void GenerateAd2File(dynamic Job)
|
|
{
|
|
try
|
|
{
|
|
DBFField[] StandardEmsFields = ReadDbfFields(emsBasePath + @"\EMSB.AD2");
|
|
|
|
using (var fileStream = File.Create(TempEmsDir + $@"\{GenerateFileName(Job)}.AD2"))
|
|
{
|
|
using (var writer = new DBFWriter())
|
|
{
|
|
writer.CharEncoding = DbfFileCharEncoding;
|
|
writer.Signature = DbfFileSignature;
|
|
writer.LanguageDriver = DbfFileLanguageDriver;
|
|
|
|
writer.Fields = StandardEmsFields;
|
|
|
|
|
|
writer.Fields[77] = new DBFField("RO_AUTH", NativeDbType.Char, 20);
|
|
|
|
writer.AddRecord(
|
|
Job.clmt_ln?.Value,
|
|
Job.clmt_fn?.Value,
|
|
Job.clmt_title?.Value,
|
|
Job.clmt_co_nm?.Value,
|
|
Job.clmt_addr1?.Value,
|
|
Job.clmt_addr2?.Value,
|
|
Job.clmt_city?.Value,
|
|
Job.clmt_st?.Value,
|
|
Job.clmt_zip?.Value,
|
|
Job.clmt_ctry?.Value,
|
|
Job.clmt_ph1?.Value,
|
|
Job.clmt_ph1x?.Value,
|
|
Job.clmt_ph2?.Value,
|
|
Job.clmt_ph2x?.Value,
|
|
Job.clmt_fax?.Value,
|
|
Job.clmt_faxx?.Value,
|
|
Job.clmt_ea?.Value,
|
|
Job.est_co_id?.Value,
|
|
Job.est_co_nm?.Value,
|
|
Job.est_addr1?.Value,
|
|
Job.est_addr2?.Value,
|
|
Job.est_city?.Value,
|
|
Job.est_st?.Value,
|
|
Job.est_zip?.Value,
|
|
Job.est_ctry?.Value,
|
|
Job.est_ph1?.Value,
|
|
Job.est_ph1x?.Value,
|
|
Job.est_ph2?.Value,
|
|
Job.est_ph2x?.Value,
|
|
Job.est_fax?.Value,
|
|
Job.est_faxx?.Value,
|
|
Job.est_ct_ln?.Value,
|
|
Job.est_ct_fn?.Value,
|
|
Job.est_ea?.Value,
|
|
Job.est_lic_no?.Value,
|
|
Job.est_fileno?.Value,
|
|
Job.insp_ct_ln?.Value,
|
|
Job.insp_ct_fn?.Value,
|
|
Job.insp_addr1?.Value,
|
|
Job.insp_addr2?.Value,
|
|
Job.insp_city?.Value,
|
|
Job.insp_st?.Value,
|
|
Job.insp_zip?.Value,
|
|
Job.insp_ctry?.Value,
|
|
Job.insp_ph1?.Value,
|
|
Job.insp_ph1x?.Value,
|
|
Job.insp_ph2?.Value,
|
|
Job.insp_ph2x?.Value,
|
|
Job.insp_fax?.Value,
|
|
Job.insp_faxx?.Value,
|
|
Job.insp_ea?.Value,
|
|
Job.insp_code?.Value,
|
|
Job.insp_desc?.Value,
|
|
Job.insp_date?.Value,
|
|
Job.insp_time?.Value,
|
|
Job.rf_co_id?.Value,
|
|
"B&M Autocraft", //Job.rf_co_nm?.Value,
|
|
Job.rf_addr1?.Value,
|
|
Job.rf_addr2?.Value,
|
|
Job.rf_city?.Value,
|
|
Job.rf_st?.Value,
|
|
Job.rf_zip?.Value,
|
|
Job.rf_ctry?.Value,
|
|
Job.rf_ph1?.Value,
|
|
Job.rf_ph1x?.Value,
|
|
Job.rf_ph2?.Value,
|
|
Job.rf_ph2x?.Value,
|
|
Job.rf_fax?.Value,
|
|
Job.rf_faxx?.Value,
|
|
Job.rf_ct_ln?.Value,
|
|
Job.rf_ct_fn?.Value,
|
|
Job.rf_ea?.Value,
|
|
Job.rf_tax_id?.Value,
|
|
Job.rf_lic_no?.Value,
|
|
Job.rf_bar_no?.Value,
|
|
Job.ro_in_date?.Value,
|
|
Job.ro_in_time?.Value,
|
|
Job.ro_auth?.Value,//
|
|
Job.tar_date?.Value,
|
|
Job.tar_time?.Value,
|
|
Job.ro_cmpdate?.Value,
|
|
Job.ro_cmptime?.Value,
|
|
Job.date_out?.Value,
|
|
Job.time_out?.Value,
|
|
Job.rf_estimtr?.Value,
|
|
Job.mktg_type?.Value,
|
|
Job.mktg_src?.Value,
|
|
Job.loc_nm?.Value,
|
|
Job.loc_addr1?.Value,
|
|
Job.loc_addr2?.Value,
|
|
Job.loc_city?.Value,
|
|
Job.loc_st?.Value,
|
|
Job.loc_zip?.Value,
|
|
Job.loc_ctry?.Value,
|
|
Job.loc_ph1?.Value,
|
|
Job.loc_ph1x?.Value,
|
|
Job.loc_ph2?.Value,
|
|
Job.loc_ph2x?.Value,
|
|
Job.loc_fax?.Value,
|
|
Job.loc_faxx?.Value,
|
|
Job.loc_ct_ln?.Value,
|
|
Job.loc_ct_fn?.Value,
|
|
Job.loc_title?.Value,
|
|
Job.loc_ph?.Value,
|
|
Job.loc_phx?.Value,
|
|
Job.loc_ea?.Value
|
|
|
|
); ;
|
|
|
|
writer.Write(fileStream);
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex, "Error when creating AD2 file."); throw ex;
|
|
}
|
|
|
|
}
|
|
public static void GenerateLinFile(dynamic Job, dynamic PartsOrder)
|
|
{
|
|
try
|
|
{
|
|
DBFField[] StandardEmsFields = ReadDbfFields(emsBasePath + @"\EMS.LIN");
|
|
|
|
using (var fileStream = File.Create(TempEmsDir + $@"\{GenerateFileName(Job)}.LIN"))
|
|
{
|
|
using (var writer = new DBFWriter())
|
|
{
|
|
writer.CharEncoding = DbfFileCharEncoding;
|
|
writer.Signature = DbfFileSignature;
|
|
writer.LanguageDriver = DbfFileLanguageDriver;
|
|
|
|
writer.Fields = StandardEmsFields;
|
|
|
|
|
|
|
|
foreach (var partsOrderLine in PartsOrder.parts_order_lines)
|
|
{
|
|
writer.AddRecord(
|
|
partsOrderLine.jobline?.line_no?.Value,
|
|
partsOrderLine.jobline?.line_ind?.Value,
|
|
partsOrderLine.jobline?.line_ref?.Value,
|
|
partsOrderLine.jobline?.tran_code?.Value ?? "1",
|
|
partsOrderLine.jobline?.db_ref?.Value,
|
|
partsOrderLine.jobline?.unq_seq?.Value,
|
|
partsOrderLine.jobline?.who_pays?.Value,
|
|
partsOrderLine.jobline?.line_desc?.Value,
|
|
partsOrderLine.priceChange?.Value == true ? partsOrderLine.part_type?.Value : partsOrderLine.jobline?.part_type?.Value,
|
|
//partsOrderLine.jobline?.part_type?.Value,
|
|
false, //partsOrderLine.jobline?.part_descj?.Value,
|
|
partsOrderLine.jobline?.glass_flag?.Value,
|
|
partsOrderLine.jobline?.oem_partno?.Value,
|
|
partsOrderLine.jobline?.price_inc?.Value,
|
|
partsOrderLine.jobline?.alt_part_i?.Value,
|
|
partsOrderLine.jobline?.tax_part?.Value,
|
|
partsOrderLine.jobline?.db_price?.Value,
|
|
partsOrderLine.priceChange?.Value == true? partsOrderLine.act_price?.Value : partsOrderLine.jobline?.act_price?.Value,
|
|
partsOrderLine.jobline?.price_j?.Value,
|
|
partsOrderLine.jobline?.cert_part?.Value,
|
|
partsOrderLine.jobline?.part_qty?.Value,
|
|
partsOrderLine.jobline?.alt_co_id?.Value,
|
|
partsOrderLine.jobline?.alt_partno?.Value,
|
|
partsOrderLine.jobline?.alt_overrd?.Value,
|
|
partsOrderLine.jobline?.alt_partm?.Value,
|
|
partsOrderLine.jobline?.prt_dsmk_p?.Value,
|
|
partsOrderLine.jobline?.prt_dsmk_m?.Value,
|
|
partsOrderLine.jobline?.mod_lbr_ty?.Value,
|
|
partsOrderLine.jobline?.db_hrs?.Value,
|
|
partsOrderLine.jobline?.mod_lb_hrs?.Value,
|
|
partsOrderLine.jobline?.lbr_inc?.Value,
|
|
partsOrderLine.jobline?.lbr_op?.Value,
|
|
partsOrderLine.jobline?.lbr_hrs_j?.Value,
|
|
partsOrderLine.jobline?.lbr_typ_j?.Value,
|
|
partsOrderLine.jobline?.lbr_op_j?.Value,
|
|
partsOrderLine.jobline?.paint_stg?.Value,
|
|
partsOrderLine.jobline?.paint_tone?.Value,
|
|
partsOrderLine.jobline?.lbr_tax?.Value,
|
|
partsOrderLine.jobline?.lbr_amt?.Value,
|
|
partsOrderLine.jobline?.misc_amt?.Value,
|
|
partsOrderLine.jobline?.misc_sublt?.Value,
|
|
partsOrderLine.jobline?.misc_tax?.Value,
|
|
partsOrderLine.jobline?.bett_type?.Value,
|
|
partsOrderLine.jobline?.bett_pctg?.Value,
|
|
partsOrderLine.jobline?.bett_amt?.Value,
|
|
partsOrderLine.jobline?.bett_tax?.Value
|
|
|
|
|
|
); ;
|
|
}
|
|
|
|
|
|
|
|
writer.Write(fileStream);
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex, "Error when creating LIN file."); throw ex;
|
|
}
|
|
|
|
}
|
|
public static void GenerateEnvFile(dynamic Job)
|
|
{
|
|
try
|
|
{
|
|
DBFField[] StandardEmsFields = ReadDbfFields(emsBasePath + @"\EMS.ENV");
|
|
|
|
using (var fileStream = File.Create(TempEmsDir + $@"\{GenerateFileName(Job)}.ENV"))
|
|
{
|
|
using (var writer = new DBFWriter())
|
|
{
|
|
writer.CharEncoding = DbfFileCharEncoding;
|
|
writer.Signature = DbfFileSignature;
|
|
writer.LanguageDriver = DbfFileLanguageDriver;
|
|
|
|
writer.Fields = StandardEmsFields;
|
|
|
|
writer.AddRecord(
|
|
"M",//EST_SYSTEM,
|
|
"UM7.1",//"21.3",//SW_VERSION,
|
|
"MAY_17_V0607",//"OCT_21_V",//DB_VERSION,
|
|
DateTime.Now,//DB_DATE
|
|
"",//UNQFILE_ID,
|
|
Job.ro_number?.Value,//RO_ID,
|
|
Job.ciecaid?.Value,//ESTFILE_ID,
|
|
GetSupplementNumber(Job),//SUPP_NO,
|
|
"CAN", //EST_CTRY,
|
|
";0000000;0;0000000;0;0000000;",//TOP_SECRET,
|
|
"",//H_TRANS_ID,
|
|
"",//H_CTRL_NO,
|
|
"S",//TRANS_TYPE,
|
|
false,//STATUS,
|
|
DateTime.Now,//CREATE_DT,
|
|
DateTime.Now.ToString("HHmmss"),//CREATE_TM,
|
|
DateTime.Now,//TRANSMT_DT,
|
|
DateTime.Now.ToString("HHmmss"),//TRANSMT_TM,
|
|
true,//INCL_ADMIN,
|
|
true,//INCL_VEH,
|
|
true,//INCL_EST,
|
|
true,//INCL_PROFL,
|
|
true,//INCL_TOTAL,
|
|
false,//INCL_VENDR,
|
|
"2.0"//EMS_VER,
|
|
); ;
|
|
|
|
writer.Write(fileStream);
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex, "Error when creating ENV file."); throw ex;
|
|
}
|
|
|
|
}
|
|
public static void GenerateVehFile(dynamic Job)
|
|
{
|
|
try
|
|
{
|
|
DBFField[] StandardEmsFields = ReadDbfFields(emsBasePath + @"\EMSV.VEH");
|
|
|
|
using (var fileStream = File.Create(TempEmsDir + $@"\{GenerateFileName(Job)}.VEH"))
|
|
{
|
|
using (var writer = new DBFWriter())
|
|
{
|
|
writer.CharEncoding = DbfFileCharEncoding;
|
|
writer.Signature = DbfFileSignature;
|
|
writer.LanguageDriver = DbfFileLanguageDriver;
|
|
|
|
writer.Fields = StandardEmsFields;
|
|
|
|
|
|
writer.Fields[2] = new DBFField("DMG_MEMO", NativeDbType.Char, 20);
|
|
writer.Fields[20] = new DBFField("V_OPTIONS", NativeDbType.Char, 20);
|
|
writer.Fields[27] = new DBFField("V_MEMO", NativeDbType.Char, 20);
|
|
|
|
writer.AddRecord(
|
|
Job.area_of_impact?.impact_1?.Value,//IMPACT_1,
|
|
Job.area_of_impact?.impact_2?.Value,//IMPACT_2,
|
|
null,//DMG_MEMO,
|
|
"",//DB_V_CODE,
|
|
Job.plate_no?.Value,//PLATE_NO,
|
|
Job.plate_st?.Value,//PLATE_ST,
|
|
Job.v_vin?.Value,//V_VIN,
|
|
"",//V_COND,
|
|
"",//V_PROD_DT,
|
|
Job.v_model_yr?.Value,//V_MODEL_YR,
|
|
"",//V_MAKECODE,
|
|
Job.v_make_desc?.Value,//V_MAKEDESC,
|
|
Job.v_model_desc?.Value,//V_MODEL,
|
|
Job.vehicle?.v_type?.Value,//V_TYPE,
|
|
Job.vehicle?.v_bstyle?.Value,//V_BSTYLE,
|
|
Job.vehicle?.v_trimcode?.Value,//V_TRIMCODE,
|
|
Job.vehicle?.trim_color?.Value,//TRIM_COLOR,
|
|
Job.vehicle?.v_mldgcode?.Value,//V_MLDGCODE,
|
|
Job.vehicle?.v_engine?.Value,//V_ENGINE,
|
|
Job.vehicle?.v_mileage?.Value,//V_MILEAGE,
|
|
Job.vehicle?.v_options?.Value,//V_OPTIONS,
|
|
Job.vehicle?.v_color?.Value,//V_COLOR,
|
|
Job.vehicle?.v_tone?.Value,//V_TONE,
|
|
Job.vehicle?.v_stage?.Value,//V_STAGE,
|
|
Job.vehicle?.v_paint_codes?.paint_cd1?.Value,//PAINT_CD1,
|
|
Job.vehicle?.v_paint_codes?.paint_cd2?.Value,//PAINT_CD2,
|
|
Job.vehicle?.v_paint_codes?.paint_cd3?.Value,//PAINT_CD3,
|
|
Job.vehicle?.v_memo?.Value//V_MEMO,
|
|
); ;
|
|
|
|
writer.Write(fileStream);
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex, "Error when creating Veh file."); throw ex;
|
|
}
|
|
|
|
}
|
|
public static void GeneratePfhFile(dynamic Job)
|
|
{
|
|
try
|
|
{
|
|
DBFField[] StandardEmsFields = ReadDbfFields(emsBasePath + @"\EMS.PFH");
|
|
|
|
using (var fileStream = File.Create(TempEmsDir + $@"\{GenerateFileName(Job)}.PFH"))
|
|
{
|
|
using (var writer = new DBFWriter())
|
|
{
|
|
writer.CharEncoding = DbfFileCharEncoding;
|
|
writer.Signature = DbfFileSignature;
|
|
writer.LanguageDriver = DbfFileLanguageDriver;
|
|
|
|
writer.Fields = StandardEmsFields;
|
|
|
|
writer.AddRecord(
|
|
"REPAIR FACILITY",//Job.id_pro_nam?.Value,
|
|
(Job.tax_prethr?.Value ?? 0) * 100,
|
|
(Job.tax_thramt?.Value ?? 0) * 100,
|
|
(Job.tax_pstthr?.Value ?? 0) * 100,
|
|
true,//(Job.tax_tow_in?.Value ?? 0) * 100,
|
|
(Job.tax_tow_rt?.Value ?? 0) * 100,
|
|
true,//(Job.tax_str_in?.Value ?? 0) * 100,
|
|
(Job.tax_str_rt?.Value ?? 0) * 100,
|
|
true,//(Job.tax_sub_in?.Value ?? 0) * 100,
|
|
(Job.tax_sub_rt?.Value ?? 0) * 100,
|
|
true,//(Job.tax_btr_in?.Value ?? 0) * 100,
|
|
(Job.bodyshop?.bill_tax_rates?.state_tax_rate?.Value ?? 0) * 100,
|
|
(Job.bodyshop?.bill_tax_rates?.federal_tax_rate?.Value ?? 0) * 100,
|
|
true,//(Job.tax_gst_in?.Value ?? 0) * 100,
|
|
(Job.adj_g_disc?.Value ?? 0) * 100,
|
|
(Job.adj_towdis?.Value ?? 0) * 100,
|
|
(Job.adj_strdis?.Value ?? 0) * 100,
|
|
null, //(Job.adj_btr_in?.Value ?? 0) * 100,
|
|
(Job.tax_predis?.Value ?? 0) * 100
|
|
); ;
|
|
|
|
writer.Write(fileStream);
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex, "Error when creating PFH file."); throw ex;
|
|
}
|
|
|
|
}
|
|
public static void GeneratePflFile(dynamic Job)
|
|
{
|
|
try
|
|
{
|
|
DBFField[] StandardEmsFields = ReadDbfFields(emsBasePath + @"\EMS.PFL");
|
|
|
|
using (var fileStream = File.Create(TempEmsDir + $@"\{GenerateFileName(Job)}.PFL"))
|
|
{
|
|
using (var writer = new DBFWriter())
|
|
{
|
|
writer.CharEncoding = DbfFileCharEncoding;
|
|
writer.Signature = DbfFileSignature;
|
|
writer.LanguageDriver = DbfFileLanguageDriver;
|
|
|
|
writer.Fields = StandardEmsFields;
|
|
|
|
writer.AddRecord(
|
|
"LAB", //LBR_TYPE
|
|
"LABOR-BODY", //LBR_DESC
|
|
Job.rate_lab?.Value, //LBR_RATE
|
|
true, //LBR_TAX_IN
|
|
(Job.bodyshop?.bill_tax_rates?.state_tax_rate?.Value ?? 0), //LBR_TAXP
|
|
0, //LBR_ADJP
|
|
Job.lbr_tx_ty1?.Value, //LBR_TX_TY1
|
|
Job.lbr_tx_in1?.Value, //LBR_TX_IN1
|
|
Job.lbr_tx_ty2?.Value, //LBR_TX_TY2
|
|
Job.lbr_tx_in2?.Value, //LBR_TX_IN2
|
|
Job.lbr_tx_ty3?.Value, //LBR_TX_TY3
|
|
Job.lbr_tx_in3?.Value, //LBR_TX_IN3
|
|
Job.lbr_tx_ty4?.Value, //LBR_TX_TY4
|
|
Job.lbr_tx_in4?.Value, //LBR_TX_IN4
|
|
Job.lbr_tx_ty5?.Value, //LBR_TX_TY5
|
|
Job.lbr_tx_in5?.Value //LBR_TX_IN5
|
|
); ;
|
|
|
|
writer.AddRecord(
|
|
"LAS", //LBR_TYPE
|
|
"LABOR-BODY_S", //LBR_DESC
|
|
Job.rate_las?.Value, //LBR_RATE
|
|
true, //LBR_TAX_IN
|
|
(Job.bodyshop?.bill_tax_rates?.state_tax_rate?.Value ?? 0), //LBR_TAXP
|
|
0, //LBR_ADJP
|
|
Job.lbr_tx_ty1?.Value, //LBR_TX_TY1
|
|
Job.lbr_tx_in1?.Value, //LBR_TX_IN1
|
|
Job.lbr_tx_ty2?.Value, //LBR_TX_TY2
|
|
Job.lbr_tx_in2?.Value, //LBR_TX_IN2
|
|
Job.lbr_tx_ty3?.Value, //LBR_TX_TY3
|
|
Job.lbr_tx_in3?.Value, //LBR_TX_IN3
|
|
Job.lbr_tx_ty4?.Value, //LBR_TX_TY4
|
|
Job.lbr_tx_in4?.Value, //LBR_TX_IN4
|
|
Job.lbr_tx_ty5?.Value, //LBR_TX_TY5
|
|
Job.lbr_tx_in5?.Value //LBR_TX_IN5
|
|
); ;
|
|
writer.AddRecord(
|
|
"LAR", //LBR_TYPE
|
|
"LABOR-REFINISH", //LBR_DESC
|
|
Job.rate_lar?.Value, //LBR_RATE
|
|
true, //LBR_TAX_IN
|
|
(Job.bodyshop?.bill_tax_rates?.state_tax_rate?.Value ?? 0), //LBR_TAXP
|
|
0, //LBR_ADJP
|
|
Job.lbr_tx_ty1?.Value, //LBR_TX_TY1
|
|
Job.lbr_tx_in1?.Value, //LBR_TX_IN1
|
|
Job.lbr_tx_ty2?.Value, //LBR_TX_TY2
|
|
Job.lbr_tx_in2?.Value, //LBR_TX_IN2
|
|
Job.lbr_tx_ty3?.Value, //LBR_TX_TY3
|
|
Job.lbr_tx_in3?.Value, //LBR_TX_IN3
|
|
Job.lbr_tx_ty4?.Value, //LBR_TX_TY4
|
|
Job.lbr_tx_in4?.Value, //LBR_TX_IN4
|
|
Job.lbr_tx_ty5?.Value, //LBR_TX_TY5
|
|
Job.lbr_tx_in5?.Value //LBR_TX_IN5
|
|
); ;
|
|
|
|
writer.AddRecord(
|
|
"LAG", //LBR_TYPE
|
|
"LABOR-GLASS", //LBR_DESC
|
|
Job.rate_lag?.Value, //LBR_RATE
|
|
true, //LBR_TAX_IN
|
|
(Job.bodyshop?.bill_tax_rates?.state_tax_rate?.Value ?? 0), //LBR_TAXP
|
|
0, //LBR_ADJP
|
|
Job.lbr_tx_ty1?.Value, //LBR_TX_TY1
|
|
Job.lbr_tx_in1?.Value, //LBR_TX_IN1
|
|
Job.lbr_tx_ty2?.Value, //LBR_TX_TY2
|
|
Job.lbr_tx_in2?.Value, //LBR_TX_IN2
|
|
Job.lbr_tx_ty3?.Value, //LBR_TX_TY3
|
|
Job.lbr_tx_in3?.Value, //LBR_TX_IN3
|
|
Job.lbr_tx_ty4?.Value, //LBR_TX_TY4
|
|
Job.lbr_tx_in4?.Value, //LBR_TX_IN4
|
|
Job.lbr_tx_ty5?.Value, //LBR_TX_TY5
|
|
Job.lbr_tx_in5?.Value //LBR_TX_IN5
|
|
); ;
|
|
|
|
writer.AddRecord(
|
|
"LAF", //LBR_TYPE
|
|
"LABOR-FRAME", //LBR_DESC
|
|
Job.rate_laf?.Value, //LBR_RATE
|
|
true, //LBR_TAX_IN
|
|
(Job.bodyshop?.bill_tax_rates?.state_tax_rate?.Value ?? 0), //LBR_TAXP
|
|
0, //LBR_ADJP
|
|
Job.lbr_tx_ty1?.Value, //LBR_TX_TY1
|
|
Job.lbr_tx_in1?.Value, //LBR_TX_IN1
|
|
Job.lbr_tx_ty2?.Value, //LBR_TX_TY2
|
|
Job.lbr_tx_in2?.Value, //LBR_TX_IN2
|
|
Job.lbr_tx_ty3?.Value, //LBR_TX_TY3
|
|
Job.lbr_tx_in3?.Value, //LBR_TX_IN3
|
|
Job.lbr_tx_ty4?.Value, //LBR_TX_TY4
|
|
Job.lbr_tx_in4?.Value, //LBR_TX_IN4
|
|
Job.lbr_tx_ty5?.Value, //LBR_TX_TY5
|
|
Job.lbr_tx_in5?.Value //LBR_TX_IN5
|
|
); ;
|
|
|
|
writer.AddRecord(
|
|
"LAM", //LBR_TYPE
|
|
"LABOR-MECHANICAL", //LBR_DESC
|
|
Job.rate_lam?.Value, //LBR_RATE
|
|
true, //LBR_TAX_IN
|
|
(Job.bodyshop?.bill_tax_rates?.state_tax_rate?.Value ?? 0), //LBR_TAXP
|
|
0, //LBR_ADJP
|
|
Job.lbr_tx_ty1?.Value, //LBR_TX_TY1
|
|
Job.lbr_tx_in1?.Value, //LBR_TX_IN1
|
|
Job.lbr_tx_ty2?.Value, //LBR_TX_TY2
|
|
Job.lbr_tx_in2?.Value, //LBR_TX_IN2
|
|
Job.lbr_tx_ty3?.Value, //LBR_TX_TY3
|
|
Job.lbr_tx_in3?.Value, //LBR_TX_IN3
|
|
Job.lbr_tx_ty4?.Value, //LBR_TX_TY4
|
|
Job.lbr_tx_in4?.Value, //LBR_TX_IN4
|
|
Job.lbr_tx_ty5?.Value, //LBR_TX_TY5
|
|
Job.lbr_tx_in5?.Value //LBR_TX_IN5
|
|
); ;
|
|
|
|
writer.AddRecord(
|
|
"LAU", //LBR_TYPE
|
|
"LABOR-PDR", //LBR_DESC
|
|
Job.rate_lau?.Value, //LBR_RATE
|
|
true, //LBR_TAX_IN
|
|
(Job.bodyshop?.bill_tax_rates?.state_tax_rate?.Value ?? 0), //LBR_TAXP
|
|
0, //LBR_ADJP
|
|
Job.lbr_tx_ty1?.Value, //LBR_TX_TY1
|
|
Job.lbr_tx_in1?.Value, //LBR_TX_IN1
|
|
Job.lbr_tx_ty2?.Value, //LBR_TX_TY2
|
|
Job.lbr_tx_in2?.Value, //LBR_TX_IN2
|
|
Job.lbr_tx_ty3?.Value, //LBR_TX_TY3
|
|
Job.lbr_tx_in3?.Value, //LBR_TX_IN3
|
|
Job.lbr_tx_ty4?.Value, //LBR_TX_TY4
|
|
Job.lbr_tx_in4?.Value, //LBR_TX_IN4
|
|
Job.lbr_tx_ty5?.Value, //LBR_TX_TY5
|
|
Job.lbr_tx_in5?.Value //LBR_TX_IN5
|
|
); ;
|
|
|
|
writer.AddRecord(
|
|
"LA3", //LBR_TYPE
|
|
"LABOR-ALUMINUM", //LBR_DESC
|
|
Job.rate_la3?.Value, //LBR_RATE
|
|
true, //LBR_TAX_IN
|
|
(Job.bodyshop?.bill_tax_rates?.state_tax_rate?.Value ?? 0), //LBR_TAXP
|
|
0, //LBR_ADJP
|
|
Job.lbr_tx_ty1?.Value, //LBR_TX_TY1
|
|
Job.lbr_tx_in1?.Value, //LBR_TX_IN1
|
|
Job.lbr_tx_ty2?.Value, //LBR_TX_TY2
|
|
Job.lbr_tx_in2?.Value, //LBR_TX_IN2
|
|
Job.lbr_tx_ty3?.Value, //LBR_TX_TY3
|
|
Job.lbr_tx_in3?.Value, //LBR_TX_IN3
|
|
Job.lbr_tx_ty4?.Value, //LBR_TX_TY4
|
|
Job.lbr_tx_in4?.Value, //LBR_TX_IN4
|
|
Job.lbr_tx_ty5?.Value, //LBR_TX_TY5
|
|
Job.lbr_tx_in5?.Value //LBR_TX_IN5
|
|
); ;
|
|
|
|
|
|
writer.AddRecord(
|
|
"LA4", //LBR_TYPE
|
|
"LABOR-CARBON FIBER", //LBR_DESC
|
|
Job.rate_la4?.Value, //LBR_RATE
|
|
true, //LBR_TAX_IN
|
|
(Job.bodyshop?.bill_tax_rates?.state_tax_rate?.Value ?? 0), //LBR_TAXP
|
|
0, //LBR_ADJP
|
|
Job.lbr_tx_ty1?.Value, //LBR_TX_TY1
|
|
Job.lbr_tx_in1?.Value, //LBR_TX_IN1
|
|
Job.lbr_tx_ty2?.Value, //LBR_TX_TY2
|
|
Job.lbr_tx_in2?.Value, //LBR_TX_IN2
|
|
Job.lbr_tx_ty3?.Value, //LBR_TX_TY3
|
|
Job.lbr_tx_in3?.Value, //LBR_TX_IN3
|
|
Job.lbr_tx_ty4?.Value, //LBR_TX_TY4
|
|
Job.lbr_tx_in4?.Value, //LBR_TX_IN4
|
|
Job.lbr_tx_ty5?.Value, //LBR_TX_TY5
|
|
Job.lbr_tx_in5?.Value //LBR_TX_IN5
|
|
); ;
|
|
|
|
writer.AddRecord(
|
|
"LA1", //LBR_TYPE
|
|
"LABOR-USER DEFINED 1", //LBR_DESC
|
|
Job.rate_la1?.Value, //LBR_RATE
|
|
true, //LBR_TAX_IN
|
|
(Job.bodyshop?.bill_tax_rates?.state_tax_rate?.Value ?? 0), //LBR_TAXP
|
|
0, //LBR_ADJP
|
|
Job.lbr_tx_ty1?.Value, //LBR_TX_TY1
|
|
Job.lbr_tx_in1?.Value, //LBR_TX_IN1
|
|
Job.lbr_tx_ty2?.Value, //LBR_TX_TY2
|
|
Job.lbr_tx_in2?.Value, //LBR_TX_IN2
|
|
Job.lbr_tx_ty3?.Value, //LBR_TX_TY3
|
|
Job.lbr_tx_in3?.Value, //LBR_TX_IN3
|
|
Job.lbr_tx_ty4?.Value, //LBR_TX_TY4
|
|
Job.lbr_tx_in4?.Value, //LBR_TX_IN4
|
|
Job.lbr_tx_ty5?.Value, //LBR_TX_TY5
|
|
Job.lbr_tx_in5?.Value //LBR_TX_IN5
|
|
); ;
|
|
|
|
writer.AddRecord(
|
|
"LA2", //LBR_TYPE
|
|
"LABOR-USER DEFINED 2", //LBR_DESC
|
|
Job.rate_la2?.Value, //LBR_RATE
|
|
true, //LBR_TAX_IN
|
|
(Job.bodyshop?.bill_tax_rates?.state_tax_rate?.Value ?? 0), //LBR_TAXP
|
|
0, //LBR_ADJP
|
|
Job.lbr_tx_ty1?.Value, //LBR_TX_TY1
|
|
Job.lbr_tx_in1?.Value, //LBR_TX_IN1
|
|
Job.lbr_tx_ty2?.Value, //LBR_TX_TY2
|
|
Job.lbr_tx_in2?.Value, //LBR_TX_IN2
|
|
Job.lbr_tx_ty3?.Value, //LBR_TX_TY3
|
|
Job.lbr_tx_in3?.Value, //LBR_TX_IN3
|
|
Job.lbr_tx_ty4?.Value, //LBR_TX_TY4
|
|
Job.lbr_tx_in4?.Value, //LBR_TX_IN4
|
|
Job.lbr_tx_ty5?.Value, //LBR_TX_TY5
|
|
Job.lbr_tx_in5?.Value //LBR_TX_IN5
|
|
); ;
|
|
writer.Write(fileStream);
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex, "Error when creating PFH file."); throw ex;
|
|
}
|
|
|
|
}
|
|
public static void GeneratePfmFile(dynamic Job)
|
|
{
|
|
try
|
|
{
|
|
DBFField[] StandardEmsFields = ReadDbfFields(emsBasePath + @"\EMS.PFM");
|
|
|
|
using (var fileStream = File.Create(TempEmsDir + $@"\{GenerateFileName(Job)}.PFM"))
|
|
{
|
|
using (var writer = new DBFWriter())
|
|
{
|
|
writer.CharEncoding = DbfFileCharEncoding;
|
|
writer.Signature = DbfFileSignature;
|
|
writer.LanguageDriver = DbfFileLanguageDriver;
|
|
|
|
writer.Fields = StandardEmsFields;
|
|
|
|
writer.AddRecord(
|
|
"MAPA", //MATL_TYPE
|
|
Job.CAL_CODE?.Value, //CAL_CODE
|
|
Job.CAL_DESC?.Value, //CAL_DESC
|
|
0, //CAL_MAXDLR
|
|
0, //CAL_PRIP
|
|
0, //CAL_SECP
|
|
0, //MAT_CALP
|
|
0, //CAL_PRETHR
|
|
0, //CAL_PSTTHR
|
|
0, //CAL_THRAMT
|
|
0, //CAL_LBRMIN
|
|
0, //CAL_LBRMAX
|
|
Job.rate_mapa?.Value, //CAL_LBRRTE
|
|
Job.CAL_OPCODE?.Value, //CAL_OPCODE
|
|
true, //TAX_IND
|
|
Job.bodyshop?.bill_tax_rates?.state_tax_rate.Value ?? 0, //MAT_TAXP
|
|
Job.MAT_ADJP?.Value ?? 0, //MAT_ADJP
|
|
Job.MAT_TX_TY1?.Value, //MAT_TX_TY1
|
|
Job.MAT_TX_IN1?.Value, //MAT_TX_IN1
|
|
Job.MAT_TX_TY2?.Value, //MAT_TX_TY2
|
|
Job.MAT_TX_IN2?.Value, //MAT_TX_IN2
|
|
Job.MAT_TX_TY3?.Value, //MAT_TX_TY3
|
|
Job.MAT_TX_IN3?.Value, //MAT_TX_IN3
|
|
Job.MAT_TX_TY4?.Value, //MAT_TX_TY4
|
|
Job.MAT_TX_IN4?.Value, //MAT_TX_IN4
|
|
Job.MAT_TX_TY5?.Value, //MAT_TX_TY5
|
|
Job.MAT_TX_IN5?.Value //MAT_TX_IN5
|
|
|
|
); ;
|
|
|
|
writer.AddRecord(
|
|
"MASH", //MATL_TYPE
|
|
Job.CAL_CODE?.Value, //CAL_CODE
|
|
Job.CAL_DESC?.Value, //CAL_DESC
|
|
0, //CAL_MAXDLR
|
|
0, //CAL_PRIP
|
|
0, //CAL_SECP
|
|
0, //MAT_CALP
|
|
0, //CAL_PRETHR
|
|
0, //CAL_PSTTHR
|
|
0, //CAL_THRAMT
|
|
0, //CAL_LBRMIN
|
|
0, //CAL_LBRMAX
|
|
Job.rate_mash?.Value, //CAL_LBRRTE
|
|
Job.CAL_OPCODE?.Value, //CAL_OPCODE
|
|
true, //TAX_IND
|
|
Job.MAT_TAXP?.Value, //MAT_TAXP
|
|
Job.MAT_ADJP?.Value, //MAT_ADJP
|
|
Job.MAT_TX_TY1?.Value, //MAT_TX_TY1
|
|
Job.MAT_TX_IN1?.Value, //MAT_TX_IN1
|
|
Job.MAT_TX_TY2?.Value, //MAT_TX_TY2
|
|
Job.MAT_TX_IN2?.Value, //MAT_TX_IN2
|
|
Job.MAT_TX_TY3?.Value, //MAT_TX_TY3
|
|
Job.MAT_TX_IN3?.Value, //MAT_TX_IN3
|
|
Job.MAT_TX_TY4?.Value, //MAT_TX_TY4
|
|
Job.MAT_TX_IN4?.Value, //MAT_TX_IN4
|
|
Job.MAT_TX_TY5?.Value, //MAT_TX_TY5
|
|
Job.MAT_TX_IN5?.Value //MAT_TX_IN5
|
|
|
|
); ;
|
|
writer.Write(fileStream);
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex, "Error when creating PFM file."); throw ex;
|
|
}
|
|
|
|
}
|
|
public static void GeneratePfoFile(dynamic Job)
|
|
{
|
|
try
|
|
{
|
|
DBFField[] StandardEmsFields = ReadDbfFields(emsBasePath + @"\EMS.PFO");
|
|
|
|
using (var fileStream = File.Create(TempEmsDir + $@"\{GenerateFileName(Job)}.PFO"))
|
|
{
|
|
using (var writer = new DBFWriter())
|
|
{
|
|
writer.CharEncoding = DbfFileCharEncoding;
|
|
writer.Signature = DbfFileSignature;
|
|
writer.LanguageDriver = DbfFileLanguageDriver;
|
|
|
|
writer.Fields = StandardEmsFields;
|
|
|
|
|
|
writer.Write(fileStream);
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex, "Error when creating PFO file."); throw ex;
|
|
}
|
|
|
|
}
|
|
public static void GeneratePfpFile(dynamic Job)
|
|
{
|
|
try
|
|
{
|
|
DBFField[] StandardEmsFields = ReadDbfFields(emsBasePath + @"\EMS.PFP");
|
|
|
|
using (var fileStream = File.Create(TempEmsDir + $@"\{GenerateFileName(Job)}.PFP"))
|
|
{
|
|
using (var writer = new DBFWriter())
|
|
{
|
|
writer.CharEncoding = DbfFileCharEncoding;
|
|
writer.Signature = DbfFileSignature;
|
|
writer.LanguageDriver = DbfFileLanguageDriver;
|
|
|
|
writer.Fields = StandardEmsFields;
|
|
|
|
|
|
writer.AddRecord(
|
|
"PAN", //PRT_TYPE
|
|
Job.parts_tax_rates?.PAN?.prt_tax_in?.Value, //PRT_TAX_IN
|
|
Job.parts_tax_rates?.PAN?.prt_tax_rt?.Value, //PRT_TAX_RT
|
|
Job.parts_tax_rates?.PAN?.prt_mkupp?.Value, //PRT_MKUPP
|
|
Job.parts_tax_rates?.PAN?.prt_mktyp?.Value, //PRT_MKTYP
|
|
Job.parts_tax_rates?.PAN?.prt_discp?.Value, //PRT_DISCP
|
|
Job.parts_tax_rates?.PAN?.prt_tx_ty1?.Value, //PRT_TX_TY1
|
|
Job.parts_tax_rates?.PAN?.prt_tx_in1?.Value, //PRT_TX_IN1
|
|
Job.parts_tax_rates?.PAN?.prt_tx_ty2?.Value, //PRT_TX_TY2
|
|
Job.parts_tax_rates?.PAN?.prt_tx_in2?.Value, //PRT_TX_IN2
|
|
Job.parts_tax_rates?.PAN?.prt_tx_ty3?.Value, //PRT_TX_TY3
|
|
Job.parts_tax_rates?.PAN?.prt_tx_in3?.Value, //PRT_TX_IN3
|
|
Job.parts_tax_rates?.PAN?.prt_tx_ty4?.Value, //PRT_TX_TY4
|
|
Job.parts_tax_rates?.PAN?.prt_tx_in4?.Value, //PRT_TX_IN4
|
|
Job.parts_tax_rates?.PAN?.prt_tx_ty5?.Value, //PRT_TX_TY5
|
|
Job.parts_tax_rates?.PAN?.prt_tx_in5?.Value //PRT_TX_IN5
|
|
); ;
|
|
|
|
writer.AddRecord(
|
|
"PAL", //PRT_TYPE
|
|
Job.parts_tax_rates?.PAL?.prt_tax_in?.Value, //PRT_TAX_IN
|
|
Job.parts_tax_rates?.PAL?.prt_tax_rt?.Value, //PRT_TAX_RT
|
|
Job.parts_tax_rates?.PAL?.prt_mkupp?.Value, //PRT_MKUPP
|
|
Job.parts_tax_rates?.PAL?.prt_mktyp?.Value, //PRT_MKTYP
|
|
Job.parts_tax_rates?.PAL?.prt_discp?.Value, //PRT_DISCP
|
|
Job.parts_tax_rates?.PAL?.prt_tx_ty1?.Value, //PRT_TX_TY1
|
|
Job.parts_tax_rates?.PAL?.prt_tx_in1?.Value, //PRT_TX_IN1
|
|
Job.parts_tax_rates?.PAL?.prt_tx_ty2?.Value, //PRT_TX_TY2
|
|
Job.parts_tax_rates?.PAL?.prt_tx_in2?.Value, //PRT_TX_IN2
|
|
Job.parts_tax_rates?.PAL?.prt_tx_ty3?.Value, //PRT_TX_TY3
|
|
Job.parts_tax_rates?.PAL?.prt_tx_in3?.Value, //PRT_TX_IN3
|
|
Job.parts_tax_rates?.PAL?.prt_tx_ty4?.Value, //PRT_TX_TY4
|
|
Job.parts_tax_rates?.PAL?.prt_tx_in4?.Value, //PRT_TX_IN4
|
|
Job.parts_tax_rates?.PAL?.prt_tx_ty5?.Value, //PRT_TX_TY5
|
|
Job.parts_tax_rates?.PAL?.prt_tx_in5?.Value //PRT_TX_IN5
|
|
); ;
|
|
|
|
writer.AddRecord(
|
|
"PAR", //PRT_TYPE
|
|
Job.parts_tax_rates?.PAR?.prt_tax_in?.Value, //PRT_TAX_IN
|
|
Job.parts_tax_rates?.PAR?.prt_tax_rt?.Value, //PRT_TAX_RT
|
|
Job.parts_tax_rates?.PAR?.prt_mkupp?.Value, //PRT_MKUPP
|
|
Job.parts_tax_rates?.PAR?.prt_mktyp?.Value, //PRT_MKTYP
|
|
Job.parts_tax_rates?.PAR?.prt_discp?.Value, //PRT_DISCP
|
|
Job.parts_tax_rates?.PAR?.prt_tx_ty1?.Value, //PRT_TX_TY1
|
|
Job.parts_tax_rates?.PAR?.prt_tx_in1?.Value, //PRT_TX_IN1
|
|
Job.parts_tax_rates?.PAR?.prt_tx_ty2?.Value, //PRT_TX_TY2
|
|
Job.parts_tax_rates?.PAR?.prt_tx_in2?.Value, //PRT_TX_IN2
|
|
Job.parts_tax_rates?.PAR?.prt_tx_ty3?.Value, //PRT_TX_TY3
|
|
Job.parts_tax_rates?.PAR?.prt_tx_in3?.Value, //PRT_TX_IN3
|
|
Job.parts_tax_rates?.PAR?.prt_tx_ty4?.Value, //PRT_TX_TY4
|
|
Job.parts_tax_rates?.PAR?.prt_tx_in4?.Value, //PRT_TX_IN4
|
|
Job.parts_tax_rates?.PAR?.prt_tx_ty5?.Value, //PRT_TX_TY5
|
|
Job.parts_tax_rates?.PAR?.prt_tx_in5?.Value //PRT_TX_IN5
|
|
); ;
|
|
|
|
writer.AddRecord(
|
|
"PAC", //PRT_TYPE
|
|
Job.parts_tax_rates?.PAC?.prt_tax_in?.Value, //PRT_TAX_IN
|
|
Job.parts_tax_rates?.PAC?.prt_tax_rt?.Value, //PRT_TAX_RT
|
|
Job.parts_tax_rates?.PAC?.prt_mkupp?.Value, //PRT_MKUPP
|
|
Job.parts_tax_rates?.PAC?.prt_mktyp?.Value, //PRT_MKTYP
|
|
Job.parts_tax_rates?.PAC?.prt_discp?.Value, //PRT_DISCP
|
|
Job.parts_tax_rates?.PAC?.prt_tx_ty1?.Value, //PRT_TX_TY1
|
|
Job.parts_tax_rates?.PAC?.prt_tx_in1?.Value, //PRT_TX_IN1
|
|
Job.parts_tax_rates?.PAC?.prt_tx_ty2?.Value, //PRT_TX_TY2
|
|
Job.parts_tax_rates?.PAC?.prt_tx_in2?.Value, //PRT_TX_IN2
|
|
Job.parts_tax_rates?.PAC?.prt_tx_ty3?.Value, //PRT_TX_TY3
|
|
Job.parts_tax_rates?.PAC?.prt_tx_in3?.Value, //PRT_TX_IN3
|
|
Job.parts_tax_rates?.PAC?.prt_tx_ty4?.Value, //PRT_TX_TY4
|
|
Job.parts_tax_rates?.PAC?.prt_tx_in4?.Value, //PRT_TX_IN4
|
|
Job.parts_tax_rates?.PAC?.prt_tx_ty5?.Value, //PRT_TX_TY5
|
|
Job.parts_tax_rates?.PAC?.prt_tx_in5?.Value //PRT_TX_IN5
|
|
); ;
|
|
|
|
writer.AddRecord(
|
|
"PAM", //PRT_TYPE
|
|
Job.parts_tax_rates?.PAM?.prt_tax_in?.Value, //PRT_TAX_IN
|
|
Job.parts_tax_rates?.PAM?.prt_tax_rt?.Value, //PRT_TAX_RT
|
|
Job.parts_tax_rates?.PAM?.prt_mkupp?.Value, //PRT_MKUPP
|
|
Job.parts_tax_rates?.PAM?.prt_mktyp?.Value, //PRT_MKTYP
|
|
Job.parts_tax_rates?.PAM?.prt_discp?.Value, //PRT_DISCP
|
|
Job.parts_tax_rates?.PAM?.prt_tx_ty1?.Value, //PRT_TX_TY1
|
|
Job.parts_tax_rates?.PAM?.prt_tx_in1?.Value, //PRT_TX_IN1
|
|
Job.parts_tax_rates?.PAM?.prt_tx_ty2?.Value, //PRT_TX_TY2
|
|
Job.parts_tax_rates?.PAM?.prt_tx_in2?.Value, //PRT_TX_IN2
|
|
Job.parts_tax_rates?.PAM?.prt_tx_ty3?.Value, //PRT_TX_TY3
|
|
Job.parts_tax_rates?.PAM?.prt_tx_in3?.Value, //PRT_TX_IN3
|
|
Job.parts_tax_rates?.PAM?.prt_tx_ty4?.Value, //PRT_TX_TY4
|
|
Job.parts_tax_rates?.PAM?.prt_tx_in4?.Value, //PRT_TX_IN4
|
|
Job.parts_tax_rates?.PAM?.prt_tx_ty5?.Value, //PRT_TX_TY5
|
|
Job.parts_tax_rates?.PAM?.prt_tx_in5?.Value //PRT_TX_IN5
|
|
); ;
|
|
|
|
writer.AddRecord(
|
|
"PAS", //PRT_TYPE
|
|
Job.parts_tax_rates?.PAS?.prt_tax_in?.Value, //PRT_TAX_IN
|
|
Job.parts_tax_rates?.PAS?.prt_tax_rt?.Value, //PRT_TAX_RT
|
|
Job.parts_tax_rates?.PAS?.prt_mkupp?.Value, //PRT_MKUPP
|
|
Job.parts_tax_rates?.PAS?.prt_mktyp?.Value, //PRT_MKTYP
|
|
Job.parts_tax_rates?.PAS?.prt_discp?.Value, //PRT_DISCP
|
|
Job.parts_tax_rates?.PAS?.prt_tx_ty1?.Value, //PRT_TX_TY1
|
|
Job.parts_tax_rates?.PAS?.prt_tx_in1?.Value, //PRT_TX_IN1
|
|
Job.parts_tax_rates?.PAS?.prt_tx_ty2?.Value, //PRT_TX_TY2
|
|
Job.parts_tax_rates?.PAS?.prt_tx_in2?.Value, //PRT_TX_IN2
|
|
Job.parts_tax_rates?.PAS?.prt_tx_ty3?.Value, //PRT_TX_TY3
|
|
Job.parts_tax_rates?.PAS?.prt_tx_in3?.Value, //PRT_TX_IN3
|
|
Job.parts_tax_rates?.PAS?.prt_tx_ty4?.Value, //PRT_TX_TY4
|
|
Job.parts_tax_rates?.PAS?.prt_tx_in4?.Value, //PRT_TX_IN4
|
|
Job.parts_tax_rates?.PAS?.prt_tx_ty5?.Value, //PRT_TX_TY5
|
|
Job.parts_tax_rates?.PAS?.prt_tx_in5?.Value //PRT_TX_IN5
|
|
); ;
|
|
|
|
writer.AddRecord(
|
|
"PAA", //PRT_TYPE
|
|
Job.parts_tax_rates?.PAA?.prt_tax_in?.Value, //PRT_TAX_IN
|
|
Job.parts_tax_rates?.PAA?.prt_tax_rt?.Value, //PRT_TAX_RT
|
|
Job.parts_tax_rates?.PAA?.prt_mkupp?.Value, //PRT_MKUPP
|
|
Job.parts_tax_rates?.PAA?.prt_mktyp?.Value, //PRT_MKTYP
|
|
Job.parts_tax_rates?.PAA?.prt_discp?.Value, //PRT_DISCP
|
|
Job.parts_tax_rates?.PAA?.prt_tx_ty1?.Value, //PRT_TX_TY1
|
|
Job.parts_tax_rates?.PAA?.prt_tx_in1?.Value, //PRT_TX_IN1
|
|
Job.parts_tax_rates?.PAA?.prt_tx_ty2?.Value, //PRT_TX_TY2
|
|
Job.parts_tax_rates?.PAA?.prt_tx_in2?.Value, //PRT_TX_IN2
|
|
Job.parts_tax_rates?.PAA?.prt_tx_ty3?.Value, //PRT_TX_TY3
|
|
Job.parts_tax_rates?.PAA?.prt_tx_in3?.Value, //PRT_TX_IN3
|
|
Job.parts_tax_rates?.PAA?.prt_tx_ty4?.Value, //PRT_TX_TY4
|
|
Job.parts_tax_rates?.PAA?.prt_tx_in4?.Value, //PRT_TX_IN4
|
|
Job.parts_tax_rates?.PAA?.prt_tx_ty5?.Value, //PRT_TX_TY5
|
|
Job.parts_tax_rates?.PAA?.prt_tx_in5?.Value //PRT_TX_IN5
|
|
); ;
|
|
|
|
|
|
writer.Write(fileStream);
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex, "Error when creating PFP file."); throw ex;
|
|
}
|
|
|
|
}
|
|
public static void GeneratePftFile(dynamic Job)
|
|
{
|
|
try
|
|
{
|
|
DBFField[] StandardEmsFields = ReadDbfFields(emsBasePath + @"\EMS.PFT");
|
|
|
|
using (var fileStream = File.Create(TempEmsDir + $@"\{GenerateFileName(Job)}.PFT"))
|
|
{
|
|
using (var writer = new DBFWriter())
|
|
{
|
|
writer.CharEncoding = DbfFileCharEncoding;
|
|
writer.Signature = DbfFileSignature;
|
|
writer.LanguageDriver = DbfFileLanguageDriver;
|
|
|
|
writer.Fields = StandardEmsFields;
|
|
|
|
|
|
writer.Write(fileStream);
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex, "Error when creating PFT file."); throw ex;
|
|
}
|
|
|
|
}
|
|
public static void GenerateStlFile(dynamic Job)
|
|
{
|
|
try
|
|
{
|
|
DBFField[] StandardEmsFields = ReadDbfFields(emsBasePath + @"\EMS.STL");
|
|
|
|
using (var fileStream = File.Create(TempEmsDir + $@"\{GenerateFileName(Job)}.STL"))
|
|
{
|
|
using (var writer = new DBFWriter())
|
|
{
|
|
writer.CharEncoding = DbfFileCharEncoding;
|
|
writer.Signature = DbfFileSignature;
|
|
writer.LanguageDriver = DbfFileLanguageDriver;
|
|
|
|
writer.Fields = StandardEmsFields;
|
|
|
|
writer.AddRecord(
|
|
"LA", //TTL_TYPE
|
|
"LAB", //TTL_TYPECD
|
|
(Job.job_totals?.rates?.lab?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.rates?.lab?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
|
|
writer.AddRecord(
|
|
"LA", //TTL_TYPE
|
|
"LAS", //TTL_TYPECD
|
|
(Job.job_totals?.rates?.las?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.rates?.las?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
|
|
writer.AddRecord(
|
|
"LA", //TTL_TYPE
|
|
"LAR", //TTL_TYPECD
|
|
(Job.job_totals?.rates?.lar?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.rates?.lar?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
|
|
writer.AddRecord(
|
|
"LA", //TTL_TYPE
|
|
"LAG", //TTL_TYPECD
|
|
(Job.job_totals?.rates?.lag?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.rates?.lag?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
|
|
writer.AddRecord(
|
|
"LA", //TTL_TYPE
|
|
"LAF", //TTL_TYPECD
|
|
(Job.job_totals?.rates?.laf?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.rates?.laf?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
|
|
writer.AddRecord(
|
|
"LA", //TTL_TYPE
|
|
"LAM", //TTL_TYPECD
|
|
(Job.job_totals?.rates?.lam?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.rates?.lam?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
writer.AddRecord(
|
|
"LA", //TTL_TYPE
|
|
"LAU", //TTL_TYPECD
|
|
(Job.job_totals?.rates?.lau?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.rates?.lau?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
writer.AddRecord(
|
|
"LA", //TTL_TYPE
|
|
"LA1", //TTL_TYPECD
|
|
(Job.job_totals?.rates?.la1?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.rates?.la1?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
writer.AddRecord(
|
|
"LA", //TTL_TYPE
|
|
"LA2", //TTL_TYPECD
|
|
(Job.job_totals?.rates?.la2?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.rates?.la2?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
writer.AddRecord(
|
|
"LA", //TTL_TYPE
|
|
"LA3", //TTL_TYPECD
|
|
(Job.job_totals?.rates?.la3?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.rates?.la3?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
|
|
writer.AddRecord(
|
|
"LA", //TTL_TYPE
|
|
"LA4", //TTL_TYPECD
|
|
(Job.job_totals?.rates?.la4?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.rates?.la4?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
|
|
writer.AddRecord(
|
|
"LA", //TTL_TYPE
|
|
"LAD", //TTL_TYPECD
|
|
(Job.job_totals?.rates?.lad?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.rates?.lad?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
writer.AddRecord(
|
|
"LA", //TTL_TYPE
|
|
"LAE", //TTL_TYPECD
|
|
(Job.job_totals?.rates?.lae?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.rates?.lae?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
|
|
|
|
writer.AddRecord(
|
|
"LA", //TTL_TYPE
|
|
"LAT", //TTL_TYPECD
|
|
(Job.job_totals?.rates?.rates_subtotal?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.rates?.rates_subtotal?.hours?.Value ?? 0, //T_HRS **** THIS MAY NEED TO BE ADDED LATER
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMTs
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS ** THIS MAY NEED TO BE ADDED LATER.
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
|
|
|
|
writer.AddRecord(
|
|
"PA", //TTL_TYPE
|
|
"PAN", //TTL_TYPECD
|
|
(Job.job_totals?.parts?.parts?.list?.PAN?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.parts?.parts?.list?.PAN?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
writer.AddRecord(
|
|
"PA", //TTL_TYPE
|
|
"PAA", //TTL_TYPECD
|
|
(Job.job_totals?.parts?.parts?.list?.PAA?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.parts?.parts?.list?.PAA?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
writer.AddRecord(
|
|
"PA", //TTL_TYPE
|
|
"PAM", //TTL_TYPECD
|
|
(Job.job_totals?.parts?.parts?.list?.PAM?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.parts?.parts?.list?.PAM?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
writer.AddRecord(
|
|
"PA", //TTL_TYPE
|
|
"PAL", //TTL_TYPECD
|
|
(Job.job_totals?.parts?.parts?.list?.PAL?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.parts?.parts?.list?.PAL?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
|
|
writer.AddRecord(
|
|
"PA", //TTL_TYPE
|
|
"PAR", //TTL_TYPECD
|
|
(Job.job_totals?.parts?.parts?.list?.PAR?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.parts?.parts?.list?.PAR?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
writer.AddRecord(
|
|
"PA", //TTL_TYPE
|
|
"PAC", //TTL_TYPECD
|
|
(Job.job_totals?.parts?.parts?.list?.PAC?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.parts?.parts?.list?.PAC?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
writer.AddRecord(
|
|
"PA", //TTL_TYPE
|
|
"PAS", //TTL_TYPECD
|
|
(Job.job_totals?.parts?.sublets?.PAS?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.parts?.sublets?.PAS?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
|
|
writer.AddRecord(
|
|
"PA", //TTL_TYPE
|
|
"PAT", //TTL_TYPECD
|
|
(Job.job_totals?.parts?.parts?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.parts?.parts?.list?.PAT?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
writer.AddRecord(
|
|
"OTAC", //TTL_TYPE
|
|
"MAT", //TTL_TYPECD
|
|
((Job.job_totals?.rates?.mapa?.total?.amount?.Value ?? 0) / 100) + (Job.job_totals?.rates?.mash?.total?.amount?.Value ?? 0) / 100, //T_AMT
|
|
Job.job_totals?.parts?.parts?.list?.PAN?.hours?.Value ?? 0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
|
|
writer.AddRecord(
|
|
"TOT", //TTL_TYPE
|
|
null, //TTL_TYPECD
|
|
(Job.job_totals?.ttoals?.subtotal?.amount?.Value ?? 0 / 100), //T_AMT
|
|
0, //T_HRS
|
|
Job.t_addlbr?.Value ?? 0, //T_ADDLBR
|
|
Job.t_discamt?.Value ?? 0, //T_DISCAMT
|
|
Job.t_mkupamt?.Value ?? 0, //T_MKUPAMT
|
|
Job.t_gdiscamt?.Value ?? 0, //T_GDISCAMT
|
|
Job.tax_amt?.Value ?? 0, //TAX_AMT
|
|
Job.nt_amt?.Value ?? 0, //NT_AMT
|
|
Job.nt_hrs?.Value ?? 0, //NT_HRS
|
|
Job.nt_addlbr?.Value ?? 0, //NT_ADDLBR
|
|
Job.nt_disc?.Value ?? 0, //NT_DISC
|
|
Job.nt_mkup?.Value ?? 0, //NT_MKUP
|
|
Job.nt_gdis?.Value ?? 0, //NT_GDIS
|
|
Job.ttl_typamt?.Value ?? 0, //TTL_TYPAMT
|
|
Job.ttl_hrs?.Value ?? 0, //TTL_HRS
|
|
Job.ttl_amt?.Value ?? 0 //TTL_AMT
|
|
);
|
|
|
|
|
|
writer.Write(fileStream);
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex, "Error when creating STL file.");throw ex;
|
|
}
|
|
|
|
}
|
|
|
|
public static void GenerateTtlFile(dynamic Job)
|
|
{
|
|
try
|
|
{
|
|
DBFField[] StandardEmsFields = ReadDbfFields(emsBasePath + @"\EMS.TTL");
|
|
|
|
using (var fileStream = File.Create(TempEmsDir + $@"\{GenerateFileName(Job)}.TTL"))
|
|
{
|
|
using (var writer = new DBFWriter())
|
|
{
|
|
writer.CharEncoding = DbfFileCharEncoding;
|
|
writer.Signature = DbfFileSignature;
|
|
writer.LanguageDriver = DbfFileLanguageDriver;
|
|
|
|
writer.Fields = StandardEmsFields;
|
|
|
|
writer.AddRecord(
|
|
(Job.job_totals?.totals?.net_repairs?.amount?.Value ?? 0) / 100, //G_TTL_AMT
|
|
Job.depreciation_taxes?.Value ?? 0, //G_BETT_AMT
|
|
0, //G_RPD_AMT
|
|
Job.ded_amt?.Value ?? 0, //G_DED_AMT
|
|
(Job.job_totals?.totals?.custPayable?.amount?.Value ?? 0) / 100 , //G_CUST_AMT
|
|
0, //G_AA_AMT
|
|
(Job.job_totals?.totals?.net_repairs?.amount?.Value ?? 0) / 100, //N_TTL_AMT
|
|
0, //PREV_NET
|
|
0, //SUPP_AMT
|
|
0, //N_SUPP_AMT
|
|
0, //G_UPD_AMT
|
|
0, //G_TTL_DISC
|
|
Job.job_totals?.totals?.state_tax?.amount?.Value / 100 ?? 0, //G_TAX
|
|
Job.job_totals?.totals?.federal_tax?.amount?.Value / 100 ?? 0 //GST_AMT
|
|
|
|
); ;
|
|
|
|
writer.Write(fileStream);
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex, "Error when creating TTL file."); throw ex;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
}
|