Do not let any software impress you!

Only let it convince your intellect.
Slider img 1
Do not look for a business paradise!

It is a waste of time.
Slider img 2
Only yourself can push you uphill.

There is no easy road to prizes.
Slider img 3
Productivity is the name of the game.

And you have to conquer it.
Slider img 4
As long as you understand it,

you will start to build your know-how.
Slider img 5
We can help with that.

We have the tools and the method.
Slider img 6

Title
Quantity
Unit
Code
Price
Amount
VAT
VAT
Disc
Lot
Serial Num
Exp Date
OK
Goods to Import
Currency
Total Net Value
VAT
Total
Date
Number
Event Type
Supplier
To Warehouse
Budget

Title : Purchase Receive

Toolbars

call BrowseEditInsert()
call BrowseEditDoVKUp(fld_id,fld_val,key)
call BrowseEditDoVKDown(fld_id,fld_val,key)
call BrowseEditInsertSame()
call BrowseEditDelete()
call CloseForm(True)
call CloseForm(False)

Buttons

Fields


 (AU_UNITMEAS.CODE)
 (AU_KE_GOOD.SERIAL_NUMBER)
 (AU_KE_GOOD.EXPIR_DATE)
 (AU_KE_GOOD.DISCOUNT)
 (AU_GOOD_CODE.CODE)
 (AU_GOOD_CODE.DESCR)
 (AU_KE_GOOD.LOT_NUM)
 (AU_KE_GOOD.ORDER_CLOSE_FLAG)
 (AU_KE_GOOD.QUANT)
 (AU_KE_GOOD.PRICE)
 (AU_KE_GOOD.VAT_PC)
 (AU_KE_GOOD.AMOUNT)
 (AU_KE_GOOD.VAT)
Currency (AU_CURRENCY.CCODE)
Total Net Value (AU_EVENT.AMOUNT)
VAT (AU_EVENT.VAT)
Total (AU_EVENT.TOTAL_AMOUNT)
Date (AU_EVENT.DATE)
Number (AU_EVENT.NUMBER)
Event Type (AU_T_EVENT.DESCR)
Supplier (AU_BUSINESS.TITLE)
To Warehouse (AU_WAREHOUSE.DESCR)
Budget (AU_EVENT.BUDGET_FLAG)


AutoScript

lib

proc Form_Start()

     f = TopForm()
     ft = FormTask(f)
     pe = PByName(f,"AU_EVENT")
     te = TByName(pe,"AU_EVENT")
     pg = PByName(f,"AU_KE_GOOD")
     tg = TByName(pg,"AU_KE_GOOD")

     pevent = __params[6]                    {.......παραγγελια προς προμηθευτη}

     {......................set fixed values for this minimal parastatiko!!!........}
     if (ft = ptAppend) then

        str = SelectFrom("SELECT AU_T_EVENT, DESCR FROM AU_T_EVENT WHERE (CODE='AU_INVOICE')")
        tevent = GetSQLSelectItem(str,1)
        tevent_descr = GetSQLSelectItem(str,2)

        sql = strcatln("SELECT AU_CURRENCY.AU_CURRENCY, AU_CURRENCY.CCODE")
        sql = strcatln(sql,"FROM AU_COMPANY INNER JOIN AU_CURRENCY ON AU_COMPANY.AU_CURRENCY = AU_CURRENCY.AU_CURRENCY")
        str = SelectFrom(sql)
        cur_id = GetSQLSelectItem(str,1)
        cur_code = GetSQLSelectItem(str,2)

        sql = strcatln("SELECT AU_WAREHOUSE.AU_WAREHOUSE, AU_WAREHOUSE.DESCR")
        sql = strcatln(sql,"FROM AU_COMPANY INNER JOIN AU_WAREHOUSE ON AU_COMPANY.AU_WAREHOUSE = AU_WAREHOUSE.AU_WAREHOUSE")
        str = SelectFrom(sql)
        wh_id = GetSQLSelectItem(str,1)
        wh_name = GetSQLSelectItem(str,2)

        call TEdit(te)
        call TSetFld(te,"DATE",crDate)
        call TSetFld(te,"AU_T_EVENT",tevent)
        call TSetFld(te,"F_AU_T_EVENT_DESCR",tevent_descr)
        call TSetFld(te,"AU_CURRENCY",cur_id)
        call TSetFld(te,"F_AU_CURRENCY_CCODE",cur_code)
        call TSetFld(te,"TO_WAREHOUSE",wh_id)
        call TSetFld(te,"F_TO_WAREHOUSE_DESCR",wh_name)
        call TSetFld(te,"EVENT_E",pevent)
        pros_id = LookUpId("AU_EVENT",pevent,"BUSINESS_FROM")
        pros_d = LookUpId("AU_BUSINESS",pros_id,"TITLE")
        call TSetFld(te,"BUSINESS_FROM",pros_id)
        call TSetFld(te,"F_BUSINESS_FROM_TITLE",pros_d)
        call TPost(te)

        start_sql "*" "KOSMOS"
         SELECT AU_KE_GOOD.*, AU_GOOD_CODE.DESCR AS DESCR1, AU_GOOD_CODE.CODE,
         AU_EVENT_PURCH.QUANT2 AS Q2, AU_EVENT_PURCH.QUANT1, AU_EVENT_PURCH.QUANT2
         FROM (AU_GOOD_CODE INNER JOIN AU_KE_GOOD
         ON AU_GOOD_CODE.AU_GOOD_CODE = AU_KE_GOOD.AU_GOOD_CODE)
         INNER JOIN AU_EVENT_PURCH ON AU_GOOD_CODE.AU_GOOD = AU_EVENT_PURCH.AU_GOOD
         WHERE (AU_KE_GOOD.AU_EVENT = :EV)
         AND (AU_EVENT_PURCH.DONE_FLAG = '0')
         AND (AU_EVENT_PURCH.ORDER_EVENT = :EV1)
        end_sql
        q = QueryByName()
        call TSetParam(q,"EV",pevent)
        call TSetParam(q,"EV1",pevent)
        call TExecute(q)
        count = TRecordCount(q)

        call TFirst(q)
        for i = 1 to count
         eidh0 = TGetFld(q,"AU_GOOD")
         eidh0cid = TGetFld(q,"AU_GOOD_CODE")
         eidh0_d = TGetFld(q,"DESCR1")
         eidh0_c = TGetFld(q,"CODE")
         posot2 = TGetFld(q,"Q2")

         price = TGetFld(q,"PRICE")
         amount = TGetFld(q,"AMOUNT")
         mm = TGetFld(q,"AU_UNITMEAS")
         mm_c = LookUpId("AU_UNITMEAS",mm,"CODE")

         call TAppend(tg)
         call TSetFld(tg,"EVENT_ORDER",pevent)
         call TSetFld(tg,"AU_GOOD",eidh0)
         call TSetFld(tg,"AU_GOOD_CODE",eidh0cid)
         call TSetFld(tg,"F_AU_GOOD_CODE_DESCR",eidh0_d)
         call TSetFld(tg,"F_AU_GOOD_CODE_CODE",eidh0_c)
         call TSetFld(tg,"QUANT",posot2)
         call TSetFld(tg,"PRICE",price)
         call TSetFld(tg,"AMOUNT",amount)
         call TSetFld(tg,"AU_UNITMEAS",mm)
         call TSetFld(tg,"F_AU_UNITMEAS_CODE",mm_c)
         call TPost(tg)

         call TNext(q)
        next
        call FreeEmbSQL(q)

        call ReLoadEditFields(f)
     endif
     if (ft = ptEdit) then

        {...................................all items must belong to the same order!!!}
        event_id = TGetFld(te,"AU_EVENT")
        pevent = SelectFrom("SELECT EVENT_ORDER FROM AU_KE_GOOD WHERE (AU_EVENT=",event_id,") AND (EVENT_ORDER > 0)")

     endif

     call SetCaption("Goods Receipt")

end

proc posot_exit()

     line = TRecNo(tg)
     line = line - 1

     posot = TGetFld(tg,"QUANT")
     timi = TGetFld(tg,"PRICE")
     ekpt = TGetFld(tg,"DISCOUNT")
     vat_pc = TGetFld(tg,"VAT_PC")
     axia = posot*timi - posot * timi*ekpt/100
     vat     = axia*vat_pc/100
     amount = axia

     call TEdit(tg)
     call TSetFld(tg,"AMOUNT",amount)
     call TSetFld(tg,"VAT",vat)
     call TPost(tg)

     call ReLoadEditFields(f;pg;line)
     call ReLoadEditFields(f)

end

{============================== get_total ================================}

fun get_total()

    rcount = TRecordCount(tg)
    recno = TRecNo(tg)

    total = 0
    call TFirst(tg)
    for i = 1 to rcount
        am = TGetFld(tg,"AMOUNT")
        vat = TGetFld(tg,"VAT")

        total = total + am + vat

        call TNext(tg)
    next

    call TGotoCurRow(tg,recno)

    result = total

end

{============================== get_amount ================================}

fun get_amount()

    rcount = TRecordCount(tg)
    recno = TRecNo(tg)

    total = 0
    call TFirst(tg)
    for i = 1 to rcount
        am = TGetFld(tg,"AMOUNT")

        total = total + am

        call TNext(tg)
    next

    call TGotoCurRow(tg,recno)

    result = total

end

{============================== get_vat ================================}

fun get_vat()

    rcount = TRecordCount(tg)
    recno = TRecNo(tg)

    total = 0
    call TFirst(tg)
    for i = 1 to rcount
        vat = TGetFld(tg,"VAT")

        total = total + vat

        call TNext(tg)
    next

    call TGotoCurRow(tg,recno)

    result = total

end

{============================== set_discount ================================}

proc set_discount()

     disc = TGetFld(t,"DISCOUNT")

     rcount = TRecordCount(tg)

     call TFirst(tg)
     for i = 1 to rcount

         posot = TGetFld(tg,"QUANT")
         timi = TGetFld(tg,"PRICE")
         fpa = TGetFld(tg,"VAT_PC")
         axia = posot*timi -posot * timi*disc/100
       ` axia = axia

         call TEdit(tg)
         call TSetFld(tg,"DISCOUNT",disc)
         call TSetFld(tg,"AMOUNT",axia)
         call TPost(tg)

         call TNext(tg)
      next

      call ReLoadEditFields(f)

end

fun get_date()

    result = iif(AU_EVENT!DATE<>"", AU_EVENT!DATE, crDate)

end

{============================ Form_OnSelect ===========================}

proc Form_OnSelect (tname, fldname, str, tt, oldstr, sq )

     if (tname = "AU_GOOD_CODE") then
        good_id = SelectFrom("SELECT AU_GOOD FROM AU_GOOD_CODE WHERE (AU_GOOD_CODE=",str,")")

        call TEdit(tt)
        call TSetFld(tt,"AU_GOOD",good_id)
        call TPost(tt)
        call ReLoadEditFields(f)
     endif
end

{============================== Form_BeforeClose ==========================}

fun Form_BeforeClose()

    result = 1

    count = TRecordCount(tg)

    call TFirst(tg)
    pevent = val(pevent)    {....in case of additional quantity later on }
                         {....at event s modification}
    if (pevent = 0) then
       pevent = TGetFld(tg,"EVENT_ORDER") {...check the first row}
    endif

    for i = 1 to count

        if (pevent > 0) then
         call TEdit(tg)
         call TSetFld(tg,"EVENT_ORDER",pevent)
         call TPost(tg)

        endif

        done_flag = TGetFld(tg,"ORDER_CLOSE_FLAG")
        done_flag = val(done_flag)

        if (done_flag = 0) then

         start_sql "*" "KOSMOS"
                SELECT AU_GOOD_CODE.DESCR, AU_GOOD_CODE.CODE, AU_EVENT_PURCH.QUANT2
                FROM (AU_GOOD_CODE INNER JOIN AU_KE_GOOD
                ON AU_GOOD_CODE.AU_GOOD_CODE = AU_KE_GOOD.AU_GOOD_CODE)
                INNER JOIN AU_EVENT_PURCH ON AU_GOOD_CODE.AU_GOOD = AU_EVENT_PURCH.AU_GOOD
                WHERE (AU_KE_GOOD.AU_EVENT = :EV)
                AND (AU_EVENT_PURCH.DONE_FLAG = '0')
                AND (AU_EVENT_PURCH.ORDER_EVENT = :EV1)
         end_sql
         q = QueryByName()
         call TSetParam(q,"EV",pevent)
         call TSetParam(q,"EV1",pevent)
         call TExecute(q)
         call TFirst(q)

         quant_req = TGetFld(q,"QUANT2")
         quant_ev = TGetFld(tg,"QUANT")
         res = quant_req - quant_ev
         call FreeEmbSQL(q)

         if (res >= 0) then

         flag = message_yes_no("Keep order open?")

         if (flag = 0) then

                 call TEdit(tg)
                 call TSetFld(tg,"ORDER_CLOSE_FLAG",1)
                 call TPost(tg)
                 call ReLoadEditFields(f)
         endif
         endif
        endif

        call TNext(tg)
    next

return
    f     = TopForm()
    fname = GetResName(f)

    tev = TGetFld(tg;"AU_T_EVENT")
    diak = LookUp("AU_T_EVENT";"AU_T_EVENT";tev;"DIAK_AXION";"")

    rcount = TRecordCount(tg)
    call TFirst(tg)

    for i = 1 to rcount
        eid = TGetFld(tg;"AU_GOOD")

        pos = TGetFld(tg;"QUANT")
        axi = TGetFld(tg;"AMOUNT")

        if (eid = 0) then
         call message("Move without Good!")
         result = 0
         return
        endif

        if (pos = 0) then
         call message("Move without Quantity!")
         result = 0
         return
        endif

        if (diak = 1) then
         if (axi = 0) then
         call message("Move without Amount!")
         result = 0
         return
         endif
        endif

        call TNext(tg)
    next

    endif

end