Erweitere VoTiAn NG um Fachfunktionen und verbessere die Listenoberfläche
Ergänze Auftragsbearbeitung, Disposition, Stammdaten, Kunden- und Transporteurportale, Lagerverwaltung, Abrechnung, Exporte und Statistik. Füge Kontoeinstellungen, Mitteilungen, Automatikdienste und Betriebsstatus sowie die zugehörigen Tests und PHP-Abgleichsdokumentation hinzu. Vergrößere die persönlichen Auftragslisten auf einheitliche Höhen und richte Statusanzeigen sowie die Ranking-Vorschau-Steuerelemente bündig aus. Validierung: 44 Frontendtests und Produktionsbuild erfolgreich. Backend funktional unverändert gegenüber dem vollständigen Lauf mit 1.624 erfolgreichen und drei übersprungenen Tests. Layout im Browser und lokale Bereitstellung geprüft.
This commit is contained in:
1 parent
363bc27c26
commit
781a2b82dc
1165 files changed
+74986
-1028
No files matched your search
@@ -75,13 +75,21 @@ public class AppointmentService {
|
||||
if(!members.isEmpty())groupViews.add(fields("id",id(g,"id"),"label",text(g,"label"),"members",members));
|
||||
}
|
||||
return fields("headquarters",hqs,"currentHeadquarters",user.headquartersId(),"currentUser",user.userId(),"now",LocalDateTime.now(ZoneId.of("Europe/Berlin")).withNano(0),"categories",categories(),"people",people,"groups",groupViews,
|
||||
"defaultMonitoring",catalog.enabled(0,"MASK_AP_CATEGORY_4_PRESET")?1:0,"miscType",catalog.parameter(0,"MASK_AP_CATEGORY_3_MISC_ITEM"),"canReadReports",user.hasRight(16));
|
||||
"defaultMonitoring",catalog.enabled(0,"MASK_AP_CATEGORY_4_PRESET")?1:0,"miscType",catalog.parameter(0,"MASK_AP_CATEGORY_3_MISC_ITEM"),"canReadReports",user.hasRight(16),"canStatistics",user.hasRight(8),"showCustomerReports",catalog.enabled(0,"MASK_AP_BTN_CS_REPORT"),"canCreateCustomer",user.hasRight(0)&&catalog.enabled(0,"MASK_AP_BTN_CS_NEW"));
|
||||
}
|
||||
public List<Map<String,Object>> customers(LegacyUser user,String q) {
|
||||
access(user);if(q==null||q.length()>100)throw bad("Suchtext zu lang.");var hqs=allowedHeadquarters(user);
|
||||
var args=new ArrayList<Object>(hqs);args.add("%"+q.strip()+"%");
|
||||
return db.queryForList("SELECT c.cs_id AS id,CONCAT_WS(' ',c.cs_eid,co.cmp_comp,co.cmp_comp2) AS label FROM customer c LEFT JOIN company co ON co.cmp_id=c.cmp_id WHERE c.hq_id IN ("+marks(hqs.size())+") AND CONCAT_WS(' ',c.cs_eid,co.cmp_comp,co.cmp_comp2) LIKE ? ORDER BY label,id LIMIT 50",args.toArray());
|
||||
}
|
||||
public Map<String,Object> customerContext(LegacyUser user,long customerId) {
|
||||
access(user);return db.readTransaction(()->{
|
||||
var hqs=allowedHeadquarters(user);var args=new ArrayList<Object>(List.of(customerId));args.addAll(hqs);
|
||||
var row=one(db.queryForList("SELECT c.cs_id AS id,c.cs_eid AS number,c.hq_id AS headquartersId,CONCAT_WS(' ',c.cs_eid,co.cmp_comp,co.cmp_comp2) AS label FROM customer c LEFT JOIN company co ON co.cmp_id=c.cmp_id WHERE c.cs_id=? AND c.hq_id IN ("+marks(hqs.size())+")",args.toArray()));
|
||||
boolean own=id(row,"headquartersId")==user.headquartersId();
|
||||
return fields("id",id(row,"id"),"number",text(row,"number"),"headquartersId",id(row,"headquartersId"),"label",text(row,"label"),"canOpenMaster",own,"canStatistics",user.hasRight(8),"masterUnavailableReason",own?"":"Der Kundenstamm wird in der Niederlassung des Kunden gepflegt.");
|
||||
});
|
||||
}
|
||||
private void customer(LegacyUser user,long customerId) {
|
||||
var hqs=allowedHeadquarters(user);var args=new ArrayList<Object>(List.of(customerId));args.addAll(hqs);
|
||||
one(db.queryForList("SELECT cs_id FROM customer WHERE cs_id=? AND hq_id IN ("+marks(hqs.size())+")",args.toArray()));
|
||||
@@ -131,6 +139,14 @@ public class AppointmentService {
|
||||
return fields("items",rows.stream().map(r->view(user,r,names)).toList(),"total",rows.size(),"from",query.from(),"to",query.to());
|
||||
});
|
||||
}
|
||||
public Map<String,Object> get(LegacyUser user,long appointmentId) {
|
||||
access(user);return db.readTransaction(()->{
|
||||
var hqs=allowedHeadquarters(user);var args=new ArrayList<Object>(List.of(appointmentId));args.addAll(hqs);
|
||||
String where="a.ap_id=? AND a.hq_id IN ("+marks(hqs.size())+") AND "+visible(user,args);
|
||||
var row=one(db.queryForList("SELECT "+selectColumns()+",CONCAT_WS(' ',u.usr_firstname,u.usr_name) AS author,h.hq_mnemonic AS headquarters,CONCAT_WS(' ',c.cs_eid,co.cmp_comp,co.cmp_comp2) AS customer_label"+joins()+" WHERE "+where,args.toArray()));
|
||||
return view(user,row,participantNames(user,List.of(row)));
|
||||
});
|
||||
}
|
||||
private Map<Long,String> participantNames(LegacyUser user,List<Map<String,Object>> rows) {
|
||||
var ids=new LinkedHashSet<Long>();for(var row:rows)ids.addAll(GroupAdministration.memberships(text(row,"ap_participants")));
|
||||
var names=new HashMap<Long,String>();if(ids.isEmpty())return names;
|
||||
|
||||
Reference in new issue
Block a user