15-I-1995.: аутоматски повез

Према датуму кад је угенерисан дијалог помоћу upitig2.prg, постоји једна верзија аутоматског повеза на данашњи дан, у недељу у 0:23, а на фајлу је датум 1997-03-19, тако да мора да се још доста пута дотеривао. Ово мора да је један од викенада код куће, између радних недеља у Мађарској. Сутрадан увече смо већ били преко.

Прво, шта је то повезивање ставки. Најпростије речено, која уплата исплаћује коју фактуру. Што би требало да је лако у неком теоретском случају, кад иде фактура па одмах уплата. Али, нит је одмах нит је тачно толико а није ни једна фактура него се ђутуре плати неколико, и то од последње само део. То је књиговођама ноћна мора, јер се повремено међу фирмама размењују иоси, тј изводи отворених ставки, дакле списак оног што се није дало повезати (са претежно неплаћеним рачунима). Да би се то смањило, покушавали смо да напишемо аутоматику. Прву верзију сам написао још 1987. или 88. на ваксу, у коболу, након што сам видео како постојећи програм не ради баш много. Постао сам миљеник књиговођа тада.

Трик који сам овог пута применио је био да скупим све рачуне, уплате итд за један рачун у један курсор (чувајући редни број првобитног слога у додатном пољу), па да га индексирам на неколико начина. Прво по броју рачуна, па по датуму, па на крају по апсолутној вредности износа, од већег ка мањем. Па за сваки индекс по пролаз низ слогове, па ако у било ком тренутку збир групе (по броју фактуре, или од почетка до тренутног слога) изађе на нулу, група се проглашава везаном. Пређени слогови се обележавају следећим бројем везе (у пољу званом, невероватно, веза). Ти се слогови више не гледају у наредним пролазима. Сваки пролаз је имао шансе да нешто ухвати. Штавише, догађало се да поновно пуштање ухвати још нешто што је промакло први пут. Ово је успевало да повеже између 50% и 90% ставки, што је зависило од прецизности уплате.

После сам додао неке границе. Наиме, заокружење. Било који остатак испод те границе би се аутоматски уписао као две ставке у том износу, једна дуговна друга потражна, па би се једна увезала са дотадашњом групом, а друга остајала као неповезана. Нема везе у ком пролазу се ово догађало.

Негде 1996, ваљда септембра, сам додао и полу-ручну верзију овога, где би корисник ручно обележавао кандидате, па би их програм везивао са остатком или без. Све остало је ишло аутоматски.

Постоји чак и верзија за КоопСис, где се аутоматски затварају дуговања коопераната. Све исто, само уместо износа количина а уместо броја фактуре шифра материјала... што није ни мењано у коду, само предефинисано у заглављу.

Десетак година након тога сам предложио да напишем нешто слично али је испало да би то било неупотребљиво, јер нису фактуре равноправне, уговорни односи су различити од случаја до случаја и не може никаква аутоматика да дефинише шта је када плаћено, може да се деси да случајно испадне да је плаћено нешто старије јер је исти износ, али није, ови намерно плаћају оно новије јер су на томе веће затезне камате и пенали. Нису све фактуре исто рођене.

Колико видим, дијалог за ово, где се тражи од купца до купца, од датума до датума, је био ископиран на разна места, где је затребао (неки извештај у аналитици, нешто у робном, ма... којегде).

Наредне вечери, опет преко Хоргоша на посао.


Спомиње се: upitig2.prg, ВАX (Ваха), КоопСис, на енглеском