(06-12-2022, 09:54 PM)Kernelpanic Wrote: That is the code (I also tested it with: "buf$ = Space$(45)":
Code: (Select All)'Zuschlags- bzw. Angebotskalkulation. Aus Industriebuchfuehrung S.267 - 7. Juni 2022
'Formattierung von "bplus", 10 Juni 2022
'Subroutine: EinPlatz, fuer Eingabe und Platzierung
'Dasselbe fuer die lange Ausgabe : AusPlatz
'11. Juni 2022 - Kernelpanic
Option _Explicit
Dim Fertigungsmaterial, Materialgemeinkosten As Double
Dim FertigungsloehneI, FertigungsgemeinkostenI As Double
Dim FertigungsloehneII, FertigungsgemeinkostenII As Double
Dim fertMaterialkosten, fertFertigungskosten1, fertFertigungskosten2 As Double
Dim Herstellkosten, Verwaltungsgemeinkosten, Vertriebskosten As Double
Dim Selbstkosten As Double
'Kalkulatorischer Gewinnzuschlag
'(Betriebsgewinn * 100%) / Allg. Selbstkosten -- Man kann 20% annehmen.
Dim Gewinnzuschlag As Double
'Annehmen als 95%
Dim Barverkaufspreis As Double
Dim Kundenskonto, Vertreterprovision As Double
'Annehmen als 90%
Dim Zielverkaufspreis As Double
Dim Kundenrabatt, Listenpreis As Double
Screen _NewImage(800, 600, 32)
Print Tab(15); "Angebotskalkulation"
Print Tab(15); "-------------------"
'Eingabe, Entspricht: Locate 5, 2
Fertigungsmaterial = getNumber(5, 3, "Fertigungsmaterial")
'Materialgemeinkosten + 8% auf Fertigungsmaterial
Materialgemeinkosten = (Fertigungsmaterial * 8) / 100
EinPlatz 6, 3, "+ 8% Gemeinkosten: ", Materialgemeinkosten
Locate 7, 3
Print "--------------------------------------------------"
'Matarialkosten gesamt
fertMaterialkosten = ((Fertigungsmaterial * 8) / 100) + Fertigungsmaterial
AusPlatz 8, 3, "Die Materialkosten betragen insgesamt", fertMaterialkosten
'Eingabe
FertigungsloehneI = getNumber(10, 3, "Fertigungsloehne I")
'Fertigungsgemeinkosten I +110%
FertigungsgemeinkostenI = (FertigungsloehneI * 110) / 100
EinPlatz 11, 3, "+ 110% Fertigungsgemeinkosten", FertigungsgemeinkostenI
Locate 12, 3
Print "--------------------------------------------------"
fertFertigungskosten1 = FertigungsloehneI + FertigungsgemeinkostenI
AusPlatz 14, 3, "Die Fertigungskosten 1 betragen", fertFertigungskosten1
'Eingabe
FertigungsloehneII = getNumber(16, 3, "Fertigungsloehne II")
'Fertigungsgemeinkosten II +120%
FertigungsgemeinkostenII = (FertigungsloehneII * 120) / 100
EinPlatz 17, 3, "+ 120% Fertigungsgemeinkosten", FertigungsgemeinkostenII
Locate 18, 3
Print "--------------------------------------------------"
fertFertigungskosten2 = FertigungsloehneII + FertigungsgemeinkostenII
AusPlatz 20, 3, "Die Fertigungskosten 2 betragen", fertFertigungskosten2
'Eingabe
Herstellkosten = getNumber(22, 3, "Herstellkosten")
'EinPlatz 18, 2, "Herstellkosten:", Herstellkosten: PRINT
'Verwaltungsgemeinkosten +20%
Verwaltungsgemeinkosten = (Herstellkosten * 20) / 100
EinPlatz 23, 3, "+ 20% Verwaltungsgemeinkosten", Verwaltungsgemeinkosten
'Vertriebskosten +4%
Vertriebskosten = (Herstellkosten * 4) / 100
EinPlatz 24, 3, "+ 4% Vertriebskosten", Vertriebskosten
Locate 25, 3
Print "--------------------------------------------------"
Selbstkosten = (Herstellkosten + Verwaltungsgemeinkosten) + Vertriebskosten
AusPlatz 26, 3, "Die Selbstkosten des Auftrags betragen", Selbstkosten
'#Kalkulatorischer Gewinnzuschlag
'Betriebsgewinn * 100%) / Allg. Selbstkosten -- Man kann 20% annehmen.
Gewinnzuschlag = (Selbstkosten * 20) / 100
AusPlatz 28, 3, "+ 20% Gewinnzuschlag", Gewinnzuschlag
'Barverkaufspreis: Annehmen als 95%
Barverkaufspreis = Selbstkosten + Gewinnzuschlag
AusPlatz 30, 3, "Barverkaufspreis (als 95% annehmen)", Barverkaufspreis
'Kundenskonto 2% und Vertreterprovision 3%
Kundenskonto = (Barverkaufspreis * 2) / 95
AusPlatz 31, 3, "+ 2% Kundenskonto", Kundenskonto
Vertreterprovision = (Barverkaufspreis * 3) / 95
AusPlatz 32, 3, "+ 3% Vertreterprovision", Vertreterprovision
Locate 33, 3
Print "----------------------------------------------------------"
Zielverkaufspreis = (Barverkaufspreis + Kundenskonto) + Vertreterprovision
AusPlatz 34, 3, "Zielverkaufspreis", Zielverkaufspreis
'Kundenrabatt: Annehmen als 90%
Kundenrabatt = (Zielverkaufspreis * 10) / 90
AusPlatz 36, 3, "+ 10% Kundenrabatt", Kundenrabatt
Locate 37, 3
Print "----------------------------------------------------------"
Listenpreis = (Zielverkaufspreis + Kundenrabatt)
AusPlatz 39, 3, "Listenpreis", Listenpreis
Locate 40, 3
Print "#############################################################"
End 'Hauptprogramm
Sub EinPlatz (row, col, label$, number As Double) 'Eingabe darf maximal 25 Zeichen betragen
Dim buf$
Locate row, col
buf$ = Space$(30)
Mid$(buf$, 1) = label$
Print Using buf$ + ": ###,###,###,###.##"; number
End Sub
Sub AusPlatz (row, col, label$, number As Double) 'Fuer extra Ausgabe
Dim buf$
Locate row, col
buf$ = Space$(45) '40 Zeichen lang
Mid$(buf$, 1) = label$
Print Using buf$ + ": ###,###,###,###.##"; number
End Sub
Function getNumber# (row, col, prompt25$) 'Laenge der Ausgabe steuern
Dim K$, num$
Locate row, col: Print prompt25$; "? "
K$ = InKey$
While K$ <> Chr$(13)
If Len(K$) Then
'Fuer Nachkommastelle muss "." gedrueckt werden
If InStr("-0123456789.", K$) Then
num$ = num$ + K$
EinPlatz row, col, prompt25$, Val(num$)
ElseIf Asc(K$) = 8 Then
If Len(num$) Then
num$ = Left$(num$, Len(num$) - 1)
EinPlatz row, col, prompt25$, Val(num$)
End If
End If
End If
K$ = InKey$
Wend
getNumber# = Val(num$)
End Function
Screen _NewImage(800, 672, 32) ' 672 give you 42 rows so 2 extra rows to avoid scrolling.
b = b + ...