class RegVehicle{ constructor(){ this.name = "regvehicle"; } static allowView(){ return userrights.has("regvehicles.view"); } static allowAddNew(){ return userrights.has("regvehicles.edit") && !sync.isActive("regvehicle"); } static allowEdit(){ return userrights.has("regvehicles.edit"); } static allowDelete(){ return userrights.has("regvehicles.delete") && !sync.isActive("regvehicle"); } static allowViewMotList(){ return userrights.has("regvehicles_mot.view"); } static allowAddMotList(){ return userrights.has("regvehicles_mot.add"); } static allowViewOrders(){ return userrights.has("regvehicles_orders.view"); } static allowAddOrder(){ return userrights.has("regvehicles_orders.add"); } static allowViewRegisteredParts(){ return userrights.has("regvehicles_parts_registered.view"); } static allowAddRegisteredParts(){ return userrights.has("regvehicles_parts_registered.add"); } static allowRemoveRegisteredParts(){ return userrights.has("rregvehicles_parts_registered.delete"); } static allowViewDamageReports(){ return userrights.has("regvehicles_damage_reports.view"); } static allowAddDamageReport(){ return userrights.has("regvehicles_damage_reports.add"); } static GetColumns(){ return ["plate","veh_type","veh_model","owner","mot","mechanic_state","id"] } static GetExtraForView(data){ let retval = { top:"", bottom:"" } let buttons = ``; buttons += ``; buttons += ``; buttons += ``; buttons += ``; retval.bottom += `
${buttons}
`; if(data.extraData.mot_data !== undefined && data.extraData.mot_data !== null && RegVehicle.allowViewMotList()){ let row = data.extraData.mot_data[0]; let onlyOne = data.extraData.mot_data.length == 1; let addMotButton = ``; if(RegVehicle.allowAddMotList()){ addMotButton = ``; } retval.bottom += `
${getTranslation("regvehicle_mot.overview")}
${addMotButton}
${RegVehicle_MOT.GetDetailView(row, data.id, !onlyOne)}
`; } if(data.extraData.open_offer_data !== undefined && data.extraData.open_offer_data !== null && RegVehicle.allowViewOrders()){ let allowAddOrderBtn = ``; if(RegVehicle.allowAddOrder()){ allowAddOrderBtn = ``; } retval.bottom += `
${getTranslation("regvehicle_dochead.overview")}
${allowAddOrderBtn}
${System.GetTable(System.getClassByName("regvehicle_dochead"), data.extraData.open_offer_data, {})}
`; } if(data.extraData.part_acceptance !== undefined && data.extraData.part_acceptance !== null && RegVehicle.allowViewRegisteredParts()){ let addNewPartAcceptanceBtn = ``; if(RegVehicle.allowAddRegisteredParts()){ addNewPartAcceptanceBtn = ``; } retval.bottom += `
${getTranslation("regvehicle_part_acceptance.overview")}
${addNewPartAcceptanceBtn}
`; let i=0; let temp = ""; for(const row of data.extraData.part_acceptance){ buttons = ``; if(RegVehicle.allowRemoveRegisteredParts()){ buttons = ``; } if(i < 9999){ let temp = `

${System.buildEmployeeName(row.creator)} - ${System.formatTimestamp(row.createddate)}

${getTranslation("price")}: $${System.FormatNumber(row.total_price)}

${row.content.replace(/\n/g,"
")}

${(row["_acceptance_name"] ?? "").replace(/\n/g,"
")}

${buttons}
`; retval.bottom += temp; } i++; } retval.bottom += `
`; } if(data.extraData.damages !== undefined && data.extraData.damages !== null && RegVehicle.allowViewDamageReports()){ let addDamageRportBtn = ``; if(RegVehicle.allowAddDamageReport()){ addDamageRportBtn = ``; } retval.bottom += `
${getTranslation("regvehicle_damage.overview")}
${addDamageRportBtn}
`; let i=0; let temp = ""; for(const row of data.extraData.damages){ buttons = ""; if(i < 5){ let badges = ""; let contentHTML = ""; if(row.content.replace(/ /g, "") !== ""){ contentHTML = `

${row.content.replace(/\n/g,"
")}

`; } if(row.repaired != true){ buttons += ``; } else{ badges += `
${getTranslation("repaired")}
`; } let temp = `

${System.buildEmployeeName(row.creator)} - ${System.formatTimestamp(row.createddate)}

${contentHTML}

${badges}

${RegVehicle_Damage.GetVehicleInteractiveModel(row, true, 1)}
${buttons}
`; retval.bottom += temp; } i++; if(i>5){ let temp = `
`; retval.bottom += temp; } } retval.bottom += `
`; } return retval; } static TableDataCreate(row, key){ if(key == "id"){ return ` ${Form.getViewButtonIcon(row[key], this.name + ".view")} ${Form.getEditButtonIcon(row[key] , this.name + ".edit", this.allowEdit())} ${Form.getDeleteButtonIcon(row[key], this.name , this.allowDelete())} `; } else if(key == "owner"){ let val = row[key]; if(val == ""){ val = getTranslation("unknown"); } return ` ${val} `; } else if(key == "mechanic_state"){ let val = row[key]; if(val != ""){ if(val == "in_shop"){ val = `
${getTranslation(row[key])}
`; } else if(val == "waiting_for_cops"){ val = `
${getTranslation(row[key])}
`; } else if(val == "order_is_done"){ val = `
${getTranslation(row[key])}
`; } } return ` ${val} `; } else if(key == "mot"){ if(row[key] == ""){ return ``; } if(new Date(row[key]) < new Date()){ return `
${System.formatDate(row[key])}
` ; } else{ return `
${System.formatDate(row[key])}
` ; } } else{ return `${row[key]}`; } } static GetEdit(data={}){ let filesOptions = [ {"id":-1, "name":getTranslation("unknown")} ,{"id":-2, "name":getTranslation("new_file"), "show_extra_field":true} ]; if(sync.isActive("files")){ filesOptions = [ {"id":-1, "name":getTranslation("unknown")} ]; } filesOptions = [...filesOptions, ...data.extraData.files]; return { "plate": { "val" : data.plate ?? "" ,"type" : "text" ,"mandatory":true } ,"owner": { "val" : data.owner_id ?? "-1" ,"type" : "searchdropdown" ,"mandatory":false ,options:filesOptions } ,"veh_type": { "val" : data.veh_type ?? "" ,"type" : "text" ,"mandatory":false } ,"veh_model": { "val" : data.veh_model ?? "" ,"type" : "text" ,"mandatory":false } ,"color": { "val" : data.color ?? "" ,"type" : "text" ,"mandatory":false } ,"-": { "type" : "divider" } ,"others": { "val" : data.others ?? "" ,"type" : "textarea" ,"isRow": true ,"mandatory":false ,autogrow: true ,rows:3 } } } }