Projekat

Općenito

Profil

Akcije

Podrška #25872

Zatvoren

Modul LD, korekcija semafora i scatter() gather() funkcija, identifikacija rizičnih dijelova

Dodano od Saša Vranić prije oko 13 godina. Izmjenjeno prije skoro 13 godina.

Status:
Zatvoreno
Prioritet:
Urgentno
Odgovorna osoba:
Saša Vranić
Početak:
23.12.2011
Završetak:
% završeno:

30%

Procjena vremena:

Povezani tiketi 2 (0 otvoreno2 zatvorenih)

korelira sa F18 - Greške #25891: update_rec_dbf_and_server() bug, problem kada u id-ovima imamo numerička poljaZatvorenoErnad Husremović26.12.2011

Akcije
korelira sa F18 - Podrška #25721: TDD sifk/sifvZatvorenoErnad Husremović16.12.2011

Akcije
Akcije #1

Izmjenjeno od Saša Vranić prije oko 13 godina

  • Prioritet promijenjeno iz Normalan u Urgentno
Akcije #2

Izmjenjeno od Saša Vranić prije oko 13 godina

====================================================================================
F18 bug report: 24.12.11 15:53:42
====================================================================================
Verzija programa: 0.9.25 23.12.2011 0.9.82

Podsistem  : BASE
GenKod     :   1 OpSistKod:   0
Opis       : Argument error
ImeFajla   : 
Operacija  : UPPER
Argumenti  : 

CALL STACK:
--- --------------------------------------------------------------------------------
  1 (b)F18_INIT_APP / 77
  2 UPPER / 0
  3 (b)UPDATE_REC_SERVER_AND_DBF / 319
  4 ASCAN / 0
  5 UPDATE_REC_SERVER_AND_DBF / 319
  6 LD_UNOS_OBRACUNA / 75
  7 (b)LD_OBRACUN / 22
  8 MENU_SC / 985
  9 LD_OBRACUN / 30
 10 (b)TLDMOD_MMENUSTANDARD / 106
 11 MENU_SC / 985
 12 TLDMOD:MMENUSTANDARD / 145
 13 TLDMOD:MMENU / 94
 14 TLDMOD:RUN / 149
 15 MAINLD / 31
 16 MAIN / 56
--- --------------------------------------------------------------------------------

/---------- BEGIN PostgreSQL vars --------/

server_version           : 9.1.1
TimeZone                 : Europe/Skopje

/----------  END PostgreSQL vars --------/

USED() = false

== END OF BUG REPORT ==
Akcije #4

Izmjenjeno od Saša Vranić prije oko 13 godina

ispravio ove greške

sada imam grešku

====================================================================================
F18 bug report: 24.12.11 16:14:17
====================================================================================
Verzija programa: 0.9.25 23.12.2011 0.9.82

Podsistem  : BASE
GenKod     :  14 OpSistKod:   0
Opis       : Variable does not exist
ImeFajla   : 
Operacija  : MJESEC
Argumenti  : NIL

CALL STACK:
--- --------------------------------------------------------------------------------
  1 (b)F18_INIT_APP / 77
  2 (b)FIELDBLOCK / 0
  3 UPDATE_REC_SERVER_AND_DBF / 367
  4 LD_UNOS_OBRACUNA / 78
  5 (b)LD_OBRACUN / 22
  6 MENU_SC / 985
  7 LD_OBRACUN / 30
  8 (b)TLDMOD_MMENUSTANDARD / 106
  9 MENU_SC / 985
 10 TLDMOD:MMENUSTANDARD / 145
 11 TLDMOD:MMENU / 94
 12 TLDMOD:RUN / 149
 13 MAINLD / 31
 14 MAIN / 56
--- --------------------------------------------------------------------------------

/---------- BEGIN PostgreSQL vars --------/

server_version           : 9.1.1
TimeZone                 : Europe/Skopje

/----------  END PostgreSQL vars --------/

USED() = false

== END OF BUG REPORT ==
Akcije #6

Izmjenjeno od Saša Vranić prije oko 13 godina

ovo neće proraditi a evo i razloga

#25891

Akcije #7

Izmjenjeno od Saša Vranić prije oko 13 godina

nakon korekcije sa veznog tiketa sada imam ovu grešku

====================================================================================
F18 bug report: 27.12.11 10:43:50
====================================================================================
Verzija programa: 0.9.26 26.12.2011 0.9.91

Podsistem  : BASE
GenKod     :   1 OpSistKod:   0
Opis       : Argument error
ImeFajla   : 
Operacija  : array assign
Argumenti  : 

CALL STACK:
--- --------------------------------------------------------------------------------
  1 (b)F18_INIT_APP / 77
  2 UPDATE_REC_SERVER_AND_DBF / 370
  3 LD_UNOS_OBRACUNA / 78
  4 (b)LD_OBRACUN / 22
  5 MENU_SC / 985
  6 LD_OBRACUN / 30
  7 (b)TLDMOD_MMENUSTANDARD / 106
  8 MENU_SC / 985
  9 TLDMOD:MMENUSTANDARD / 145
 10 TLDMOD:MMENU / 94
 11 TLDMOD:RUN / 149
 12 MAINLD / 31
 13 MAIN / 56
--- --------------------------------------------------------------------------------

/----- SERVER connection info: ---------- /

host/database/port/schema : localhost / bringout_test / 5432 / fmk
                     user : vsasa

F18 client required server db >=     : 4.0.8 / 40008
Actual knowhow ERP server db version : 4.0.8 / 40008

/---------- BEGIN PostgreSQL vars --------/

server_version           : 9.1.1
TimeZone                 : Europe/Skopje

/----------  END PostgreSQL vars --------/

Akcije #8

Izmjenjeno od Saša Vranić prije oko 13 godina

dobro, nakon silnih korekcija na veznom tiketu, snimanje obračuna sada radi

međutim ono što sam uočio je da se na serveru sada pojavljuju 2 obračuna, 3 obračuna, tj. koliko puta ponovim isti obračun, znači ne briše ga !

Akcije #9

Izmjenjeno od Saša Vranić prije oko 13 godina

pa da, logično

values se sada promjenilo ako su numeričke vrijednosti

{"godina", 2}

umjesto samo

"godina" 

i ovaj izraz sada ne radi također

https://github.com/knowhow/F18_knowhow/blob/c3764a865dab4a7055d/common/f18_db.prg#L345

Akcije #10

Izmjenjeno od Saša Vranić prije oko 13 godina

interesantno je to, ovo dobijam kao del izraz

delete from fmk.ld_ld where godina=NULL and mjesec=NULL and idradn='ZELJKA' itd...

jednostavno, ovaj where izraz ne zna da protumači kod ovih numeričkih vrijednosti

Akcije #11

Izmjenjeno od Saša Vranić prije oko 13 godina

normalno, zato što _sql_quote() ne zna da radi sa numeričkim vrijednostima....

Akcije #12

Izmjenjeno od Saša Vranić prije oko 13 godina

hm, da

where izraz će ovdje napuniti sa varijablama iz values hash matrice

https://github.com/knowhow/F18_knowhow/blob/c3764a865dab4a7055d4b/ld/ld_obracun_unos.prg#L73

i on to ne uradi kako treba zato što postoji ovo _sql_quote

Akcije #13

Izmjenjeno od Saša Vranić prije oko 13 godina

što znači da u where izrazu za numeričke vrijednosti mora da postoji STR konverzija

ovako:

https://github.com/knowhow/F18_knowhow/blob/8b5061769768eeff4cd/ld/ld_obracun_unos.prg#L74

Akcije #14

Izmjenjeno od Saša Vranić prije oko 13 godina

nakon ovoga provjerio, postoji samo jedan obracun na serveru i fino je azuriran u dbf

Akcije #15

Izmjenjeno od Saša Vranić prije oko 13 godina

to bi sada trebalo da je to

Akcije #16

Izmjenjeno od Saša Vranić prije oko 13 godina

da, obračun je ok...

Akcije #17

Izmjenjeno od Saša Vranić prije oko 13 godina

Kod unosa kredita postoji jedna kvaka i dilema

to je ovaj dio koda

https://github.com/knowhow/F18_knowhow/blob/8b5061769768eeff4c/ld/ld_krediti.prg#L118

naime, šta se ovdje dešava:

for .....
    append blank
    replace xzx....
next

i sada tu bi trebalo postaviti ovakav kod

for .....
    append blank
    _vals := dbf_get_rec()

    _vals["xzx"] := xzz
    ....

    update_rec_server_and_dbf(nil, _vals)
next

međutim, funkcija update radi del pa insert i zahtjeva where itd...

potrebna nam je varijanta klasičnog appenda

znači insert_rec_server_and_dbf() funkcija

Akcije #18

Izmjenjeno od Saša Vranić prije oko 13 godina

praktično to je dio koda koji se koristi kod azuriranja fakture recimo

Akcije #19

Izmjenjeno od Saša Vranić prije oko 13 godina

znači, varijanta je da se napravi u ld_semaphores.prg funkcija kao što se koristi kod azuriranja fakt

Akcije #20

Izmjenjeno od Ernad Husremović prije oko 13 godina

vsasa

pokazuješ na kod gdje se dešavao ovo

append prazan

stavi zapis čiji je identifikator set polja: (idradn, mjesec, godina). Polja vrijednosti su su idkred, iznos, naosnovu

ne treba dodavati to što govoriš nego ...

Akcije #21

Izmjenjeno od Ernad Husremović prije oko 13 godina

simbolički kod, "_" varijable lokalne i sadrže vrijednosti polja:

append blank

_rec := dbf_get_rec()

_rec[idradn] := _id_radn
_rec[mjesec] := _mjesec
_rec[godina] := _godina

_rec[idkred] := _idkred
_rec[iznos] := _iznos
_rec[naosnovu] := _naosnovu

update_rec_server_and_dbf( _rec, ... )

pri čemu je where blok (idradn, mjesec, godina)

Akcije #22

Izmjenjeno od Ernad Husremović prije oko 13 godina

where će pobrisati u ovom slučaju ništa, ali bi u slučaju neke nekonzistencije izbrisao neki dupli zapis sa identifikatorom (idradn, mjesec, godina)

Akcije #23

Izmjenjeno od Ernad Husremović prije oko 13 godina

mislim da si jednu veoma bitnu stvari ispustio iz "priče" ... to je stavljanje ovih polja where_block, fields u gADBF-s ...

Akcije #25

Izmjenjeno od Ernad Husremović prije oko 13 godina

AADD( gaDbfs, { F_SIFK  , "SIFK"  , "sifk", { |param| sifk_from_sql_server(param) }, "IDS", 

{"id", "oznaka"},   <<<<<<< fields

{ |x| "ID=" + _sql_quote(x["id"]) + " AND OZNAKA=" + _sql_quote(x["oznaka"]) }, <<<<<<< were_block

"ID2" })  <<<<<<<<<< INDEX TAG
Akcije #26

Izmjenjeno od Ernad Husremović prije oko 13 godina

sifv:

AADD( gaDbfs, { F_SIFV , "SIFV"  , "sifv", { | param | sifv_from_sql_server( param ) }, "IDS", 

{"id", "oznaka", "idsif", "naz"},    <<<<<<<<< fields koja identificiraju zapis tabele

{ |x| "ID=" + _sql_quote(x["id"]) + " AND OZNAKA=" + _sql_quote(x["oznaka"]) + " AND IDSIF=" + _sql_quote(x["idsif"] + " AND NAZ=" + _sql_quote(x["naz"])) },   <<<<<<<< where_block

"ID" }) <<<<<<<<< INDEX TAG
Akcije #27

Izmjenjeno od Ernad Husremović prije oko 13 godina

to znači, kada jednom staviš u gADBFs za tabelu ld_krediti odgovarajući fields, where_block, index tag

više to ne moraš navoditi u update_server_dbf_and_rec funkciji

Akcije #28

Izmjenjeno od Saša Vranić prije oko 13 godina

ah da...

evo to bi trebalo biti ovako:

https://github.com/knowhow/F18_knowhow/blob/c1d6da18a02ccccc4e7/ld/ld_krediti.prg#L118

sad sam vidio to za gadbfs i where, ok, ubacit ću tamo

Akcije #29

Izmjenjeno od Saša Vranić prije oko 13 godina

da, kod kredita je specifično to što imamo

  • idradn
  • idkred
  • naosnovu
  • godina
  • mjesec

praktično sva polja su identična sem mjeseca, tj. mjesec mora biti u where uslovu inače ću uvijek pobrisati sve

Akcije #30

Izmjenjeno od Ernad Husremović prije oko 13 godina

Saša Vranić je napisao/la:

da, kod kredita je specifično to što imamo

  • idradn
  • idkred
  • naosnovu
  • godina
  • mjesec

praktično sva polja su identična sem mjeseca, tj. mjesec mora biti u where uslovu inače ću uvijek pobrisati sve

hoćeš reći "identifikator".

Pretpostavljam da sva polja osim iznosa čine identifikator zapisa

Akcije #31

Izmjenjeno od Ernad Husremović prije oko 13 godina

Saša Vranić je napisao/la:

ah da...

evo to bi trebalo biti ovako:

https://github.com/knowhow/F18_knowhow/blob/c1d6da18a02ccccc4e7/ld/ld_krediti.prg#L118

kod koji si mi pokazao izgleda mi loše. imaš globalne varijable koje ti ne trebaju.

Ali i da ostanu globalne varijable kod mi izgleda neispravan.

kažeš


            _mjesec := nTekMj         <<<<<<<<<<<<< globalne varijable setuješ
            _godina := nTekGodina
            _idkred := cIdKred
            _iznos := nIRata
            _naosnovu := cOsnov

            _vals := get_dbf_global_memvars()  <<<<<<< ova će funkcija sve gornje varijable promijeniti i setovati ih vrijednostima iz dbf polja tako da je gornji kod van funkcije !

            _fields := { "idradn", { "mjesec", 2 }, { "godina", 4 }, "idkred", "naosnovu" }
...

Akcije #33

Izmjenjeno od Saša Vranić prije oko 13 godina

ali cekaj malo

imamo:

set_dbf_global_memvars - kreira public varijable na osnovu strukture dbf-a

get_dbf_global_memvars - puni hash matricu iz vrijednosti public varijabli

nisi upravu !

Akcije #34

Izmjenjeno od Saša Vranić prije oko 13 godina

međutim, bilo kako bilo i sa ovim ispravljenim ovo ne radi uopšte !

evo grešaka

====================================================================================
F18 bug report: 27.12.11 13:13:08
====================================================================================
Verzija programa: 0.9.26 26.12.2011 0.9.91

Podsistem  : BASE
GenKod     :   1 OpSistKod:   0
Opis       : Argument error
ImeFajla   : 
Operacija  : STR
Argumenti  : 

CALL STACK:
--- --------------------------------------------------------------------------------
  1 (b)F18_INIT_APP / 77
  2 STR / 0
  3 (b)NOVIKREDIT / 136
  4 UPDATE_REC_SERVER_AND_DBF / 400
  5 NOVIKREDIT / 136
  6 (b)LD_KREDITI / 23
  7 MENU_SC / 985
  8 LD_KREDITI / 48
  9 (b)TLDMOD_MMENUSTANDARD / 114
 10 MENU_SC / 985
 11 TLDMOD:MMENUSTANDARD / 145
 12 TLDMOD:MMENU / 94
 13 TLDMOD:RUN / 149
 14 MAINLD / 31
 15 MAIN / 56
--- --------------------------------------------------------------------------------

/----- SERVER connection info: ---------- /

host/database/port/schema : localhost / bringout_test / 5432 / fmk
                     user : vsasa

F18 client required server db >=     : 4.0.8 / 40008
Actual knowhow ERP server db version : 4.0.8 / 40008

i ova:

====================================================================================
F18 bug report: 27.12.11 13:13:08
====================================================================================
Verzija programa: 0.9.26 26.12.2011 0.9.91

Podsistem  : BASE
GenKod     :   1 OpSistKod:   0
Opis       : Argument error
ImeFajla   : 
Operacija  : +
Argumenti  : 

CALL STACK:
--- --------------------------------------------------------------------------------
  1 (b)F18_INIT_APP / 77
  2 (b)NOVIKREDIT / 136
  3 UPDATE_REC_SERVER_AND_DBF / 400
  4 NOVIKREDIT / 136
  5 (b)LD_KREDITI / 23
  6 MENU_SC / 985
  7 LD_KREDITI / 48
  8 (b)TLDMOD_MMENUSTANDARD / 114
  9 MENU_SC / 985
 10 TLDMOD:MMENUSTANDARD / 145
 11 TLDMOD:MMENU / 94
 12 TLDMOD:RUN / 149
 13 MAINLD / 31
 14 MAIN / 56
--- --------------------------------------------------------------------------------

/----- SERVER connection info: ---------- /

host/database/port/schema : localhost / bringout_test / 5432 / fmk
                     user : vsasa

F18 client required server db >=     : 4.0.8 / 40008
Actual knowhow ERP server db version : 4.0.8 / 40008

/---------- BEGIN PostgreSQL vars --------/

server_version           : 9.1.1
TimeZone                 : Europe/Skopje

/----------  END PostgreSQL vars --------/

USED() = false

== END OF BUG REPORT ==
Akcije #36

Izmjenjeno od Saša Vranić prije oko 13 godina

kreditni dio i dalje ne radi

Akcije #37

Izmjenjeno od Saša Vranić prije oko 13 godina

  • % završeno promijenjeno iz 0 u 30
Akcije #38

Izmjenjeno od Ernad Husremović prije oko 13 godina

Saša Vranić je napisao/la:

normalno, zato što _sql_quote() ne zna da radi sa numeričkim vrijednostima....

to nisam znao. mislio sam da zna.

Akcije #39

Izmjenjeno od Ernad Husremović prije oko 13 godina

Ernad Husremovic
retab radi vsasa
Ernad Husremovic
set fileencoding=utf-8,  gdje je moguće
Ernad Husremovic
govorim o ld_krediti.prg
Ernad Husremovic
set order to 2 
Ernad Husremovic
ne smije ostajati
Ernad Husremovic
treba biti set order to TAG "2" 
Ernad Husremovic
poredak fields mora biti 
Ernad Husremovic
u skladu sa tagom
Ernad Husremovic
 //"2","idradn+idkred+naosnovu+str(godina)+str(mjesec)" 
2:25 PM
vzeljka
ok
vsasa
ok, onda ću se prebaciti na rg
vsasa
eto sam ubacio u a_dbfs ove dodatne uslove matrice
Ernad Husremovic
vrati to
Ernad Husremovic
ja radim na tome rekao sam ti
Akcije #40

Izmjenjeno od Saša Vranić prije oko 13 godina

znam za ordere, nisam tu primjetio pa zato nisam ni ispravio

Akcije #41

Izmjenjeno od Ernad Husremović prije oko 13 godina

vazdan govorim uradi uradi i na kraju kada kažem ja preuzimam, ti uradiš svoju verziju.

ja dana ...

Akcije #42

Izmjenjeno od Ernad Husremović prije oko 13 godina

funkcije bibliotečne STR, VAL trebaju biti velikim slovima
negdje sam napisao

SEEK a+b+c => SEEK a + b + c

Akcije #43

Izmjenjeno od Ernad Husremović prije oko 13 godina

radi preglednosti koristiti

update_rec_server_and_dbf( "ld_radkr", _vals )

a ne

update_rec_server_and_dbf( nil, _vals )

Akcije #44

Izmjenjeno od Ernad Husremović prije oko 13 godina

SET ORDER TO TAG "1" 
SEEK STR(_godina, 4) + STR(_mjesec, 2) + _idradn
Akcije #45

Izmjenjeno od Ernad Husremović prije oko 13 godina

formatirati matrice kao što sam demonstrirao u o_f18

Akcije #46

Izmjenjeno od Ernad Husremović prije oko 13 godina

ne razbijati matrice. imaš editor koji to radi:

AADD(gaDBFs, { F_RADKR  , "RADKR"   , "ld_radkr", { |alg| ld_radkr_from_sql_server(alg) }, "IDS", { "idradn", "idkred", "naosnovu", {"godina", 4}, {"mjesec", 2 } }, {|x| "idradn=" + _sql_quote(x["idradn"]) + " and mjesec=" + STR(x["mjesec"], 2) + " and godina=" + STR(x["godina"], 4) +i" and idkred=" + _sql_quote(x["idkred"]) + " and naosnovu=" + _sql_quote(x["naosnovu"]) }, "2" } )

Akcije #47

Izmjenjeno od Ernad Husremović prije oko 13 godina

SQL izraze piši velikim slovima SELECT, AND, WHERE

Akcije #49

Izmjenjeno od Ernad Husremović prije oko 13 godina

_vals - nije uopšte deklarisana lokalna varijabla, masa varijabli koje su privatne komotno mogu biti prebačene na lokalne.

Ova funkcija NoviKredit je morala prvo proći refactoring. Pogrešno je rađeno u startu.

Akcije #50

Izmjenjeno od Ernad Husremović prije oko 13 godina

fmk ini zamijeniti sa db parametrima

Akcije #51

Izmjenjeno od Ernad Husremović prije oko 13 godina

delete zapisa nije korištena funkcija delete_rec_server_and_dbf

Akcije #54

Izmjenjeno od Saša Vranić prije oko 13 godina

  • Status promijenjeno iz Novo u Dodijeljeno
Akcije #55

Izmjenjeno od Saša Vranić prije skoro 13 godina

  • Status promijenjeno iz Dodijeljeno u Zatvoreno

ovo je manje više očišćeno sve

Akcije

Također dostupno kao Atom PDF