LEVBS ;Leveringskosten bouwstenen [ 09/03/2003 8:44 AM ] NEXTID() ; Volgend vrij ID New ID Lock +^LEVBS("N") Set (^LEVBS("N"),ID)=^LEVBS("N")+1 Lock -^LEVBS("N") Quit ID SAVEBS(BSId,BSRec) ; Opslaan van een volledige bouwsteen en opbouw van de indexen ; BSRec via .Local Set:'$G(BSId) BSId=$$NEXTID() Merge ^LEVBS("D",BSId)=BSRec Do BLDINDBS^LEVBS(BSId,.BSRec) Quit BSId BLDINDBS(BSId,BSRec) ; Opbouw index New VolgNr,Rec,Exist,Key Merge:'$D(BSRec) BSRec=^LEVBS("D",BSId) ; Aflopen van de documenten fakturen, proforma en levbons Set VolgNr="" For Set VolgNr=$O(BSRec("D",VolgNr)) Quit:VolgNr="" Do . Set Rec=BSRec("D",VolgNr) . Set:$P(Rec,D,1) ^LEVBS("IF",$P(Rec,D,1),BSId)="" ; Faktuur . Set:$P(Rec,D,2) ^LEVBS("IPF",$P(Rec,D,2),BSId)="" ; ProfFakt . Set:$P(Rec,D,3) ^LEVBS("IB",$P(Rec,D,3),BSId)="" ; LevBon Set:$P(BSRec,D,1) ^LEVBS("IK",$P(BSRec,D,1),BSId)="" ;Klant ; Aflopen van de transport subrecords Set VolgNr="" For Set VolgNr=$O(BSRec("T",VolgNr)) Quit:VolgNr="" Do . Set Key=$P(BSRec("T",VolgNr),D,1) . Quit:Key="" . Quit:$D(Exist(Key)) . Set:$L(Key) ^LEVBS("IT",Key,BSId)="" ;TransportFaktuur ref . Set Exist(Key)="" Quit ; Deze routine wordt opgeroepen bij fakturatie UPDFAKT(BONNr,Type,FakProf) ; Als de bon pas naderhand wordt gefaktureerd New BSId,VolgNr,Rec Set BSId="" For Set BSId=$O(^LEVBS("IB",BONNr,BSId)) Quit:BSId="" Do . Set VolgNr="" . For Set VolgNr=$O(^LEVBS("D",BSId,"D",VolgNr)) Quit:VolgNr="" Do .. Set Rec=^LEVBS("D",BSId,"D",VolgNr) .. Quit:$P(Rec,D,1) ; reeds op faktuur .. Quit:$P(Rec,D,2) ; reeds op proforma .. Quit:$P(Rec,D,3)'=BONNr ; verschillende bon .. Lock +^LEVBS("D",BSId) .. Set $P(Rec,D,1+(Type="P"))=FakProf .. Set ^LEVBS("D",BSId,"D",VolgNr)=Rec .. Lock -^LEVBS("D",BSId) Quit