<?xml version="1.0" encoding="UTF-8"?>
<Export generator="Cache" version="9" zv="Cache for UNIX (Linux Intel/32-bit) 5.0.4 (Build 829)" ts="2004-04-30 00:38:42">
<Routine name="BMFIBU" type="INT" languagemode="0" timestamp="59637,74614"><![CDATA[
BMFIBU ;KRA;Schnittstellen WW<->FIBU [ 02/27/01  4:33 PM ]
 ;
 ;Muss in FIJOU2 eingebaut werden
 ;
 ;
ANF N (FA,BENR1,BENR2,KKR,HBUCH,BUCH,SYM,BBLOK,SO,HA,NNN,BEDAT) 
 Q:$G(BENR1)=""
 d ^%XINIT
 Q:+HBUCH
 S FIRMA=FA,FIL=0
 I "KL"'[KKR!(BUCH="N") G S1
 I $G(FA)="" Q
 I $G(BENR1)="" Q
 I $G(SYM)="" Q
 I $G(BBLOK)="" Q
 S RWHW=$P($G(^PA(FIRMA,340,"EURO","RWHW")),%,2)
 S WWSHW=$P($G(^PA(FIRMA,340,"EURO","WWSHW")),%,2)
 S FAKTEUR=$P($G(^PA(FIRMA,340,"EURO","FAKTEUR")),%,2)
 ;
 S KRA="" I $D(^BBLOK(FA,BENR1,SYM,BBLOK))#2 S KRA=^(BBLOK)
 S $P(KRA,%,1)=$P(KRA,%,1)+SO,$P(KRA,%,2)=$P(KRA,%,2)+HA 
 S ^BBLOK(FA,BENR1,SYM,BBLOK)=KRA
 ;
S1 I KKR="K",BUCH="J" S ZAEHLER="0" F  S ZAEHLER=$O(^J(FA,BBLOK,NNN,"OP",ZAEHLER)) Q:ZAEHLER=""  D
 . S OPWJ="" F  S OPWJ=$O(^J(FA,BBLOK,NNN,"OP",ZAEHLER,OPWJ)) Q:OPWJ=""  D
 .. S RENR="" F  S RENR=$O(^J(FA,BBLOK,NNN,"OP",ZAEHLER,OPWJ,RENR)) Q:RENR=""  D
 ... S SUB="" F  S SUB=$O(^J(FA,BBLOK,NNN,"OP",ZAEHLER,OPWJ,RENR,SUB)) Q:SUB=""  D OPK(^(SUB),"J","J")
 ;
 I KKR="L",BUCH="J",SYM="ZA" S ZAEHLER="0" F  S ZAEHLER=$O(^J(FA,BBLOK,NNN,"OP",ZAEHLER)) Q:ZAEHLER=""  D
 . S OPWJ="" F  S OPWJ=$O(^J(FA,BBLOK,NNN,"OP",ZAEHLER,OPWJ)) Q:OPWJ=""  D
 .. S RENR="" F  S RENR=$O(^J(FA,BBLOK,NNN,"OP",ZAEHLER,OPWJ,RENR)) Q:RENR=""  D
 ... S SUB="" F  S SUB=$O(^J(FA,BBLOK,NNN,"OP",ZAEHLER,OPWJ,RENR,SUB)) Q:SUB=""  D OPL
 Q
 ;
OPL 
 N KONTO,id,id1,obj
 S ADOP=^(SUB)
 S BELNR=RENR
 Q:BELNR=""
 ;
 I $D(^J(FA,BBLOK,NNN))#2 d
 . s KONTO=+$P(^(NNN),%,5)
 . s id="" f  s id=$O(^Hagbau.FilesPosI("Fibudat"," "_KONTO_%_OPWJ_%_RENR_%_SUB,id)) q:id=""  d
 .. s id1="" f  s id1=$O(^Hagbau.FilesPosI("Fibudat"," "_KONTO_%_OPWJ_%_RENR_%_SUB,id,id1)) q:id1=""  d
 ... s obj=##class(Hagbau.FilesPos).%OpenId(id_"||"_id1)
 ... i obj'="" d
 .... s obj.FibuVerweis=BBLOK_%_NNN
 .... s obj.Status=1
 .... d obj.%Save()
 .... d obj.%Close()
 ;
 ZA ^ER(FA,FIL,0,"ER",BELNR,0)
 I $D(^ER(FA,FIL,0,"ER",BELNR,0))#2 S AD=^(0)
 E  Q
 S $P(AD,%,25)=BEDAT
 S:+$P(ADOP,%,1)=2 $P(AD,%,1)=4
 S ^(0)=AD
 ZD ^ER(FA,FIL,0,"ER",BELNR,0)
 Q
 ;
OPK(ADOP,SKJN,AUJN) 
 S BELART=$E(RENR,1,2),BELNR=$E(RENR,3,$L(RENR))
 Q:BELART=""
 Q:BELNR=""
 S BELNR=+BELNR
 Q:"RE,PV,SR"'[BELART
 S FIL=0
 ;
 I $D(^AU(FA,FIL,1,BELART,BELNR))#2 S AUNR=$P(^(BELNR),%,1),$P(^(BELNR),%,2)=5
 E  Q
 I AUNR="" Q
 S WWKNR=+$P($G(^AU(FA,FIL,0,AUNR,0)),%,2)
 Q:+WWKNR=0
 ;
 I $D(^AU(FA,FIL,0,AUNR,2,BELART,BELNR,0))#2 S BELDAT=$P(^(0),%,2),$P(^(0),%,1)=5
 E  Q:BELART'="RE"
 ;
 S REDAT="" I BELART="RE",$D(^AU(FA,FIL,1,"RE",BELNR))#2 S REDAT=$P(^(BELNR),%,3)
 S DATKRA=$S(BELART="RE":REDAT,1:BELDAT)
 F I=0:1:5 K ^AU(FA,FIL,4,WWKNR,I,DATKRA,BELART,BELNR)
 S ^AU(FA,FIL,4,WWKNR,5,DATKRA,BELART,BELNR)=AUNR
 I BELART="RE" S LSNR="" F  S LSNR=$O(^AU(FA,FIL,1,"RE",BELNR,LSNR)) Q:LSNR=""  D
 . S KLSNR1=$G(^(LSNR))
 . I $D(^AU(FA,FIL,1,"LS",LSNR))#2 S AUNR=$P(^(LSNR),%,1),$P(^(LSNR),%,2)=5
 . E  Q
 . I $D(^AU(FA,FIL,0,AUNR,2,"LS",LSNR,0))#2 D
 .. S BELDAT=$P(^(0),%,2),$P(^(0),%,1)=5
 .. F II=0:1:5 K ^AU(FA,FIL,4,WWKNR,II,BELDAT,"LS",LSNR)
 .. S ^AU(FA,FIL,4,WWKNR,5,BELDAT,"LS",LSNR)=AUNR
 . K ^KASJM(FA,FIL,0,"LS",LSNR)
 . K:$L(WWKNR) ^KASJM(FA,FIL,1,WWKNR,"LS",LSNR)
 . ;
 . F I=1:1:$L(KLSNR1,",") D
 .. S KLSNR=$P(KLSNR1,",",I)
 .. Q:KLSNR=""
 .. I $D(^AU(FA,FIL,1,"LS",KLSNR))#2 S AUNR=$P(^(KLSNR),%,1),$P(^(KLSNR),%,2)=5
 .. E  Q
 .. I $D(^AU(FA,FIL,0,AUNR,2,"LS",KLSNR,0))#2 D
 ... S BELDAT=$P(^(0),%,2),$P(^(0),%,1)=5
 ... F II=0:1:5 K ^AU(FA,FIL,4,WWKNR,II,BELDAT,"LS",KLSNR)
 ... S ^AU(FA,FIL,4,WWKNR,5,BELDAT,"LS",KLSNR)=AUNR
 .. K ^KASJM(FA,FIL,0,"LS",KLSNR)
 .. K:$L(WWKNR) ^KASJM(FA,FIL,1,WWKNR,"LS",KLSNR)
 ;
 I +$P(ADOP,%,1)=2 D
 . K ^KASJM(FA,FIL,0,BELART,BELNR) K:$L(WWKNR) ^KASJM(FA,FIL,1,WWKNR,BELART,BELNR)
 . I AUJN="J" D
 .. S STR=$P(ADOP,%,23)
 .. I $L(STR),$D(^AU(FA,FIL,1,BELART,BELNR))#2 D
 ... S AD=$P(^(BELNR),%,4)
 ... F I=1:1:$L(STR,"\") S STR1=$P(STR,"\",I) D
 .... S:$L(AD) AD=AD_";"
 .... S AD=AD_"BB"_BBLOK_"/"_NNN_"="_$$WWSHW($P(STR1,";",1))_","_$$WWSHW($P(STR1,";",2))_","_$$WWSHW($P(STR1,";",5))
 ... I $L(AD)<500 S $P(^AU(FA,FIL,1,BELART,BELNR),%,4)=AD
 . ;
 . I SKJN="J" D
 .. S SKONTO=0
 .. F I=1:1:$L(STR,"\") S SKONTO=SKONTO+$$WWSHW($P($P(STR,"\",I),";",2))
 .. I BELART="RE" D 
 ... S LSNR="",SKONTOF=0 F  S LSNR=$O(^AU(FA,FIL,1,"RE",BELNR,LSNR)) Q:LSNR=""  S AUNR=$P($G(^AU(FA,FIL,1,"LS",LSNR)),%,1),SKONTOF=SKONTOF+$P($G(^AU(FA,FIL,0,AUNR,2,"LS",LSNR,0)),%,21) 
 ... I +SKONTOF S LSNR="" F  S LSNR=$O(^AU(FA,FIL,1,"RE",BELNR,LSNR)) Q:LSNR=""  S AUNR=$P($G(^AU(FA,FIL,1,"LS",LSNR)),%,1),AN=$P($G(^AU(FA,FIL,0,AUNR,2,"LS",LSNR,0)),%,21)/SKONTOF D BUCHE^BMUFISK("LS",LSNR,0,SKONTO*AN,"B")
 .. E  S AUNR=$P($G(^AU(FA,FIL,1,BELART,BELNR)),%,1) D BUCHE^BMUFISK(BELART,BELNR,0,SKONTO,"B")
 Q
 ;
WWSHW(N) I RWHW="EUR",WWSHW="ATS" Q N*FAKTEUR
 Q N
 ;
BELEG Q
 ;
SETSTAT d ^BMINIT
 W "Firma: " R FA W !
 W "Filiale: " R FIL W !
 ;
 S FA=FIRMA
 S BUCH="J"
 S BBLOK="" F  S BBLOK=$O(^J(FA,0,1,BBLOK)) Q:BBLOK=""  D
 . I $P(BBLOK,".",2)=2003 W BBLOK,! S NNN="0" D A10
 Q
 ;
A10 S NNN=$N(^J(FA,BBLOK,NNN)) I NNN=-1 Q
 I '($D(^J(FA,BBLOK,NNN))#2) G A10
A11 S (SSS,JSS)=^J(FA,BBLOK,NNN),JTYP=$P(SSS,%,1),KZ=$P(SSS,%,2),SAM=$E(KZ,1),HBUCH=$E(KZ,2),ST=$E(KZ,3)
 S SYM=$P(SSS,%,3),KKR=$P(SSS,%,4),KTNR=$P(SSS,%,5),BENR1=$P(SSS,%,6),BENR2=$P(SSS,%,7),BEDAT=$P(SSS,%,8),GKKR=$P(SSS,%,9),GKTO=$P(SSS,%,10)
 S SO=$P(SSS,%,11),HA=$P(SSS,%,12),TXT=$P(SSS,%,13),FWC=$P(SSS,%,14)
 ;
 ;KRA/9.12.97
 ;Einsprung Baumat WAWI
 D ANF^BMFIBU
 G A10
 ;
LOE(FA,KKR,KTNR,OPWJ,RENR,SUB,SSA) 
 N (FA,KKR,KTNR,OPWJ,RENR,SUB,SSA)
 d ^%XINIT
 S BELART=$E(RENR,1,2),BELNR=+$E(RENR,3,$L(RENR))
 Q:"RE`SR`PV"[BELART
 I $L(BELART),$L(BELNR),$D(^AU(FA,0,1,BELART,BELNR))#2 S AUNR=$P(^(BELNR),%,1)
 E  Q
 I $D(^AU(FA,0,0,AUNR,0))#2 S WWKNR=$P(^(0),%,2)
 E  Q
 K ^KASJM(FA,0,0,BELART,BELNR)
 K ^KASJM(FA,0,1,WWKNR,BELART,BELNR)
 Q
 
]]></Routine>
<Class name="Hagbau.Files">
<ClassType>persistent</ClassType>
<Super>%Library.Persistent</Super>
<TimeChanged>59640,43468.706951</TimeChanged>
<TimeCreated>59556,72745.644943</TimeCreated>
<ClassDefinitionError>0</ClassDefinitionError>

<Property name="Datum">
<Type>%Library.Date</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="Filiale">
<Type>%Library.Integer</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="Firma">
<Type>%Library.Integer</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="Satzanz">
<Type>%Library.Integer</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="Typ">
<Type>%Library.String</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="Verbucht">
<Type>%Library.Integer</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="ZVNummer">
<Type>%Library.String</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="Filename">
<Type>%Library.String</Type>
<Parameter name="COLLATION" value="EXACT"/>
</Property>

<Property name="ZZ">
<Type>Hagbau.FilesPos</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Cardinality>children</Cardinality>
<Inverse>Kopf</Inverse>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>1</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Index name="Filename">
<Properties>Filename</Properties>
</Index>

<Method name="ErkJN">
<ClassMethod>1</ClassMethod>
<FormalSpec>firma:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[	Q $D(^MENUE("NADLINGER",firma,25))
]]></Implementation>
</Method>

<Method name="Etikett">
<Final>0</Final>
<ClassMethod>1</ClassMethod>
<CodeMode>code</CodeMode>
<FormalSpec>firma:%Library.Integer,belnr:%Library.String,wert:%Library.Float</FormalSpec>
<Private>0</Private>
<ReturnType>%Library.Integer</ReturnType>
<SqlProc>0</SqlProc>
<Implementation><![CDATA[
 d etikett^HagbauUtils(firma,belnr,wert)	
 q 1
]]></Implementation>
</Method>

<Method name="FileExistent">
<ClassMethod>1</ClassMethod>
<FormalSpec>fname:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	I $D(^Hagbau.FilesI("Filename",fname)) Q 1
	Q 0
]]></Implementation>
</Method>

<Method name="GetParam">
<Final>0</Final>
<ClassMethod>1</ClassMethod>
<CodeMode>code</CodeMode>
<FormalSpec>firma:%Library.Integer,filiale:%Library.Integer</FormalSpec>
<Private>0</Private>
<ReturnType>%Library.Integer</ReturnType>
<SqlProc>0</SqlProc>
<Implementation><![CDATA[
 K ^XW($J)
 s %=^%SY(0,"%")
 s cnt=0
 S bank="" f  s bank=$O(^BP(firma,201,bank)) q:bank=""  d
 . I $D(^BP(firma,201,bank,0))#2 S ad=^(0)
 . E  Q
 . s name=$P(ad,%,1),adr=$P(ad,%,2),kto=$P(ad,%,3),konto=$P($G(^BP(firma,201,bank,1,"L")),%,1)
 . s cnt=cnt+1,^XW($J,cnt)="B"_"|"_$$ASCIANSI^%UML(bank_$C(10)_name_$C(10)_adr_$C(10)_kto_$C(10)_konto)
 ;
 s zweg="" f  s zweg=$O(^BP(firma,9,2,"ZW",zweg)) q:zweg=""  d
 . s cnt=cnt+1,^XW($J,cnt)="Z"_"|"_$$ASCIANSI^%UML(zweg_$C(10)_$P(^(zweg),%,1))
 ;
 s ftyp="" f  s ftyp=$O(^BP(firma,203,ftyp)) q:ftyp=""  d
 . I $D(^(ftyp,0))#2 s name=$P(^(0),%,1)
 . e  Q
 . s cnt=cnt+1,^XW($J,cnt)="F"_"|"_$$ASCIANSI^%UML(ftyp_$C(10)_name)
 ;
 s sktok="" f  s sktok=$O(^BP(firma,3,"L","SA",sktok)) q:sktok=""  d
 . I $D(^(sktok,0))#2 s name=$P(^(0),%,1)
 . e  Q
 . s cnt=cnt+1,^XW($J,cnt)="S"_"|"_$$ASCIANSI^%UML(sktok_$C(10)_name)

 q $J
]]></Implementation>
</Method>

<Method name="SaveFile">
<Final>0</Final>
<ClassMethod>1</ClassMethod>
<CodeMode>code</CodeMode>
<FormalSpec>id:%Library.Integer,firma:%Library.Integer,filiale:%Library.Integer,datum:%Library.Date,satzanz:%Library.Integer,typ:%Library.String,verbucht:%Library.Integer,zvnummer:%Library.String</FormalSpec>
<Private>0</Private>
<ReturnType>%Library.Integer</ReturnType>
<SqlProc>0</SqlProc>
<Implementation><![CDATA[
 if id="" s obj=##class(Hagbau.Files).%New()
 if id'="" s obj=##class(Hagbau.Files).%OpenId(id)
 if obj="" q 0
 s obj.Firma=firma
 s obj.Filiale=filiale
 s obj.Datum=datum
 s obj.Satzanz=satzanz
 s obj.Typ=typ
 s obj.ZVNummer=zvnummer
 s obj.Verbucht=verbucht
 d obj.%Save()
 s id=obj.%Id()
 d obj.%Close()
 q id
]]></Implementation>
</Method>

<Method name="Verbuch">
<Final>0</Final>
<ClassMethod>1</ClassMethod>
<CodeMode>code</CodeMode>
<FormalSpec>firma:%Library.Integer,fil:%Library.Integer,id:%Library.String,typ:%Library.String,wj:%Library.String,pcode:%Library.String,testjn:%Boolean</FormalSpec>
<Private>0</Private>
<ReturnType>%Library.String</ReturnType>
<SqlProc>0</SqlProc>
<Implementation><![CDATA[
 i typ="ZA" q $$VerbuchZA^HagbauUtils(firma,fil,id,wj,pcode,testjn)
 i typ="RE" q $$VerbuchRE^HagbauUtils(firma,fil,id,wj,pcode,testjn)
]]></Implementation>
</Method>

<Query name="Files">
<Type>%Library.SQLQuery</Type>
<FormalSpec>Firma:%Library.Integer,Filiale:%Library.Integer,Typ:%Library.String</FormalSpec>
<SqlProc>0</SqlProc>
<SqlQuery>SELECT ID, Datum, Typ, Satzanz, Verbucht, ZVNummer, Filename
FROM Files
WHERE (Firma = :Firma) AND (Filiale = :Filiale) AND 
 (:Typ is null or Typ = :Typ)
ORDER by ID DESC</SqlQuery>
<SqlView>0</SqlView>
<Parameter name="CONTAINID" value="1"/>
<Parameter name="ROWSPEC" value="ID,Datum:%Library.Date,Typ:%Library.String,Satzanz:%Library.Integer,Verbucht:%Library.Integer,ZVNummer:%Library.String,Filename:%String"/>
</Query>

<Method name="GetKontoName">
<ClassMethod>1</ClassMethod>
<FormalSpec>firma:%String,kkr:%String,konto:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Q $$ASCIANSI^%UML($P($G(^B(firma,kkr,konto,1)),"`",2))
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^Hagbau.FilesD</DataLocation>
<DefaultData>FilesDefaultData</DefaultData>
<IdLocation>^Hagbau.FilesD</IdLocation>
<IndexLocation>^Hagbau.FilesI</IndexLocation>
<StreamLocation>^Hagbau.FilesS</StreamLocation>
<Data name="FilesDefaultData">
<Structure>listnode</Structure>
<Value name="1">
<Value>Datum</Value>
</Value>
<Value name="2">
<Value>Filiale</Value>
</Value>
<Value name="3">
<Value>Firma</Value>
</Value>
<Value name="4">
<Value>Satzanz</Value>
</Value>
<Value name="5">
<Value>Typ</Value>
</Value>
<Value name="6">
<Value>Verbucht</Value>
</Value>
<Value name="7">
<Value>ZVNummer</Value>
</Value>
<Value name="8">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="9">
<Value>Filename</Value>
</Value>
</Data>
<Data name="ZZ">
<Attribute>ZZ</Attribute>
<Structure>subnode</Structure>
<Subscript>"ZZ"</Subscript>
</Data>
</Storage>
</Class>
<Class name="Hagbau.FilesPos">
<ClassType>persistent</ClassType>
<ProcedureBlock>1</ProcedureBlock>
<Super>%Persistent</Super>
<TimeChanged>59655,2037.073935</TimeChanged>
<ClassDefinitionError>0</ClassDefinitionError>

<Property name="Kopf">
<Type>Hagbau.Files</Type>
<Cardinality>parent</Cardinality>
<Inverse>ZZ</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Zeile">
<Type>%String</Type>
<Parameter name="MAXLEN" value="1000"/>
</Property>

<Property name="Status">
<Type>%Integer</Type>
</Property>

<Property name="Lnr">
<Type>%String</Type>
</Property>

<Property name="ZZ">
<Type>%Integer</Type>
</Property>

<Property name="Fibudat">
<Type>%String</Type>
</Property>

<Property name="FibuVerweis">
<Type>%String</Type>
</Property>

<Property name="Belnr">
<Type>%String</Type>
</Property>

<Index name="Fibudat">
<Properties>Fibudat</Properties>
</Index>

<Index name="IDKey">
<IdKey>1</IdKey>
<Properties>ZZ</Properties>
<Unique>1</Unique>
</Index>

<Query name="Pos">
<Type>%SQLQuery</Type>
<FormalSpec>idkopf:%String</FormalSpec>
<SqlQuery><![CDATA[SELECT %ID FROM FilesPos
where Kopf->ID=:idkopf]]></SqlQuery>
<Parameter name="CONTAINID" value="1"/>
</Query>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("ZZ")</DataLocation>
<DefaultData>FilesPosDefaultData</DefaultData>
<IdLocation>{%%PARENT}("ZZ")</IdLocation>
<IndexLocation>^Hagbau.FilesPosI</IndexLocation>
<StreamLocation>^Hagbau.FilesPosS</StreamLocation>
<Data name="FilesPosDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Status</Value>
</Value>
<Value name="3">
<Value>Zeile</Value>
</Value>
<Value name="4">
<Value>Lnr</Value>
</Value>
<Value name="5">
<Value>Fibudat</Value>
</Value>
<Value name="6">
<Value>FibuVerweis</Value>
</Value>
<Value name="7">
<Value>Belnr</Value>
</Value>
</Data>
</Storage>
</Class>
<Class name="Hagbau.Lief">
<ClassType>persistent</ClassType>
<Super>%Library.Persistent</Super>
<TimeChanged>59556,72772.928403</TimeChanged>
<TimeCreated>59556,72745.672072</TimeCreated>

<Index name="Lief">
<Extent>0</Extent>
<IdKey>1</IdKey>
<PrimaryKey>0</PrimaryKey>
<Properties>Lief</Properties>
<Unique>1</Unique>
</Index>

<Index name="Name">
<Extent>0</Extent>
<IdKey>0</IdKey>
<PrimaryKey>0</PrimaryKey>
<Properties>Name1</Properties>
<Unique>0</Unique>
</Index>

<Index name="Typ">
<Extent>0</Extent>
<IdKey>0</IdKey>
<PrimaryKey>0</PrimaryKey>
<Properties>Typ,Lief</Properties>
<Unique>0</Unique>
</Index>

<Property name="Land">
<Type>%Library.String</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="Lief">
<Type>%Library.Integer</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="Name1">
<Type>%Library.String</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
<Parameter name="COLLATION" value="SQLUPPER"/>
</Property>

<Property name="Name2">
<Type>%Library.String</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="Ort">
<Type>%Library.String</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="Plz">
<Type>%Library.String</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="Strasse">
<Type>%Library.String</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="Typ">
<Type>%Library.String</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
<Parameter name="COLLATION" value="EXACT"/>
</Property>

<Method name="KontoStamm">
<Final>0</Final>
<ClassMethod>1</ClassMethod>
<CodeMode>code</CodeMode>
<FormalSpec>firma:%Library.String,ssktok:%Library.String</FormalSpec>
<Private>0</Private>
<ReturnType>%Library.Integer</ReturnType>
<SqlProc>0</SqlProc>
<Implementation><![CDATA[
 s %=^%SY(0,"%")
 s n=0
 K ^XW($J)
 s lnr="" f  s lnr=$O(^B(firma,"L",lnr)) q:lnr=""  d
 . I $D(^(lnr,0))#2 s kbez=^(0)
 . e  q
 . s:kbez="" kbez=lnr
 . s lnr(kbez,lnr)=""
 s kbez="" f  s kbez=$O(lnr(kbez)) q:kbez=""  d
 . s lnr="" f  s lnr=$O(lnr(kbez,lnr)) q:lnr=""  d
 .. I $D(^B(firma,"L",lnr,1))#2 s ad=$$ASCIANSI^%UML(^(1))
 .. e  q
 .. I $L(ssktok),'$F(ssktok,$P($G(^B(firma,"L",lnr,2)),%,1)) Q
 .. s n=n+1
 .. s ^XW($J,n)=$E(1000000+lnr,2,7)_$C(10)_$P(ad,%,2)_" "_$P(ad,%,3)_$C(10)_$P(ad,%,4)_$C(10)_$P(ad,%,5)_$C(10)_$P(ad,%,6)_$C(10)_$P(ad,%,7)
 k lnr
 q $J
]]></Implementation>
</Method>

<Method name="SetBaumatLief">
<Final>0</Final>
<ClassMethod>1</ClassMethod>
<CodeMode>code</CodeMode>
<FormalSpec>firma:%Library.Integer,hlief:%Library.Integer,lief:%Library.String</FormalSpec>
<Private>0</Private>
<ReturnType>%Library.String</ReturnType>
<SqlProc>0</SqlProc>
<Implementation><![CDATA[
 s lief=$TR(lief," ","")
 if lief="" d  q erg
 . I $D(^BZM(firma,"L",2,hlief))#2 s lnr=+$P(^(hlief),"`",1)
 . e  s erg=1 q
 . s lnr1=""
 . ;Matches für Hagebau-Nummer löschen
 . K ^BZ(firma,"L",lnr,"OEBAULNR",hlief)
 . K ^BZM(firma,"L",2,hlief)
 . ;Standdard-Zentralnummer neu setzen
 . s lnr1=$O(^BZ(firma,"L",lnr,"OEBAULNR",""),-1)
 . i $D(^BZ(firma,"L",lnr,1))#2 s $P(^(1),"`",2)=lnr1
 . s erg=1 q
 ;
 if lief'="" d  q erg
 . I '$D(^B(firma,"L",lief,1))#2 s erg=0 q
 . s erg="1"_"|"_$$ASCIANSI^%UML($P(^(1),"`",2)) 
 . ;Alten Lieferant suchen
 . I $D(^BZM(firma,"L",2,hlief))#2 d
 .. s lnro=$P(^(hlief),"`",1) I +lnro D
 ... ;Hagebau-LN bei alten Lieferanten löschen
 ... K ^BZM(firma,"L",2,hlief)
 ... K ^BZ(firma,"L",lnro,"OEBAULNR",hlief)
 ... ;Standdard-Zentralnummer neu setzen
 ... s oelnr=$O(^BZ(firma,"L",lnro,"OEBAULNR",""),-1)
 ... i $D(^BZ(firma,"L",lnro,1))#2 s $P(^(1),"`",2)=oelnr
 . ;
 . ;Neuer Lieferant
 . s $P(^BZ(firma,"L",lief,1),"`",2)=hlief
 . s ^BZ(firma,"L",lief,"OEBAULNR",hlief)=""
 . S ^BZM(firma,"L",2,hlief)=lief
 Q
]]></Implementation>
</Method>

<Method name="SetHagbauTyp">
<Final>0</Final>
<ClassMethod>1</ClassMethod>
<CodeMode>code</CodeMode>
<FormalSpec>firma:%Library.String,lnr:%Library.Integer,typ:%Library.String</FormalSpec>
<Private>0</Private>
<ReturnType>%Library.Integer</ReturnType>
<SqlProc>0</SqlProc>
<Implementation><![CDATA[
 S $P(^BZ(firma,"L",lnr,1),"`",18)=typ
 Q 1
]]></Implementation>
</Method>

<Method name="SetLief">
<Final>0</Final>
<ClassMethod>1</ClassMethod>
<CodeMode>code</CodeMode>
<FormalSpec>zeile:%Library.String</FormalSpec>
<Private>0</Private>
<ReturnType>%Library.Integer</ReturnType>
<SqlProc>0</SqlProc>
<Implementation><![CDATA[
 s zeile=$$ANSIASCI^%UML(zeile)
 s lief = $P(zeile, $C(9), 1)

 s obj=##class(Hagbau.Lief).%OpenId(lief)
 if obj="" d
 . s obj=##class(Hagbau.Lief).%New()
 . s obj.Lief=lief

 s obj.Typ = $P(zeile, $C(9), 2)
 s obj.Name1 = $P(zeile, $C(9), 3)
 s obj.Name2 = $P(zeile, $C(9), 4)
 s obj.Strasse = $P(zeile, $C(9), 5)
 s obj.Land = $P(zeile, $C(9), 6)
 s obj.Plz = $P(zeile, $C(9), 7)
 s obj.Ort = $P(zeile, $C(9), 8)
 d obj.%Save()
 d obj.%Close()

 q 1
]]></Implementation>
</Method>

<Method name="SetPara">
<Final>0</Final>
<ClassMethod>1</ClassMethod>
<CodeMode>code</CodeMode>
<FormalSpec/>
<Private>0</Private>
<ReturnType>%Library.Integer</ReturnType>
<SqlProc>0</SqlProc>
<Implementation><![CDATA[
 K ^XW($J)
 s n=0
 s typ="" f  s typ=$O(^Hagbau.LiefI("Typ",typ)) q:typ=""  d
 . s n=n+1
 . s ^XW($J,n)="T|"_typ
 s firma1="" f  s firma1=$O(^BP(firma1)) q:firma1=""  d
 . I $D(^BP(firma1,1))#2 d
 .. s ad=$$ASCIANSI^%UML(^(1))
 .. s n=n+1
 .. s ^XW($J,n)="L|"_firma1_"|"_$P(ad,"`",2)
 q $J
]]></Implementation>
</Method>

<Method name="SetSktok">
<Final>0</Final>
<ClassMethod>1</ClassMethod>
<CodeMode>code</CodeMode>
<FormalSpec>firma:%Library.Integer</FormalSpec>
<Private>0</Private>
<ReturnType>%Library.Integer</ReturnType>
<SqlProc>0</SqlProc>
<Implementation><![CDATA[
 K ^XW($J)
 s n=0,sktok="" f  s sktok=$O(^BP(firma,3,"L","SA",sktok)) q:sktok=""  d
 . I $D(^(sktok,0))#2 s n=n+1,^XW($J,n)=sktok_"|"_$$ASCIANSI^%UML($P(^(0),"`",1))
 q $J
]]></Implementation>
</Method>

<Method name="TestTyp">
<Final>0</Final>
<ClassMethod>1</ClassMethod>
<CodeMode>code</CodeMode>
<FormalSpec>firma:%Library.String,filiale:%Library.String</FormalSpec>
<Private>0</Private>
<ReturnType>%Library.Integer</ReturnType>
<SqlProc>0</SqlProc>
<Implementation><![CDATA[ q $$TestTyp^HagbauUtils(firma,filiale)
]]></Implementation>
</Method>

<Query name="Lief">
<Type>%Library.SQLQuery</Type>
<FormalSpec>firma:%Library.Integer,typ:%Library.String</FormalSpec>
<SqlProc>0</SqlProc>
<SqlQuery>SELECT Typ, Lief, Name1, Name2, Strasse, Land, Plz, Ort, $$ilief^HagbauUtils(:firma,Lief)
FROM Lief
WHERE (:typ is null or Typ = :typ)
ORDER BY upper(Name1)</SqlQuery>
<SqlView>0</SqlView>
<Parameter name="CONTAINID" value="1"/>
<Parameter name="ROWSPEC" value="Typ:%Library.String,Lief:%Library.String,Name1:%Library.String,Name2:%Library.String,Strasse:%Library.String,Land:%Library.String,Plz:%Library.String,Ort:%Library.String,ILief:%Library.String"/>
</Query>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^Hagbau.LiefD</DataLocation>
<DefaultData>LiefDefaultData</DefaultData>
<IdLocation>^Hagbau.LiefD</IdLocation>
<IndexLocation>^Hagbau.LiefI</IndexLocation>
<StreamLocation>^Hagbau.LiefS</StreamLocation>
<Data name="LiefDefaultData">
<Structure>listnode</Structure>
<Value name="1">
<Value>Land</Value>
</Value>
<Value name="2">
<Value>Name1</Value>
</Value>
<Value name="3">
<Value>Name2</Value>
</Value>
<Value name="4">
<Value>Ort</Value>
</Value>
<Value name="5">
<Value>Plz</Value>
</Value>
<Value name="6">
<Value>Strasse</Value>
</Value>
<Value name="7">
<Value>Typ</Value>
</Value>
<Value name="8">
<Value>%%CLASSNAME</Value>
</Value>
</Data>
</Storage>
</Class>
<Class name="Hagbau.Param">
<ClassType>persistent</ClassType>
<Super>%Library.Persistent</Super>
<TimeChanged>59629,81200.168187</TimeChanged>
<TimeCreated>59556,72745.694446</TimeCreated>
<ClassDefinitionError>0</ClassDefinitionError>

<Index name="IDkey">
<Extent>0</Extent>
<IdKey>1</IdKey>
<PrimaryKey>0</PrimaryKey>
<Properties>Firma,Filiale</Properties>
<Unique>1</Unique>
</Index>

<Property name="Bank">
<Type>%Library.Integer</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="Filiale">
<Type>%Library.Integer</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="Firma">
<Type>%Library.Integer</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="NettoTage">
<Type>%Library.Integer</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="SamKtoKreis">
<Type>%Library.Integer</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="TolBetrag">
<Type>%Library.Float</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="Zweg">
<Type>%Library.Integer</Type>
<Final>0</Final>
<Calculated>0</Calculated>
<Collection/>
<MultiDimensional>0</MultiDimensional>
<Private>0</Private>
<Relationship>0</Relationship>
<Required>0</Required>
<SqlComputed>0</SqlComputed>
<Transient>0</Transient>
</Property>

<Property name="SuOPTyp">
<Type>%String</Type>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^Hagbau.ParamD</DataLocation>
<DefaultData>ParamDefaultData</DefaultData>
<IdLocation>^Hagbau.ParamD</IdLocation>
<IndexLocation>^Hagbau.ParamI</IndexLocation>
<StreamLocation>^Hagbau.ParamS</StreamLocation>
<Data name="ParamDefaultData">
<Structure>listnode</Structure>
<Value name="1">
<Value>Bank</Value>
</Value>
<Value name="2">
<Value>Filiale</Value>
</Value>
<Value name="3">
<Value>Firma</Value>
</Value>
<Value name="4">
<Value>NettoTage</Value>
</Value>
<Value name="5">
<Value>SamKtoKreis</Value>
</Value>
<Value name="6">
<Value>Zweg</Value>
</Value>
<Value name="7">
<Value>TolBetrag</Value>
</Value>
<Value name="8">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="9">
<Value>SuOPTyp</Value>
</Value>
</Data>
</Storage>
</Class>
<Routine name="HagbauUtils" type="INT" languagemode="0" timestamp="59653,45420"><![CDATA[
HagbauUtils ;KRA;Hagebau Zahlungsschnittstelle Utils
	Q
	;
Umbau
	d ^BMINIT
	S ID="" F  S ID=$O(^Hagbau.FilesD(ID)) Q:ID=""  D
	. S ZZ="" F  S ZZ=$O(^Hagbau.FilesD(ID,"ZZ",ZZ)) Q:ZZ=""  D
	.. S obj=##class(Hagbau.FilesPos).%OpenId(ID_"||"_ZZ)
	.. s obj.ZZ=ZZ
	.. d obj.%Save()
	.. d obj.%Close()
	Q
	;
TestTyp(FIRMA,FIL)
	N (FIRMA,FIL)
	d ^%XTT
	
	K ^XW($J)
	S N=0
	S LNR="" F  S LNR=$O(^BZ(FIRMA,"L",LNR)) Q:LNR=""  D
	. s LNAME="" I $D(^B(FIRMA,"L",LNR,1))#2 s LNAME=$P(^(1),%,2)
	. k typ
	. S HLNR="" F  S HLNR=$O(^BZ(FIRMA,"L",LNR,"OEBAULNR",HLNR)) Q:HLNR=""  I $L(HLNR)=6,$E(HLNR,1)="9" D
	.. s typ=""
	.. s obj=##class(Hagbau.Lief).%OpenId(HLNR) q:obj=""
	.. s typ=obj.Typ s:typ="ProfiFachmarkt" typ="Baumarkt"
	.. s typ(typ)=""
	.. d obj.%Close()
	. I '$D(typ) Q
	. s typ=$o(typ("")) 
	. I typ'=$O(typ(""),-1)
	. I typ="Baumarkt" s $P(^BZ(FIRMA,"L",LNR,1),%,18)="M" Q
	. I typ="Baustoff" s $P(^BZ(FIRMA,"L",LNR,1),%,18)="B" Q
	. ;
	. S N=N+1
	. S ^XW($J,N)=LNR_"|"_$$ASCIANSI^%UML(LNAME)_"|"_$P($G(^BZ(FIRMA,"L",LNR,1)),%,18)
	q $J
	;
VerbuchRE(firma,fil,id,wj,pcode,testjn)
 
	N (firma,fil,id,wj,pcode,testjn)
	S FIRMA=firma
	S FIL=fil
	d ^%XTT
	I '$D(^MENUE("NADLINGER",firma,25)) q 4
	;
	s obj=##class(Hagbau.Files).%OpenId(id)
	i obj="" q 0
	;
	s obj1=##class(Hagbau.Param).%OpenId(firma_"||"_fil)
	i obj1="" q 0
	s bank=obj1.Bank
	s zweg=obj1.Zweg
	s ntg=obj1.NettoTage
	s sktok=obj1.SamKtoKreis
	s suoptyp=obj1.SuOPTyp
	d obj1.%Close()
	;
	s anz=obj.ZZ.Count()
	s anzvb=0
	f cnt=1:1:anz d
	. s belnr=""
	. s qsw=obj.ZZ.GetAt(cnt).Status 
	.        ;Status: 0=Absturz 1=verbucht 2=Kontofehler, 
	.        ;3=keine passende ZK, 4=keine ERK, 5=wird verbucht, 6=op vorh
	. s zeile=obj.ZZ.GetAt(cnt).Zeile
	. ;
	. s velnrb=$$GET^BMXOBJ("HAGEBAU","LiefNrB")
	. s velnrm=$$GET^BMXOBJ("HAGEBAU","LiefNrM")
	. ;
	. i $E(zeile,1,1)="K" D
	.. s konto=$$rebl($E(zeile,39,44))
	.. i obj.ZZ.GetAt(cnt).Lnr'="" s konto=obj.ZZ.GetAt(cnt).Lnr
	.. e  i $L(konto),$D(^BZM(firma,"L",2,konto))#2 s konto=$P(^(konto),%,1),obj.ZZ.GetAt(cnt).Lnr=konto
	.. e  s qsw=2 q
	.. s hgtyp=$P(^BZ(firma,"L",konto,1),"`",18)
	.. if hgtyp="M" s velnr=velnrm
	.. e  s velnr=velnrb
	.. s renr=$$rebl($E(zeile,21,30))
	.. s hrenr=$$rebl($E(zeile,3,12))
	.. S belnr="",neu=1
	.. I $L(hrenr),$D(^ER(firma,fil,"2H",konto,hrenr))#2 s belnr=$P(^(hrenr),%,2),neu=0
	.. ;I $L(renr),belnr="",$D(^ER(firma,fil,2,konto,renr))#2 s belnr=$P(^(renr),%,2),neu=0
	.. ;
	.. I belnr="",suoptyp="L",$L(konto) s OPWJ="" F  S OPWJ=$O(^B(firma,"L",konto,"OP",OPWJ)) Q:OPWJ=""  D  Q:$L(belnr)
    ... I $D(^B(firma,"L",konto,"OP",OPWJ,renr)) s belnr=renr,neu=0
    .. I belnr="",suoptyp="L",$L(velnrb) s OPWJ="" F  S OPWJ=$O(^B(firma,"L",velnrb,"OP",OPWJ)) Q:OPWJ=""  D  Q:$L(belnr)
    ... I $D(^B(firma,"L",velnrb,"OP",OPWJ,renr)) s belnr=renr,neu=0
    .. I belnr="",suoptyp="L",$L(velnrm) s OPWJ="" F  S OPWJ=$O(^B(firma,"L",velnrm,"OP",OPWJ)) Q:OPWJ=""  D  Q:$L(belnr)
    ... I $D(^B(firma,"L",velnrm,"OP",OPWJ,renr)) s belnr=renr,neu=0
    ..;
	.. I belnr="",suoptyp="H",$L(konto) s OPWJ="" F  S OPWJ=$O(^B(firma,"L",konto,"OP",OPWJ)) Q:OPWJ=""  D  Q:$L(belnr)
    ... I $D(^B(firma,"L",konto,"OP",OPWJ,hrenr)) s belnr=hrenr,neu=0
    .. I belnr="",suoptyp="H",$L(velnrb) s OPWJ="" F  S OPWJ=$O(^B(firma,"L",velnrb,"OP",OPWJ)) Q:OPWJ=""  D  Q:$L(belnr)
    ... I $D(^B(firma,"L",velnrb,"OP",OPWJ,hrenr)) s belnr=hrenr,neu=0
    .. I belnr="",suoptyp="H",$L(velnrm) s OPWJ="" F  S OPWJ=$O(^B(firma,"L",velnrm,"OP",OPWJ)) Q:OPWJ=""  D  Q:$L(belnr)
    ... I $D(^B(firma,"L",velnrm,"OP",OPWJ,hrenr)) s belnr=hrenr,neu=0
 	.. I +neu=0 s qsw=6
	.. I +neu D
 	... s qsw=5
 	... s status=1
 	... s einldat=$$datum($E(zeile,13,20))
 	... s datum=$$datum($E(zeile,13,20))
 	... s rewert=$J($TR($E(zeile,110,120)," ","")/100,0,2) i $E(zeile,121,121)="-" s rewert=-rewert
 	... s stsum=$J($TR($E(zeile,122,132)," ","")/100,0,2) i $E(zeile,133,133)="-" s stsum=-stsum
 	... s wc=0
 	... s vdat=einldat
 	... s sk1=$J($TR($E(zeile,79,82)," ","")/100,0,2)
 	... s tg1=$TR($E(zeile,68,70)," ","")
 	... s zk="",i1="" f  s i1=$O(^BP(firma,4,i1)) q:i1=""  d
 	.... s ad=^(i1)
 	.... i +$P(ad,%,2)=+sk1,+$P(ad,%,1)=+tg1,+$P(ad,%,3)=0,+$P(ad,%,4)=0 s zk=i1
 	... i zk="" s qsw=3 q 
 	... s sdat1=$$TXT7^%LN200($$H^%LN200(vdat)+tg1)
 	... s sdat2="",sk2=""
 	... s ndat=$$TXT7^%LN200($$H^%LN200(vdat)+ntg)
 	... s btext=""
 	... s bongsjn="N"
 	... s kwert=""
 	... s stpfjn=$S(+$TR($E(zeile,98,108)," ",""):"J",1:"N")
 	... s rkbujn="N"
 	... s seitanz=""
 	... s ftyp=""
 	... S hgtyp=$P(^BZ(firma,"L",konto,1),"`",18)
 	... s velnr=$$GET^BMXOBJ("HAGEBAU","LiefNr"_hgtyp)
 	... ;
 	... I testjn s belnr="wird angelegt"
 	... i 'testjn d
 	.... ;Rechnung speichern
 	.... ;
	.... ;Neue Nummer
	.... ZA ^PA(firma,20,wj,"ER")
 	.... S belnr=$P($G(^PA(firma,20,wj,"ER")),%,5)
    .... F  Q:'$D(^ER(firma,fil,0,"ER",belnr))  S belnr=belnr+1
    .... S $P(^PA(firma,20,wj,"ER"),%,5)=belnr+1
 	.... ZD ^PA(firma,20,wj,"ER")
 	.... ;
 	.... S ^ER(firma,fil,0,"ER",belnr,0)=status_%_einldat_%_konto_%_renr_%_datum_%_rewert_%_wc_%_""_%_1_%_vdat_%_zk_%_sdat1_%_sdat2_%_ndat_%_sk1_%_sk2_%_zweg_%_btext_%_""_%_""_%_""_%_ftyp_%_""_%_""_%_""_%_""_%_bongsjn_%_kwert_%_stpfjn_%_rkbujn_%_velnr_%_seitanz_%_hrenr
 	.... S ^ER(firma,fil,1,einldat,"ER",belnr)=status
 	.... S ^ER(firma,fil,2,konto,renr)="ER"_%_belnr
 	.... S ^ER(firma,fil,"2H",konto,hrenr)="ER"_%_belnr
 	.... S $P(^ER(firma,fil,0,"ER",belnr,1),%,1,2)=rewert_%_stsum
 	.... s qsw=1
 	.... ;
 	.... ;Sammelkontokreis in Lieferantenstamm setzen
 	.... i sktok'="" I $D(^B(firma,"L",konto,2))#2 S $P(^(2),%,1)=sktok
 	. ;
 	. i obj.ZZ.GetAt(cnt).Status'=1 s obj.ZZ.GetAt(cnt).Status=qsw
 	. s obj.ZZ.GetAt(cnt).Belnr=belnr
 	. s obj.ZZ.GetAt(cnt).Zeile=zeile
 	. i obj.ZZ.GetAt(cnt).Status=1 s anzvb=anzvb+1
 	;
 	s obj.Verbucht=anzvb
 	s obj.Satzanz=anz
 	d obj.%Save()
 	d obj.%Close()
 	;
	q anzvb_"|"_anz
	;
datum(d)
	q ($E(d,1,4)-1900)_$E(d,5,8)
	;
datumv(d)
	q ($E(d,5,8)-1900)_$E(d,3,4)_$E(d,1,2)	
	;
VerbuchZA(firma,fil,id,wj,pcode,testjn)
 
	N (firma,fil,id,wj,pcode,testjn)
	d ^%XTT
	S FIRMA=firma
	S FIL=fil
	;	
	s obj=##class(Hagbau.Files).%OpenId(id)
	i obj="" q 0
	; 
	s obj1=##class(Hagbau.Param).%OpenId(firma_"||"_fil)
	i obj1="" q 0
	s bank=obj1.Bank
	s tol=obj1.TolBetrag
	s suoptyp=obj1.SuOPTyp
	d obj1.%Close()
	;
	S erkjn=$D(^MENUE("NADLINGER",firma,25))
	s anz=obj.ZZ.Count()
	s anzvb=0
	F cnt=1:1:anz d
	. ;qsw 0=DB-Error, 1=verbucht, 2=unbek. Liefnummer 
	. ;3=unbek. Belegnummer 4=OP nicht vorhanden, 5=bereits gebucht
	. ;6=skontotol überschritten 7=zu buchen
	. s qsw=obj.ZZ.GetAt(cnt).Status
	. ;
	. s zeile=obj.ZZ.GetAt(cnt).Zeile
	. i $E(zeile,1,4)="ZVGP" D
	.. s konto=$$rebl($E(zeile,5,10))
	.. i obj.ZZ.GetAt(cnt).Lnr'="" s konto=obj.ZZ.GetAt(cnt).Lnr
	.. e  i $L(konto),$D(^BZM(firma,"L",2,konto))#2 s konto=$P(^(konto),%,1),obj.ZZ.GetAt(cnt).Lnr=konto
	.. e  s qsw=2 q
	.. s hgtyp=$P(^BZ(firma,"L",konto,1),"`",18)
	.. s velnrb=$$GET^BMXOBJ("HAGEBAU","LiefNrB")
	.. s velnrm=$$GET^BMXOBJ("HAGEBAU","LiefNrM")
	.. s fkontob=konto
	.. S fkontom=konto
	.. I $L(velnrb) s fkontob=velnrb
	.. I $L(velnrm) s fkontom=velnrm
	.. ;
	.. s renr=$$rebl($E(zeile,84,95))
	.. s hrenr=$$rebl($E(zeile,488,497))
	.. s belnr=" "
	.. I +erkjn,$L(hrenr),$D(^ER(firma,fil,"2H",konto,hrenr))#2 s belnr=$P(^(hrenr),%,2),suoptyp="I"
	.. I +erkjn,belnr=" ",$L(renr),$D(^ER(firma,fil,2,konto,renr))#2 s belnr=$P(^(renr),%,2),suoptyp="I"
	.. i +erkjn,belnr=" " s qsw=3 q ;Belegnummer nicht gefunden
	.. i testjn,+qsw=1 S obj.ZZ.GetAt(cnt).Belnr=belnr q
	.. ;
	.. s obj.ZZ.GetAt(cnt).Belnr=belnr d obj.%Save()
	.. s sw=0,belnr1=""
	.. I suoptyp="I" s opwj="" F  S opwj=$O(^B(firma,"L",fkontob,"OP",opwj),-1) Q:opwj=""  I $D(^(opwj,belnr)) s sw=1,fkonto=fkontob,belnr1=belnr Q
	.. I +sw=0 D
	... I suoptyp="I" s opwj="" F  S opwj=$O(^B(firma,"L",fkontom,"OP",opwj),-1) Q:opwj=""  I $D(^(opwj,belnr)) s sw=1,fkonto=fkontom,belnr1=belnr Q
	.. ; 
	.. I suoptyp="H" s opwj="" F  S opwj=$O(^B(firma,"L",fkontob,"OP",opwj),-1) Q:opwj=""  I $D(^(opwj,hrenr)) s sw=1,fkonto=fkontob,belnr1=hrenr Q
	.. I +sw=0 D
	... I suoptyp="H" s opwj="" F  S opwj=$O(^B(firma,"L",fkontom,"OP",opwj),-1) Q:opwj=""  I $D(^(opwj,hrenr)) s sw=1,fkonto=fkontom,belnr1=hrenr Q
	.. ;
	.. I suoptyp="L" s opwj="" F  S opwj=$O(^B(firma,"L",fkontob,"OP",opwj),-1) Q:opwj=""  I $D(^(opwj,renr)) s sw=1,fkonto=fkontob,belnr1=renr Q
	.. I +sw=0 D
	... I suoptyp="L" s opwj="" F  S opwj=$O(^B(firma,"L",fkontom,"OP",opwj),-1) Q:opwj=""  I $D(^(opwj,renr)) s sw=1,fkonto=fkontom,belnr1=renr Q
	.. I +sw=0 s qsw=4 Q ;OP nicht gefunden
	.. 
	.. s sw=0
	.. s sub="" f  s sub=$O(^B(firma,"L",fkonto,"OP",opwj,belnr1,sub),-1) q:sub=""  d  q:+sw
	... I $D(^(sub))#2,$P(^(sub),%,1)<2 s sw=1,opbetr=$P(^(sub),%,6)-$P(^(sub),%,5)
	.. I +sw=0 s qsw=5 Q ;Keine offene OP gefunden
	.. ;
	.. I $D(^UEBTMP(firma,"OP","L",fkonto,opwj,belnr1,sub)) s qsw=7 Q
	.. ;
	.. s (ne,sk)=0
	.. f i1=0:1:9 d
	... s ne1=$J($TR($E(zeile,i1*38+104,i1*38+114)," ","")/100,0,2) i $E(zeile,i1*38+115,i1*38+115)="-" s ne1=-ne1
	... s ne=ne+ne1
	... s sk1=$J($TR($E(zeile,i1*38+116,i1*38+126)," ","")/100,0,2) i $E(zeile,i1*38+127,i1*38+127)="-" s sk1=-sk1
	... s ne=ne-sk1,sk=sk+sk1
	.. s skpr=$J($TR($E(zeile,484,487)," ","")/100,0,2)
	.. if $$abs(ne+sk-opbetr)'>tol s sk=opbetr-ne
	.. e  s qsw=6 q
	.. ;
	.. if 'testjn d
	... s ff=$O(^UEB(firma,"L",bank,fkonto,"POS",""),-1)+1
	... S ^UEB(firma,"L",bank,fkonto,"POS",ff)=opwj_%_belnr1_%_sub_%_ne_%_sk_%_skpr_%_""
	... S ^UEBTMP(firma,"OP","L",fkonto,opwj,belnr1,sub)=ff_%_bank_%
	... s obj.ZZ.GetAt(cnt).Fibudat=fkonto_%_opwj_%_belnr1_%_sub
	... s knam=$P($G(^B(firma,"L",fkonto,0)),%,1)
	... S ^UEBTMP(firma,"A","L",bank,knam,fkonto)=fkonto
	.. s qsw=7
	.. ;
	.. ;Zahlungsmerker & Status setzen
	.. s merk="HG"_obj.ZVNummer_"/"_cnt_%_$$TXT7^%LN200(obj.Datum)
	.. I 'testjn,+erkjn,$D(^ER(firma,fil,0,"ER",belnr,0))#2 D
    ... S einldat=$P(^(0),%,2)
    ... S $P(^(0),%,1)=4
    ... S $P(^(0),%,23,24)=merk
    ... S:$L(einldat) $P(^ER(firma,fil,1,einldat,"ER",belnr),%,1)=4
	.. s obj.ZZ.GetAt(cnt).Belnr=belnr
	. i obj.ZZ.GetAt(cnt).FibuVerweis'="" s qsw=1
	. s obj.ZZ.GetAt(cnt).Zeile=zeile
 	. i obj.ZZ.GetAt(cnt).Status'=1 s obj.ZZ.GetAt(cnt).Status=qsw
	. i obj.ZZ.GetAt(cnt).Status=1!(obj.ZZ.GetAt(cnt).Status=7) s anzvb=anzvb+1
 	;
 	s obj.Verbucht=anzvb
 	s obj.Satzanz=anz
	d obj.%Save()
	d obj.%Close()
	;
	I +qsw=7,'testjn d
	. s gesamt=0
	. s bank="" f  s bank=$O(^UEB(firma,"L",bank)) q:bank=""  d
	.. s sumb=0
	.. s konto="" f  s konto=$O(^UEB(firma,"L",bank,konto)) q:konto=""  d
	... s sum=0
	... s ff="" f  s ff=$O(^UEB(firma,"L",bank,konto,"POS",ff)) q:ff=""  s sum=sum+$P(^(ff),%,4)
	... S ^UEB(firma,"L",bank,konto,0)=sum
	... S gesamt=gesamt+sum
	... S sumb=sumb+sum
	.. s ^UEB(firma,"BANK",bank,0)=sumb_%_(+$H)_%_0
	. s ^UEB(firma,"KKR","L",0)=gesamt
	;
	Q 1
	;
abs(n)
	q:n<0 -n
	q n
	;
rebl(s)
    f  q:s=""  q:$E(s,$L(s))'=" "  S s=$E(s,1,$L(s)-1)
	Q s
	;
ilief(firma,hlief)
	
	i hlief="" q ""
	;
	i $D(^BZM(firma,"L",2,hlief))#2 s lnr=$P(^(hlief),"`",1)
	e  q ""
	s lname=$P($G(^B(firma,"L",lnr,1)),"`",2)
	q lnr_$C(10)_$C(10)_lname
	;
etikett(firma,belnr,wert)
	N (firma,belnr,wert)
	d ^%XTT
	;Etikett drucken
 	S ean="221"_$E(100000000+belnr,2,9)_"7"
 	S DEV=$P($G(^PA(firma,340,"DEV","EtikettER")),%,2)
 	I DEV'="" D
 	. D OPEN^%DRU
 	. D USE^%DRU
 	. W $C(2),"L",$C(13)
 	. W "D11",$C(13)
 	. W "1F0203000220010",ean,$C(13)
 	. I wert'<0 W "105400100030020",belnr,$C(13)
 	. E  W "105400100030020","- ",belnr,$C(13)
 	. W "E",$C(13)
 	. D CLOSE^%DRU
 	q
]]></Routine>
<Project name="HagebauZV" LastModified="2004-04-30 00:38:42">
  <Items>
    <ProjectItem name="BMFIBU.int" type="MAC"/>
    <ProjectItem name="Hagbau.Files" type="CLS"/>
    <ProjectItem name="Hagbau.FilesPos" type="CLS"/>
    <ProjectItem name="Hagbau.Lief" type="CLS"/>
    <ProjectItem name="Hagbau.Param" type="CLS"/>
    <ProjectItem name="HagbauUtils.int" type="MAC"/>
    <ProjectItem name="NAINPHGL.int" type="MAC"/>
  </Items>
</Project>
<Routine name="NAINPHGL" type="INT" languagemode="0" timestamp="59531,51088"><![CDATA[
NAINPHGL	;KRA; Import Zuordnung Hagebau/Öbau-Lieferanten
	Q
	;
ANF
	d ^BMINIT
	S FIRMA="" F  S FIRMA=$O(^BZ(FIRMA)) Q:FIRMA=""  D ANF1
	Q
	;
ANF1	
	I $F($ZV,"Linux") s file="/var/fshare/liefhag.txt"
	E  s file="/pc/liefhag.txt"
	o file
	S $ZT="ERR^NAINPHGL"
	s lnr="" f  s lnr=$O(^BZ(FIRMA,"L",lnr)) q:lnr=""  d
	. I $D(^(lnr,1))#2 s olnr=$P(^(1),%,2)
	. E  Q
	. S:$L(olnr) ^BZ(FIRMA,"L",lnr,"OEBAULNR",olnr)=""
	;
	f  u file r zeile D
	. s olnr=$P(zeile,$C(9),1),hlnr=$P(zeile,$C(9),2)
	. I $D(^BZM(FIRMA,"L",2,olnr))#2 s lnr=$P(^(olnr),%,1)
	. E  u 0 W "ÖBAU-Lieferant ",olnr," nicht gefunden",! Q
	. I $D(^BZ(FIRMA,"L",lnr,1))#2
	. E  Q
	. s ^BZ(FIRMA,"L",lnr,"OEBAULNR",hlnr)=""
	. S $P(^BZ(FIRMA,"L",lnr,1),%,2)=hlnr
	
ERR	c file
	d LIEF^BMCINIT
	W !!,"Firma ",FIRMA," aufgebaut, Weiter mit <Enter> " R *X
	Q
]]></Routine>
<Checksum value="3981545367"/>
</Export>
