Lagerwerte festlegen - abschreiben
Lagerwerte aufgrund letztem Einstandswert festlegen
Man kann auch mehrere Artikel markieren und mit einer Formel die Lagerwerte aufgrund des letzten Einkaufspreises bzw. dem dort hinterlegen Einstandswert setzen. Auch hier gelten die gleichen Hinweise wie vorangehend beschrieben (z.b. bereits abgeschriebene Artikel oder nicht lagergeführte Set-Artikel ausschliessen usw.). // dieses skript auf markierte artikel anwenden // -> ES DÜRFTEN EIGENTLICH NUR BESTANDESGEFUHRTE ARTIKEL MARKIERT SEIN! // // '$d_Date' und '$h_Time' ausfüllen (sonst macht das skript nix) // // ev. rundung anpassen! C_DATE(d_Date) C_TIME(h_Time) d_Date:=!24.04.2018! // <--- ausfüllen h_Time:=?00:01:00? // <--- ausfüllen Case of : (d_Date<=!00-00-00!) : (h_Time<=?00:00:00?) : (h_Time>?24:00:00?) Else C_LONGINT(l_Artikel_ID) C_REAL(r_Einstandswert;r_ES_Wert_Menge) l_Artikel_ID:=[s0_Artikel]i_ID QUERY([s2_Einkaufspreis];[s2_Einkaufspreis]m_Artikel=l_Artikel_ID) If (Records in selection([s2_Einkaufspreis])>0) ORDER BY([s2_Einkaufspreis];[s2_Einkaufspreis]s_Gueltig__ab__Datum;<) //---descending r_Einstandswert:=[s2_Einkaufspreis]s_Einstandswert //oder [s2_Einkaufspreis]s_Nettopreis? r_ES_Wert_Menge:=[s2_Einkaufspreis]s_Menge__pro__Ansatz If (r_ES_Wert_Menge<=0) r_ES_Wert_Menge:=1 End if r_Einstandswert:=Round(r_Einstandswert/r_ES_Wert_Menge;5) //---5 nachkommastellen If (r_Einstandswert>0) `hier kann man z.B. >0.01 berücksichtigen [s0_Artikel]s_Lagerwert:=r_Einstandswert [s0_Artikel]s_Lagerwert_Datum:=d_Date [s0_Artikel]s_Lagerwert_Zeit:=h_Time [s0_Artikel]s_Mit__Lagerbewertung:=true End if End if UNLOAD RECORD([s2_Einkaufspreis]) End case
Lagerwerte setzen bzw. abschreiben
//Diese Formel legt den Lagerwert auf den gewünschten CHF 0.01 fest, d.h. schreibt ab. //Dazu müssen die gewünschten lagergeführten Artikel vorher ausgewählt und markiert werden. //Falls ein anderer Wert als 0.01 eingesetzt werden soll, dies machen. //IMMER: DAS VALUTADATUM SETZEN !!!!!!! //Falls es eine Checkbox "Abgeschrieben" in den Freien Feldern gibt, wird sie gesetzt. UNLOAD RECORD([s0_Artikel]) REDUCE SELECTION([s0_Artikel];0) READ WRITE([s0_Artikel]) QUERY([s0_Artikel];[s0_Artikel]m_Betrieb=<>l_Mandant_Betrieb_ID;*) QUERY([s0_Artikel];&;[s0_Artikel]s_Ist__bestandesgefuehrt=true) QUERY SELECTION([s0_Artikel];[s0_Artikel]s_Mit__Lagerbewertung=False;*) QUERY SELECTION([s0_Artikel]; | ;[s0_Artikel]s_Lagerwert#0.01) //LAGERWERT SETZEN FIRST RECORD([s0_Artikel]) ARRAY TEXT(at_1;9) at_1{1}:="kb" at_1{2}:="kl" at_1{3}:="db" at_1{4}:="dl" at_1{5}:="dr" at_1{6}:="lv" at_1{7}:="pr" at_1{8}:="pv" at_1{9}:="pe" C_TEXT(t_1) C_DATE(d_1) C_TIME(h_1) d_1:=Current date(*) h_1:=Current time(*) While (Not(End selection([s0_Artikel]))) QUERY([x4_Lagerjournal];[x4_Lagerjournal]r_Artikel=[s0_Artikel]i_ID) QUERY SELECTION([x4_Lagerjournal];[x4_Lagerjournal]s_Valutadatum>=!2017-05-21!) //VALUTADATUM SETZEN !!!! QUERY SELECTION WITH ARRAY([x4_Lagerjournal]s_Journaltyp;at_1) If (Records in selection([x4_Lagerjournal])=0) [s0_Artikel]s_Mit__Lagerbewertung:=True [s0_Artikel]s_Lagerwert:=0.01 [s0_Artikel]s_Lagerwert_Datum:=d_1 [s0_Artikel]s_Lagerwert_Zeit:=h_1 [s0_Artikel]f_Boolsch__50:=true //CHECKBOX "Abgeschr." setzen SAVE RECORD([s0_Artikel]) End if NEXT RECORD([s0_Artikel]) End while UNLOAD RECORD([s0_Artikel]) REDUCE SELECTION([s0_Artikel];0) READ ONLY([s0_Artikel]) UNLOAD RECORD([x4_Lagerjournal]) REDUCE SELECTION([x4_Lagerjournal];0) ARRAY TEXT(at_1;0)