Anpassungen an den Verkaufstatistik Report + Styling

This commit is contained in:
Beate Trzensiok 2022-03-11 13:48:13 +01:00
parent 071d1e6060
commit 992914c29e
3 changed files with 32 additions and 20 deletions

View File

@ -8,15 +8,15 @@ frappe.ui.form.on('Verkaufsstatistik Report', {
frm.trigger('preset'); frm.trigger('preset');
}, },
setup: function(frm) { // setup: function(frm) {
frm.set_query("artikel",function(){ // frm.set_query("artikel",function(){
return { // return {
filters: [ // filters: [
["Item","item_group", "in", ["Anwendungsentwicklung", "Arbeitszeiten Techniker"]] // ["Item","item_group", "in", ["Anwendungsentwicklung", "Arbeitszeiten Techniker"]]
] // ]
} // }
}); // });
}, // },
preset: function(frm) { preset: function(frm) {
if (!frm.doc.preset) { if (!frm.doc.preset) {
// No preset selected. Allow manual selection of dates. // No preset selected. Allow manual selection of dates.

View File

@ -68,7 +68,8 @@
{ {
"fieldname": "report_ausgabe", "fieldname": "report_ausgabe",
"fieldtype": "Text Editor", "fieldtype": "Text Editor",
"label": "Report Ausgabe" "label": "Report Ausgabe",
"read_only": 1
}, },
{ {
"fieldname": "report_section", "fieldname": "report_section",
@ -95,7 +96,7 @@
], ],
"index_web_pages_for_search": 1, "index_web_pages_for_search": 1,
"links": [], "links": [],
"modified": "2021-10-26 16:02:19.458345", "modified": "2022-03-11 08:32:22.749064",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "MSP", "module": "MSP",
"name": "Verkaufsstatistik Report", "name": "Verkaufsstatistik Report",

View File

@ -25,12 +25,13 @@ class VerkaufsstatistikReport(Document):
}, },
fields = ["posting_date", "name"] fields = ["posting_date", "name"]
) )
for si in si_list: for si in si_list:
artikel_doc = frappe.get_doc("Sales Invoice", si["name"]) artikel_doc = frappe.get_doc("Sales Invoice", si["name"])
for artikel in artikel_doc.items: for artikel in artikel_doc.items:
if artikel.item_code in artikel_name: if artikel.item_code in artikel_name:
empl = str(artikel.item_name).replace("Arbeitszeit ","").replace("Herr ","").replace(" Anwendungsentwicklung","").replace("Remote-Service ","") empl = str(artikel.item_name).replace("Arbeitszeit ","").replace("Herr ","").replace(" Anwendungsentwicklung","").replace("Remote-Service ","")
artikel_details = [si["posting_date"],empl,artikel.item_name,artikel.item_code,artikel.qty] artikel_details = [si["posting_date"],empl,artikel.item_name,artikel.item_code,artikel.qty,artikel.rate]
item_list.append(artikel_details) item_list.append(artikel_details)
if self.report_basierend_auf == "Lieferschein": if self.report_basierend_auf == "Lieferschein":
@ -49,11 +50,11 @@ class VerkaufsstatistikReport(Document):
for artikel in artikel_doc.items: for artikel in artikel_doc.items:
if artikel.item_code in artikel_name: if artikel.item_code in artikel_name:
empl = str(artikel.item_name).replace("Arbeitszeit ","").replace("Herr ","").replace(" Anwendungsentwicklung","").replace("Remote-Service ","") empl = str(artikel.item_name).replace("Arbeitszeit ","").replace("Herr ","").replace(" Anwendungsentwicklung","").replace("Remote-Service ","")
artikel_details = [dn["posting_date"],empl,artikel.item_name,artikel.item_code,artikel.qty] artikel_details = [dn["posting_date"],empl,artikel.item_name,artikel.item_code,artikel.qty, artikel.rate]
item_list.append(artikel_details) item_list.append(artikel_details)
df = pd.DataFrame(item_list, columns = ["Datum","Mitarbeiter","Item Name","Item","Anzahl"]) df = pd.DataFrame(item_list, columns = ["Datum","Mitarbeiter","Item Name","Item","Anzahl","Preis"])
df['Datum'] = pd.to_datetime(df['Datum']) df['Datum'] = pd.to_datetime(df['Datum'])
df['Kalenderwoche']= df['Datum'].dt.isocalendar().week df['Kalenderwoche']= df['Datum'].dt.isocalendar().week
df['Monat']= df['Datum'].dt.month df['Monat']= df['Datum'].dt.month
@ -79,14 +80,24 @@ class VerkaufsstatistikReport(Document):
frappe.msgprint("Bitte Zeiteinheit für Gruppierung auswählen") frappe.msgprint("Bitte Zeiteinheit für Gruppierung auswählen")
if self.gruppiert_nach == "Artikel": if self.gruppiert_nach == "Artikel":
filters = filters +["Item","Item Name"] filters = filters +["Item","Item Name","Preis"]
if self.gruppiert_nach == "Mitarbeiter": if self.gruppiert_nach == "Mitarbeiter":
filters.append("Mitarbeiter") filters.append("Mitarbeiter")
df_grouped = df.groupby(filters).agg({'Anzahl': ['sum']}).reset_index() #df_grouped = df.groupby(filters).agg({'Anzahl': ['sum']}).reset_index()
df_grouped = df.groupby(filters)['Anzahl'].sum().to_frame('Anzahl').reset_index()
html = df_grouped.to_html(header = False,index = False) self.report_ausgabe = self.get_styler(df_grouped).render()
#html_2 = html.replace('<tr>','<tr style="text-align: center;">')
self.report_ausgabe = html
if item_list == []: if item_list == []:
self.report_ausgabe = '<p>' + ("Für die angegebene Periode sind keine Daten vorhanden") + '</p>' self.report_ausgabe = '<p>' + ("Für die angegebene Periode sind keine Daten vorhanden") + '</p>'
def get_styler(self,df):
styles = [
dict(props=[("border-collapse", "collapse"), ("width", "100%")]),
dict(selector="th, td", props=[("padding", ".75rem"), ("border-top", "1px solid #dee2e6")]),
dict(selector=".col_heading", props=[('text-align', 'right')]),
#dict(selector=".col_heading.col0", props=[('text-align', 'left')]),
dict(selector=".data", props=[("text-align", "right")]),
dict(selector=".col0", props=[("text-align", "left")]), # first column
dict(selector="tbody tr:nth-of-type(odd)", props=[("background-color", "rgba(0,0,0,.05)")]), # stripes
]
return df.style.hide_index().format({"Anzahl":'{:.2f}', "Preis":'{:.2f}'}).set_table_styles(styles)