mbschenkel / bioco-intranet

ortoloco fork for new bioco.ch site
www.bioco.ch
7 stars 1 forks source link

Rüebli Übersicht (ID 1) #81

Open mbschenkel opened 4 years ago

mbschenkel commented 4 years ago

Die BG und Michael brauchen regelmässig eine Übersicht welches Abo bereits wie viele Einsätze (Ruebli) geleistet hat. So können dediziert Erinnerungen verschickt werden an die Abos, welche hinter dem Plan hinterher hinken und es können Massnahmen ergriffen werden, wie man dieses ausgleichen kann.

(Initiatoren: Fien / Martin)

mbschenkel commented 4 years ago

Wird im Moment manuell über SQL Abfragen direkt auf der Datenbank erstellt, nach Anfrage aus der BG

mbschenkel commented 4 years ago

Wunsch BG: Kann bei der Rüeblistatisitk noch folgende Infos angezeigt werden: wann das Abo aktiv wurde (für Neueintritte unter dem Jahr, damit Joelle diese nicht mahnt). Evtl. sogar zusätzliche Ämtli anzeigen (BG, IT, Medien, Depotbetreuung…) diese zusätzlichen Infos haben eine niedere Priorität, da wir dies auch mit der Vergabe von Rüebli für die Jobs erledigen können.

mbschenkel commented 4 years ago

Markus:

Zeitschätzung: 1<MT

mbschenkel commented 4 years ago

Aktuelle Probleme:

herrnesto commented 4 years ago

@mbschenkel Wo kann ich die Ämtlich nachsehen? Der Taetigkeitsbereich scheint nicht gesetzt zu sein. Oder ist das irgenwo anders?

Ist das Eintrittsdatum irgendwo gesetzt?

SELECT
    l.id,
    l.first_name,
    l.last_name,
    sum(j.multiplier) AS ruebli,
    t.name
FROM
    my_ortoloco_loco AS l
    LEFT JOIN my_ortoloco_boehnli b ON (b.loco_id = l.id)
    LEFT JOIN my_ortoloco_job j ON (b.job_id = j.id
            AND extract(year FROM j.time) = EXTRACT(YEAR FROM CURRENT_DATE))
    LEFT JOIN my_ortoloco_abo a ON (a.id = l.abo_id)
    LEFT JOIN my_ortoloco_taetigkeitsbereich_locos tl ON (tl.loco_id = l.id)
    LEFT JOIN my_ortoloco_taetigkeitsbereich t ON (t.id = tl.id)
WHERE
    a.active IS TRUE
GROUP BY
    l.id,
    t.name
ORDER BY
    ruebli DESC;
mbschenkel commented 4 years ago

Doch, die Tätigkeitsbeteiche sind schon in Benutzung, die siehst du zum Beispiel in der Mitgliederliste http://intranet.bioco.ch/my/filters

my_ortoloco_taetigkeitsbereich_locos ist die many-to-many Verknüpfung dazu

Wenn wir dir Ämtli in der Rüebli Übersicht tatsächlich anzeigen möchten, würde ich mir aber schon überlegen, dass in Django umzusetzen, statt eines komplizierten Queries, da sollte das recht einfach sein

Simon Kistler notifications@github.com schrieb am Mo., 17. Aug. 2020, 23:36:

@mbschenkel https://github.com/mbschenkel Wo kann ich die Ämtlich nachsehen? Der Taetigkeitsbereich scheint nicht gesetzt zu sein. Oder ist das irgenwo anders?

Ist das Eintrittsdatum irgendwo gesetzt?

SELECT

l.id,

l.first_name,

l.last_name,

sum(j.multiplier) AS ruebli,

t.name

FROM

my_ortoloco_loco AS l

LEFT JOIN my_ortoloco_boehnli b ON (b.loco_id = l.id)

LEFT JOIN my_ortoloco_job j ON (b.job_id = j.id

      AND extract(year FROM j.time) = EXTRACT(YEAR FROM CURRENT_DATE))

LEFT JOIN my_ortoloco_abo a ON (a.id = l.abo_id)

LEFT JOIN my_ortoloco_taetigkeitsbereich_locos tl ON (tl.loco_id = l.id)

LEFT JOIN my_ortoloco_taetigkeitsbereich t ON (t.id = tl.id)

WHERE

a.active IS TRUE

GROUP BY

l.id,

t.name

ORDER BY

ruebli DESC;

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mbschenkel/bioco-intranet/issues/81#issuecomment-675127977, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABQGSKVITJTLRDZWEMDFPE3SBGPGLANCNFSM4PULGSSA .

herrnesto commented 4 years ago

Ah ja min Fehler, es ist die taetigkeitsbereich ID.

Das wäre das Query. Es zeigt alle Mitglieder mit einem aktiven Abo.

Verglichen zu anderen Queries die ich gemacht habe ist das noch Übersichtlich :-D

Soll ich es in Heroku einfügen?

SELECT
    l.id,
    l.first_name,
    l.last_name,
    sum(j.multiplier) AS ruebli,
    l.abo_id,
    (
        SELECT
            string_agg(xt.name, ', ')
        FROM
            my_ortoloco_taetigkeitsbereich_locos xtl
        LEFT JOIN my_ortoloco_taetigkeitsbereich_locos tl ON (tl.loco_id = l.id)
        LEFT JOIN my_ortoloco_taetigkeitsbereich xt ON (xt.id = xtl.taetigkeitsbereich_id)
    WHERE
        xtl.loco_id = l.id) AS Taetigkeitsbereiche
FROM
    my_ortoloco_loco AS l
    LEFT JOIN my_ortoloco_boehnli b ON (b.loco_id = l.id)
    LEFT JOIN my_ortoloco_job j ON (b.job_id = j.id
            AND extract(year FROM j.time) = EXTRACT(YEAR FROM CURRENT_DATE))
    LEFT JOIN my_ortoloco_abo a ON (a.id = l.abo_id)
WHERE
    a.active IS TRUE
GROUP BY
    l.id
ORDER BY
    ruebli DESC;

Bioco___duaq6dkq7s6eh_-_PostgreSQL_9_6_18

Was ist eigentlich mit dem Abo query? Wird das auch genutzt? Das oben stehende ist ja pro Mitglied.

MartinGruchow commented 4 years ago

Ich glaube für die BG ist es viel spannender die Rueblis pro Abo zu sehen. Grundsätzlich ist es ja nicht so wichtig ob jedes Mitglied seine Einsätze macht, sondern eher ob die Abos genügend leisten. Die können sich ja untereinander unterstützen.

Gruss Marty

marionsteiger commented 4 years ago

Lieber Marty

Dem kann ich nur zustimmen.

Mit herzlichen Grüssen Marion Steiger


biocò | Gemüsegenossenschaft Region Baden-Brugg www.bioco.ch | info@bioco.ch | intranet.bioco.ch

Am 18.08.2020 um 09:57 schrieb MartinGruchow notifications@github.com:

Ich glaube für die BG ist es viel spannender die Rueblis pro Abo zu sehen. Grundsätzlich ist es ja nicht so wichtig ob jedes Mitglied seine Einsätze macht, sondern eher ob die Abos genügend leisten. Die können sich ja untereinander unterstützen.

Gruss Marty

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/mbschenkel/bioco-intranet/issues/81#issuecomment-675322183, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQQI2HVXUZJL6KFFPVDGMO3SBIX5DANCNFSM4PULGSSA.

herrnesto commented 4 years ago

@mbschenkel Irgend etwas verstehe ich noch nicht in der Datenbank Struktur. Das Query mit den Abos sollte eigentlich simpel sein. Mir ist aber aufgefallen dass mein Abo viel zu viele Einsätze hat. Als ich dann nur unsere Einsätze prüfen wollte bin ich auf folgendes gestossen:

SELECT
*
    FROM
        my_ortoloco_loco AS xl
    LEFT JOIN my_ortoloco_boehnli xb ON (xb.loco_id = xl.user_id)
    LEFT JOIN my_ortoloco_job xj ON (xb.job_id = xj.id)
WHERE
    xl.abo_id = 1130;

Bioco___duaq6dkq7s6eh_-_PostgreSQL_9_6_19

(Bei roten jobs bin ich in der Job-Übersicht gar nicht eingetragen)

Als ich mir dann den Job vom 8. Dezember angeschaut habe war die Verwirrung komplett. biocò_Intranet

Bioco___duaq6dkq7s6eh_-_PostgreSQL_9_6_19


Ich weiss nun wo das Problem herkommt. Was ist die user_id und was ist die id (eigentlich ja auch eine ID)? In welchem Fall wird welche verwendet? In diesem Fall haben alle User eine ähnliche ID, was dann zu diesem Problem führt.

herrnesto commented 4 years ago
SELECT
    a.id AS abo_id,
    (
        SELECT
            CONCAT(xl.last_name, ' ', xl.first_name) AS primary_contact
        FROM
            my_ortoloco_loco xl
        WHERE
            xl.id = a.primary_loco_id) AS primary_loco, a.groesse, a.paid, a.groesse * 10 AS minimum_ruebli, (
            SELECT
                CASE WHEN sum(xj.multiplier) > 0 THEN
                    sum(xj.multiplier)
                ELSE
                    0
                END AS ruebli
            FROM
                my_ortoloco_loco AS xl
            LEFT JOIN my_ortoloco_boehnli xb ON (xb.loco_id = xl.id)
            LEFT JOIN my_ortoloco_job xj ON (xb.job_id = xj.id
                    AND extract(year FROM xj.time) = EXTRACT(YEAR FROM CURRENT_DATE))
        WHERE
            xl.abo_id = a.id) AS anzahl_ruebli
    FROM
        my_ortoloco_abo a
    LEFT JOIN my_ortoloco_loco AS l ON a.primary_loco_id = l.user_id
    LEFT JOIN my_ortoloco_boehnli b ON (b.loco_id = l.user_id)
WHERE
    a.active = TRUE
GROUP BY
    a.id
ORDER BY
    anzahl_ruebli ASC;

Und so sähe das Resultat aus.

@MartinGruchow @marionsteiger könnt ihr damit arbeiten? Dann erstelle ich einen automatischen Export mit diesen Daten. Bioco___duaq6dkq7s6eh_-_PostgreSQL_9_6_19

mbschenkel commented 4 years ago

Wegen dem anstehenden Umzug bei uns kann ich grad nicht im Detail reinschauen.

Aber aus dem Kopf würde ich sagen, dass django eine eigene user Verwaltung hat (user table und user_id foreign key), die wir nur so teilweise nutzen (insb für den Login) und auf der die Mitglieder (loco table, ID foreign key) aufbaut.

User und loco sind dann 1:1 verknüpft aber nicht identisch. Kann zb sein, dass der Admin user keinen loco hat.

Simon Kistler notifications@github.com schrieb am Fr., 4. Sept. 2020, 08:42:

SELECT

a.id AS abo_id,

(

  SELECT

      CONCAT(xl.last_name, ' ', xl.first_name) AS primary_contact

  FROM

      my_ortoloco_loco xl

  WHERE

      xl.id = a.primary_loco_id) AS primary_loco, a.groesse, a.paid, a.groesse * 10 AS minimum_ruebli, (

      SELECT

          CASE WHEN sum(xj.multiplier) > 0 THEN

              sum(xj.multiplier)

          ELSE

              0

          END AS ruebli

      FROM

          my_ortoloco_loco AS xl

      LEFT JOIN my_ortoloco_boehnli xb ON (xb.loco_id = xl.id)

      LEFT JOIN my_ortoloco_job xj ON (xb.job_id = xj.id

              AND extract(year FROM xj.time) = EXTRACT(YEAR FROM CURRENT_DATE))

  WHERE

      xl.abo_id = a.id) AS anzahl_ruebli

FROM

  my_ortoloco_abo a

LEFT JOIN my_ortoloco_loco AS l ON a.primary_loco_id = l.user_id

LEFT JOIN my_ortoloco_boehnli b ON (b.loco_id = l.user_id)

WHERE

a.active = TRUE

GROUP BY

a.id

ORDER BY

anzahl_ruebli ASC;

Und so sähe das Resultat aus.

@MartinGruchow https://github.com/MartinGruchow @marionsteiger https://github.com/marionsteiger könnt ihr damit arbeiten? Dann erstelle ich einen automatischen Export mit diesen Daten. [image: Bioco__duaq6dkq7s6eh-_PostgreSQL_9_6_19] https://user-images.githubusercontent.com/4519899/92207940-70960980-ee8a-11ea-9dfd-25bf90241517.jpg

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mbschenkel/bioco-intranet/issues/81#issuecomment-686947511, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABQGSKWCLK324XLRMDVLMULSECD3JANCNFSM4PULGSSA .

marionsteiger commented 4 years ago

Die Rüeblistatiskik sieht schon mal gut aus! Die Ämtli müssen nicht angezeigt werden, wir werden die Arbeiten jeweils einfach mit den entsprechenden Rüebli abgleichen. Das EIntrittsdatum wäre hilfreich, aber ich kann die Liste auch separat führen und Joëlle jeweils zusammen mit der Statistik übermitteln.

herrnesto commented 4 years ago

@marionsteiger ich habe den Export erstellt. Die Daten müssten jetzt im Google Sheet sein. Ich habe noch eine Spalte mit fehlenden Rüeblis hinzugefügt. Das Eintrittsdatum existiert momentan noch nicht in der Datenbank. Ich erstelle einen neuen Task und schliesse diesen, sofern der aktuelle Export für dich in Ordnung ist.

mbschenkel commented 3 years ago

Verstehe ich das richtig, dass du hier den extistierenden Tab "Per Abo" im Google Doc mit der neuen Implementation ersetzt hast? Ist Joelle darüber informiert? (Habe ihn nochmals darauf hingewiesen)

grafik

herrnesto commented 3 years ago

Ich habe das per Abo query angepasst... Wo ist das Sheet abgelegt? Warum wird die abo_id und der primäre_loco nicht angezeigt?