Beiträge von rpl

    Sehe ich auch so, die Installation funktionierte nur nach Ausführung des Skripts nicht. Top liefert mir das, was ich erwartet habe: www-data. Da der Test-Server nur lokalen Zugriff hat, ist es erstmal nicht so wichtig, hat mich nur gewundert.

    Bin gerade beim ReInstall und stelle fest, mit 775 geht's bei 770 liefert der Browser

    Forbidden

    You don't have permission to access this resource.

    Apache/2.4.57 (Debian) Server at 192.168.2.188 Port 80

    Ich habe mir den Wareneingang angeschaut und versucht etwas in Richtung "schnell", heisst mit einem Knopf/Button die Mengen für alle "dropnbox-gecheckten" Artikel zu übernehmen(im Bild "alle Artikel erfassen" unter dem vorhandenen "Artikel manuell erfassen") Das Schema bis dahin stammt aus dem Bestellvorschlag.


    Der Bestellvorschlag hat ja keine einzelnen "zuordnen"-Button und die Inhalte der Mengenfelder sind per GetPostArray() auslesbar. Das funktioniert beim Wareneingang so nicht. Ich vermute bis hierher, dass es daran liegt, das im Wareneingang in der Action/Menü-Spalte per Artikel ein eigenes Form-Element mit POST-Methode verwendet wird und deshalb nur beim Click("Zuordnen") der Inhalt des Mengenfeldes an den Server gesendet wird.


    Dann ist mir aufgefallen, dass es noch eine "Menge"-Spalte hinter der "Auftrag"-Spalte gibt, die meiner Meinung nach in der entsprechenden $sql-Zuweisung nicht gefüllt wird. Dafür aber im "Aktion"-Feld die oben erwähnte Form bzw. folgender Kode

    Code
    $menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap><form style=\"padding: 0px; margin: 0px;\" action=\"\" method=\"post\" name=\"eprooform\">Menge:&nbsp;<input type=\"number\" size=\"5\" name=\"pos[%value%]\">&nbsp;<input type=\"submit\" value=\"zuordnen\" name=\"submit\"></form></td></tr></table>";

    Wäre es eine Alternative, dass <input .. name=\"pos[%value%]\"> in die Spalte "Menge" davor zu setzen und unter Aktion nur den "Zuordnen"-Button mit <input .. name=\"submit_pos[%value%]\"> einzufügen?

    Ist schon klar! Tablesearch() folgt ja dem dokumentierten Programmierbeispiel. Mir ging es hier ja auch nur darum, der Funktionalität d. editierbaren Felder auf den Grund zu gehen. Und mit der Ableitung aus Bestellungen hast du natürlich auch Recht.

    Wir haben Xentral noch nie auf der Ebene genutzt bzw. nutzen können, als dass wir alle bestellten Artikel einzeln elektronisch pflegen konnten bzw. könnten. Wir bekommen immer Wochenangebote zusätzl. als XLSX, da tragen wir die Stückzahl ein und schicken das als Anhang einer Bestellung zurück. Nur so als Hintergrund. Wobei ich das Ziel noch nicht aufgegeben habe, dass sich auch für uns ein Warenwirtschaften auf Artikelebene mit vertretbaren Aufwand umsetzen lässt. Es handelt sich bloß leider um sehr viele und insbesonder variable Artikel usw. egal.

    Wie geht's weiter, soll ich mich mit dem Umbau "Positionen per Tablesearch" beschäftigen? Oder ist da schon weiter in der Entwicklung?

    die Sequenz habe ich mehrmals porbiert und eigentlich auch nach geschaut, ob sich in der Verzeichnishierachie was tut und leider habe ich die Anlage des Ordners per clone übersehen usw.


    Noch eine Frage zur Organisation:

    Per zip hatte ich V1.8 in installiert.

    Ist es nun besser parallel zur 1.8, welche in /var/www/html/OpenXE-V.1.8/ liegt, zum Beispiel die 1.9 in var/www/html/OpenXE-V.1.9/ zu legen oder auf dem vorhandenen Verzeichnis der 1.8 per git zwischen den branches "Hinherzuschalten"?

    Kannst du vielleicht ein Kommandosequenz-Schema vorgeben, ich müsste erstmal was dazu lesen - könnte andere ja auch interessieren usw.

    Habe meine drei Experimentierdateien in OXE1.8 ergänzt und sie funktionieren da, so wie in Xentral.OS20.1. Ist ja auch erstmal nur ein Schema, allerdings mit den editable-Feldern.

    Sollte ich jetzt tatsächlich einen Pull-Request wagen. Ich kann mir ja nicht sicher sein, ob dieser Ansatz von allen Benutzern getragen wird. Kann der dann auch wieder verworfen werden. Diese Art des Umgangs mit git ist leider noch nie meine Praxis gewesen. Gibt es einen Tipp?

    Muss in passwordsha512 etwas stehen, das Feld ist bei mir leer.

    Ich bin mal die class.acl::Login durchgegangen und bekomme im Part


    Code
       if(isset($passwordhash) && $passwordhash != '' && $usepasswordhash){
    
           $checkunescaped = password_verify ($passwordunescaped, ..

    ein '' bzw. leeren String zurück. Dann wird if(!$checkunescaped)-Part betreten und

    Code
    password_verify (  $password ,

    wobei

    Code
    [Tue Apr 18 22:45:37.277416 2023] [php:notice] [pid 21415] [client 192.168.2.113:55803] class.acl.php::Login() password: 'temp'\n, referer: http://192.168.2.188/OpenXE-V.1.8/www/index.php
    [Tue Apr 18 22:45:37.277425 2023] [php:notice] [pid 21415] [client 192.168.2.113:55803] class.acl.php::Login() passwordhash: '$2y$10$LfwRpYmGR059mR7tubUb9.NSpUyAkELYCj0aHZLsodV443KqO0qM'\n, referer: http://192.168.2.188/OpenXE-V.1.8/www/index.php
    [Tue Apr 18 22:45:37.347918 2023] [php:notice] [pid 21415] [client 192.168.2.113:55803] class.acl.php::Login() checkescaped: ''\n, referer: http://192.168.2.188/OpenXE-V.1.8/www/index.php

    checkescaped müsste doch '1' sein

    Oh jetzt hab ich's

    Code
    php -r 'printf("%s\n", password_hash("temp",PASSWORD_DEFAULT));'
    $2y$10$k/svRItDOsb/DNUzC8RduueN5IHW6fq6WI5SAdHAAGEcN83jWYu.q


    Mit dem Hash bin ich drin. Mal sehen wie es weiter geht...

    Code
    git config ..

    hat die "aufgeregte" git-Rückmeldung nicht beruhigt. Die status-Abfrage meldet immer noch die zwei unversionierten Dateien

    Ist vielleicht ein


    Code
     upgrade -do -f

    notwendig?

    Habe leider den passwordhash aus der db f. admin doch nicht gesichert, lässt sich der restaurieren bzw. ist der notwendig?

    Die login-Maske sieht nach admin/admin so aus:

    also relativ nichtssagend. Nach mehreren Versuchen erscheint dann, dass die Anzahl an Versuchen zu hoch ist, was sich per dB zurücksetzen lässt.

    Ich würde als nächstes in der welcome.php nachverfolgen, was zum aktuellen Ergebnis führt.

    Gibt es einen Tipp

    1. mit welcher Funktion ausser WelcomeLogin() das gut vorangeht?

    2. Leider ist mir nur das errorlog("...",0); als printf-Ersatz bekannt, um den Verarbeitungsablauf auf der Konsole nachzuvollziehen, sind evtl. bessere aber ebenso einfach umzusetzende Möglichkeiten bekannt?

    Habe V1.8 per zip auf einem neu installiertem Debian 11 mit Aktualisierung auf php 8.1 installiert. Während der Installation ist man ja erstmal in "openxe drin", muss sich aber irgendwie wieder einlogen.

    Nach einmaliger Gelegenheit d. oxe-log(ed)in, komme ich per admin/admin nicht wieder rein.

    Gibt es einen Trick oder was Bekanntes dazu?

    "0"-Setzen(int) der Fehllogins in der DB hilft zwar weiterzu probieren. Doch nach "gesichertem" Löschen der verschiedenen Passworteinträge oder Setzen von Passwörtern im Klartext, was ja besser nicht gehen sollte, klappt es auch nicht.

    ./upgrade -do durchgeführt

    .git-Verzeichnis liegt danach vor

    Vor dem Versuch per git zu Aktualisieren ergibt d. Ausführung



    Können die Dateien

    Code
      githash.txt
      vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer/HTML/

    einfach ge"added" werden?

    Ja - klassisch macht man das wohl über Sachkonten. Das wurde für unsere "Mikro-Firma" seitens des Steuerbüros aber nie umgesetzt, weil es den realen Arbeitskraftstundenaufwand wohl gesprengt hätte(im Vergleich zum Nutzen). Aber das stimmt schon, Sachkonten reichen. Der Hintergrund lag, so glaube ich darin, dass Sachkonten generell verschieden sind, wenn sie sich im MwSt-Satz unterscheiden, wahrscheinlich damit automatisch eine Aufteilung in Nettowert und Steuerbetrag erfolgen kann. Die Logik, die hinter Kostenstellen steckt, ist glaube ich die, dass hier immer Betriebskosten gesehen werden und damit immer der Nettobetrag. Also genau eine Kostenstelle, während mehrere Sackkonten auf eine Kostenstelle abbilden können. Ich bin aber kein Experte und reime mir das nur so zusammen.


    Ich denke, ich bekomme über die Feiertage mal einen Rechner startklar, um mit ein paar Datensätzen anzufangen.

    Mir fehlt leider aktuell ein zweiter Experimentier-Server und Zeit, mein "ausgelaufenes" Debian-Stretch zu erneuern. Deshalb ist es einfach aus dem "pages"-Verzeichnis meiner 20_1-OS-Version kopiert.


    Vielleicht mal gleich die Frage, hat man als Testumgebung eine Chance auf einem Laptop mit nur 2 echten Kernen und 2 "im Schatten"? Der wäre vorhanden.


    Kostenstellen-Zuordnung ist nur so eine private Aussicht von mir, die bei uns in der Überzahl vorkommenden Papier- u. Barzahlungs-Rechnungen auf der Kostenseiten dazurstellen ohne einzelne Artikel zu buchen, z.B. kommt jede Woche ein Rechnung des Blumenhändlers rein mit ab 30 Positionen aufwärts verschiedener Artikel. Die werden vereinfacht praktisch gegen die Warengruppentaste Schnittblumen unserer 0815-Registrierkasse gerechnet und so ist in etwa eine Darsellung d. "Material-Einkauf gegen Umsatz"-Verhältnises analog zur BWA in diesem Teilbereich möglich. Das ist aber Experimentierstatus!


    Ja klar! Sobald ein Rechner frei ist, natürlich github bzw. git.

    Vielleicht guckt sich mal einer meinen letzten Experimentierstand an, ob dieser als Rumpf f. weitere Entwicklungen taugt. Leider bleibe ich immer in der class.yui hängen, wenn es zum Beispiel darum geht, javascript-Sequenzen so zu editieren und mit "firefox-Werkzeugen" zu debuggen.


    Persönliches Ziel f. die Verarbeitung v. Verbindlichkeiten besteht für mich darin, diese in einzelne Positionen aufzuteilen, die Kostenstellen zuordenbar sind, Dabei soll zum Beispiel der Gesamtbetrag per javascript rot werden, wenn die Summe der Positionen den Gesamtbetrag übersteigt usw. Deshalb der Versuch die Positionszeilen "editable", wie zum Beispiel in Aufträgen zu verwenden.

    Danke erst mal, ich habe die "klärende" Stelle in der Funktion erpAPI::MenuEintrag() gefunden. Da durchläuft der optionale Parameter mark einen Filter über verschiedene Sets möglicher Strukturen für den 1. Prameter link. Ich hatte durch C&P irgendwie zusätzlich "&smodule=verbindlichkeit" mit drin und darauf reagiert die Filterung mit einem Aussetzen der Automatik mark=1 zu setzen.

    Kurze Frage bevor ich lange im Kode rumsuche.


    Wie kriege ich beim Umschalten auf einen zweiten bzw. weiteren Reiter "Datei(1)", so nenne ich ihn mal i.G. zum tab#xx's in der tbl-Datei, diesen mit weissen Hintergrund zum Erkennen, dass dieser ausgewählt bzw. gerade aktuell ist, belegt?


    Beim Aufruf von <Modul>_Edit() ist das zum Beispiel für "Details" gegeben:


    In beiden Fällen wird in der entsprechenden Funktion jeweils


    Code
    $this->app->erp->MenuEintrag("index.php?module=verbindlichkeit&action=edit&id=$id", "Details");

    und

    Code
    $this->app->erp->MenuEintrag("index.php?module=verbindlichkeit&action=dateien&id=$id&smodule=verbindlichkeit",'Dateien'.$anzahldateien);

    Denoch mit unterschiedlichem Erscheinungsbild.

    Zwecks Auslesen und Speichern einer Änderung in einem AutoComplete-Feld komme ich gerade nicht weiter ohne tiefer in den Quell-Kode von

    $this->app->Secure->GetGET(<attributname>) oder $this->GetInput() reinzuschauen(Name/Pfade der Sourcedatei(-en)???)


    In verbindlichkeiten_edit.tpl habe ich das Feld so definiert:


    Code
    <tr><td>{|Lieferant|}:</td><td><input type="text" name="lieferantennummer" id="lieferantennummer" 
    value="[LIEFERANTENNUMMER]" size="20"></td></tr>


    In Verbindlichkeiten.php


    Code
    $result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS v.id, a.lieferantennummer, v.rechnung, DATE_FORMAT(v.rechnungsdatum,'%d.%m.%Y'), v.betragbezahlt, v.id FROM verbindlichkeit v LEFT JOIN projekt p ON v.projekt = p.id LEFT JOIN adresse a ON v.adresse = a.id WHERE v.id=$id");


    Das anschließende

    Code
    foreach ($result[0] as $key => $value) {
      $this->app->Tpl->Set(strtoupper($key), $value);
    }

    bringt den Wert auch ins AutoComplete-Feld


    Nur nach dem Speichern wird der Inhalt des Felds nicht als Variable in $input geliefert.


    Hat jemand einen Tipp?

    Ergibt dann bei Produktion->Klick(Neu) kein:

    "Argument 1 passed to Produktion::StatusBerechnen() must be of the type integer, string given, called in /var/www/html/20.1_oss_wawision/www/pages/produktion.php on line 864"


    Meiner Meinung nach eignet sich -1 eventuell besser als 'NULL' für die Repräsentation einer nicht vorhandenen Produktion.