Zum Inhalt springen

Lagerwerte festlegen - abschreiben

Lagerwerte aufgrund letztem Einstandswert festlegen

Abschnitt betitelt „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

//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)