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

Product
Qty
UOM
Product ID
Serial No
Lot No
Expir Date
Num
Budged
Date
To Location
From Location
Event Type
Products to Transfer

Title : Product Transfer

Toolbars

call BrowseEditDelete()
call CloseForm(True)
call CloseForm(False)

Buttons

Fields


 (AU_KE_GOOD.SERIAL_NUMBER)
 (AU_UNITMEAS.CODE)
 (AU_GOOD.TITLE)
 (AU_GOOD.CODE)
 (AU_KE_GOOD.LOT_NUM)
 (AU_KE_GOOD.EXPIR_DATE)
 (AU_KE_GOOD.QUANT)
Num (AU_EVENT.NUMBER)
Budged (AU_EVENT.BUDGET_FLAG)
Date (AU_EVENT.DATE)
To Location (AU_WAREHOUSE.DESCR)
From Location (AU_WAREHOUSE.DESCR)
Event Type (AU_T_EVENT.DESCR)


AutoScript

lib

{================================== Form_Start ==============================}

proc Form_Start()

     f = TopForm()
     task = FormTask(f)
     p = PByName(f,"AU_EVENT")
     t = TByName(p,"AU_EVENT")
     p_synt = PByName(f,"AU_KE_GOOD")
     t_synt = TByName(p_synt,"AU_KE_GOOD")

     call SetCaption("Product Transfer")

     {......................................selection lists..............}
     start_sql "DESCR_SEL" "KOSMOS"
       SELECT AU_T_EVENT.DESCR, AU_T_EVENT.AU_T_EVENT
       FROM AU_KEVENT INNER JOIN AU_T_EVENT
       ON AU_KEVENT.AU_KEVENT = AU_T_EVENT.KEVENT1
       WHERE (AU_T_EVENT.KEVENT1=2)
       AND (AU_T_EVENT.MOVE_GOODS_FLAG = '1')
       AND (AU_T_EVENT.DESCR LIKE :E & '%')
       ORDER BY AU_T_EVENT.DESCR
     end_sql
     start_sql "UOM_SEL" "KOSMOS"
       SELECT AU_UNITMEAS.CODE, AU_UNITMEAS.AU_UNITMEAS
       FROM AU_GOOD_UNITMEAS INNER JOIN AU_UNITMEAS
       ON AU_GOOD_UNITMEAS.AU_UNITMEAS = AU_UNITMEAS.AU_UNITMEAS
       WHERE (AU_UNITMEAS.CODE LIKE :E & '%')
       AND (AU_GOOD_UNITMEAS.AU_GOOD = :G)
       ORDER BY AU_UNITMEAS.CODE
     end_sql

     if (task = ptAppend) then

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

        call TEdit(t)
        call TSetFld(t,"DATE",crDate)
        call TSetFld(t,"AU_T_EVENT",tevent)
        call TSetFld(t,"F_AU_T_EVENT_CODE",tevent_code)
        call TSetFld(t,"F_AU_T_EVENT_DESCR",tevent_descr)
        call TSetFld(t,"EVENT_E",pevent)
        call TPost(t)

        call ReLoadEditFields(f)

     endif

end

proc Select_DESCR_SEL_Params()

   s = GetEditedText()
   call ParamsEmbSQL("DESCR_SEL";s)

end

proc Select_UOM_SEL_Params()

   good_id = TGetFld(t_synt,"AU_GOOD")
   s = GetEditedText()
   call ParamsEmbSQL("UOM_SEL",s,good_id)

end

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

fun Form_BeforeClose()

    result = 1

    whouse1 = TGetFld(t,"FROM_WAREHOUSE")
    whouse2 = TGetFld(t,"TO_WAREHOUSE")
    whouse2_d = TGetFld(t,"F_TO_WAREHOUSE_DESCR")
    whouse1 = val(whouse1)
    whouse2 = val(whouse2)
    if (whouse1 = 0) or (whouse2 = 0) then
       result = 0
       call message("You must complete both warehouses!")
       return
    endif

    {..............check for au_ke_good valitity}
    count = TRecordCount(t_synt)
    call TFirst(t_synt)
    for i = 1 to count
        id = TGetFld(t_synt,"AU_GOOD")
        id = val(id)
        if (id = 0) then
         call message("Line ",i," misses good!")
         result = 0
        endif

        qnt = TGetFld(t_synt,"QUANT")
        qnt = val(qnt)
        if (qnt = 0) then
         call message("Line ",i," misses quantity!")
         result = 0
        endif

        id = TGetFld(t_synt,"AU_UNITMEAS")
        id = val(id)
        if (id = 0) then
         call message("Line ",i," misses unit!")
         result = 0
        endif

        call TNext(t_synt)
    next

    if (result = 0) then
       return
    endif

    tevent = TGetFld(t,"AU_T_EVENT")

    if (task = ptAppend) then {...consume the previous!!}

       consume_flag = message_yes_no("Do you want Existing Quantities to be Consumed?")
       if (consume_flag = 1) then

         count = TRecordCount(t_synt)
         call TFirst(t_synt)
         k = 1
         for i = 1 to count
         {.............save values..................}
         c_id[i] = TGetFld(t_synt,"AU_GOOD")
         c_code[i] = TGetFld(t_synt,"F_AU_GOOD_CODE")
         c_title[i] = TGetFld(t_synt,"F_AU_GOOD_TITLE")
         c_uid[i] = TGetFld(t_synt,"AU_UNITMEAS")
         c_ucode[i] = TGetFld(t_synt,"F_AU_UNITMEAS_CODE")

         start_sql "*" "KOSMOS"
                 SELECT AU_CATEGORY_ITEM.TITLE AS CATITLE, AU_CATEGORY_ENT.TNAME, AU_GOOD_TYPE.AU_GOOD_TYPE_D, AU_GOOD.AU_GOOD,
                 AU_GOOD.TITLE, AU_GOOD.CODE, AU_GOOD_TYPE.STYPE, AU_GOOD.AU_POSTINGFORM, AU_T_GOOD.DESCR AS TDESCR,
                 AU_GOOD_SUM.QUANT, AU_GOOD_SUM.QUANT_P, AU_WAREHOUSE.DESCR AS WDESCR, AU_UNITMEAS.CODE AS UCODE,
                 AU_GOOD_SUM.YA_POS, AU_GOOD_SUM.SERIAL_NUMBER, AU_GOOD_SUM.EXP_DATE, AU_GOOD_SUM.LOT_NUM,
                 AU_WAREHOUSE.AU_WAREHOUSE, AU_UNITMEAS.AU_UNITMEAS, AU_GOOD_SUM.AU_GOOD_SUM
                 FROM AU_CATEGORY_ITEM RIGHT JOIN ((((((AU_GOOD LEFT JOIN AU_GOOD_TYPE
                 ON AU_GOOD.AU_GOOD_TYPE = AU_GOOD_TYPE.AU_GOOD_TYPE) LEFT JOIN AU_T_GOOD
                 ON AU_GOOD.AU_T_GOOD = AU_T_GOOD.AU_T_GOOD) LEFT JOIN AU_GOOD_SUM
                 ON AU_GOOD.AU_GOOD = AU_GOOD_SUM.AU_GOOD) LEFT JOIN AU_WAREHOUSE
                 ON AU_GOOD_SUM.AU_WAREHOUSE = AU_WAREHOUSE.AU_WAREHOUSE) LEFT JOIN AU_UNITMEAS
                 ON AU_GOOD_SUM.AU_UNITMEAS = AU_UNITMEAS.AU_UNITMEAS) LEFT JOIN AU_CATEGORY_ENT
                 ON AU_GOOD.AU_GOOD = AU_CATEGORY_ENT.RID)
                 ON AU_CATEGORY_ITEM.AU_CATEGORY_ITEM = AU_CATEGORY_ENT.AU_CATEGORY_ITEM
                 WHERE ((AU_CATEGORY_ENT.TNAME='AU_GOOD') OR (AU_CATEGORY_ENT.TNAME IS NULL))
                 AND (AU_GOOD_SUM.REC_TYPE = '2')
                 AND (AU_WAREHOUSE.AU_WAREHOUSE = :W)
                 AND (AU_GOOD.AU_GOOD = :G)
                 AND (AU_GOOD_SUM.QUANT > 0)
         end_sql
         q1 = QueryByName()
         call TSetParam(q1,"G",c_id[i])
         call TSetParam(q1,"W",whouse2)
         call TExecute(q1)
         count1 = TRecordCount(q1)
         call TFirst(q1)
         for j=1 to count1

                 c_id[k] = c_id[i]
                 c_code[k] = c_code[i]
                 c_title[k] = c_title[i]
                 c_uid[k] = c_uid[i]
                 c_ucode[k] = c_ucode[i]
                 c_ser[k] = TGetFld(q1,"SERIAL_NUMBER")
                 c_lot[k] = TGetFld(q1,"LOT_NUM")
                 c_exp[k] = TGetFld(q1,"EXP_DATE")
                 c_qnt[k] = TGetFld(q1,"QUANT")
                 c_uid[k] = TGetFld(q1,"AU_UNITMEAS")
                 c_ucode[k] = TGetFld(q1,"UCODE")

                 k = k + 1

                 call TNext(q1)
         next
         call FreeEmbSQL(q1)

         call TNext(t_synt)
         next
         count = k - 1

       endif
   endif

end

{================================== Form_End ==========================}

proc Form_End ( uvalue )

     if (task = ptAppend) then

        if (consume_flag = 1) then

         call OpenFormTop("ptAppend";"AU_GOOD_CONSMOVE_E.FM";"WORK.AU_EVENT";1;"?=AU_EVENT","ADD_GOODS")

         fm = FByResName("AU_GOOD_CONSMOVE_E.FM")
         pm0 = PByName(fm,"AU_EVENT")
         tm0 = TByName(pm0,"AU_EVENT")

         call TEdit(tm0)
         call TSetFld(tm0,"FROM_WAREHOUSE",whouse2)
         call TSetFld(tm0,"F_FROM_WAREHOUSE_DESCR",whouse2_d)
         call TPost(tm0)

         pm = PByName(fm,"AU_KE_GOOD")
         tm = TByName(pm,"AU_KE_GOOD")

         for i = 1 to count

         call TAppend(tm)
         call TSetFld(tm,"AU_GOOD",c_id[i])
         call TSetFld(tm,"F_AU_GOOD_CODE",c_code[i])
         call TSetFld(tm,"F_AU_GOOD_TITLE",c_title[i])
         call TSetFld(tm,"SERIAL_NUMBER",c_ser[i])
         call TSetFld(tm,"LOT_NUM",c_lot[i])
         call TSetFld(tm,"EXPIR_DATE",c_exp[i])
         call TSetFld(tm,"QUANT",c_qnt[i])
         call TSetFld(tm,"AU_UNITMEAS",c_uid[i])
         call TSetFld(tm,"F_AU_UNITMEAS_CODE",c_ucode[i])
         call TPost(tm)

         next
         call ReloadEditFields(fm)

       endif

     endif

end