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 ID
Qty
UOM
Product
Serial No
Lot No
Date
Event Type
Supplier
To Location
Products Received
Num

Title : Product Transfer

Toolbars

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

Buttons

Fields


 (AU_KE_GOOD.QUANT)
 (AU_UNITMEAS.CODE)
 (AU_KE_GOOD.SERIAL_NUMBER)
 (AU_KE_GOOD.LOT_NUM)
 (AU_GOOD_CODE.DESCR)
 (AU_GOOD_CODE.CODE)
Date (AU_EVENT.DATE)
Event Type (AU_T_EVENT.DESCR)
Supplier (AU_BUSINESS.TITLE)
To Location (AU_WAREHOUSE.DESCR)
Num (AU_EVENT.NUMBER)


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_GOOD_UNITMEAS.AU_GOOD = :G)
       AND (AU_UNITMEAS.CODE LIKE :E & '%')
       ORDER BY AU_UNITMEAS.CODE
     end_sql
     start_sql "GOOD_SEL_CODE" "KOSMOS"
        SELECT AU_GOOD_CODE.CODE, AU_GOOD_CODE.DESCR, AU_GOOD.AU_GOOD,
        AU_GOOD_CODE.AU_GOOD_CODE
        FROM AU_GOOD_CODE INNER JOIN AU_GOOD ON AU_GOOD_CODE.AU_GOOD = AU_GOOD.AU_GOOD
        WHERE (AU_GOOD_CODE.CODE LIKE :E & '%')
        AND (AU_GOOD_CODE.AU_BUSINESS = :B)
        ORDER BY AU_GOOD_CODE.CODE
     end_sql
     start_sql "GOOD_SEL_TITLE" "KOSMOS"
        SELECT AU_GOOD_CODE.DESCR, AU_GOOD_CODE.CODE, AU_GOOD.AU_GOOD,
        AU_GOOD_CODE.AU_GOOD_CODE
        FROM AU_GOOD_CODE INNER JOIN AU_GOOD ON AU_GOOD_CODE.AU_GOOD = AU_GOOD.AU_GOOD
        WHERE (AU_GOOD_CODE.DESCR LIKE :E & '%')
        AND (AU_GOOD_CODE.AU_BUSINESS = :B)
        ORDER BY AU_GOOD_CODE.DESCR
     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)

        mode = __params[6]
        pevent = __params[7]                 {.......production order}

        if (mode = "PORDER1_MODE") then
         start_sql "*" "KOSMOS"
         SELECT * FROM AU_KE_GOOD
         WHERE (AU_EVENT = :EV)
         AND (COEF = -1)
         end_sql
        endif
        if (mode = "PORDER2_MODE") then
         start_sql "*" "KOSMOS"
         SELECT * FROM AU_KE_GOOD
         WHERE (AU_EVENT = :EV)
         AND (COEF = 1)
         end_sql
        endif
        q = QueryByName()
        call TSetParam(q,"EV",pevent)
        call TExecute(q)
        count = TRecordCount(q)

        call TFirst(q)
        for i = 1 to count
         eidh0 = TGetFld(q,"AU_GOOD")
         eidh0_d = LookUpId("AU_GOOD",eidh0,"TITLE")
         eidh0_c = LookUpId("AU_GOOD",eidh0,"CODE")
         if (mode = "PORDER1_MODE") then
         posot = TGetFld(q,"QUANT2")
         endif
         if (mode = "PORDER2_MODE") then
         posot = TGetFld(q,"QUANT")
         endif
         mm = TGetFld(q,"AU_UNITMEAS")
         mm_c = LookUpId("AU_UNITMEAS",mm,"CODE")
         whouse = TGetFld(q,"WAREHOUSE")

         call TAppend(t_synt)
         call TSetFld(t_synt,"AU_GOOD",eidh0)
         call TSetFld(t_synt,"F_AU_GOOD_TITLE",eidh0_d)
         call TSetFld(t_synt,"F_AU_GOOD_CODE",eidh0_c)
         call TSetFld(t_synt,"QUANT",posot)
         call TSetFld(t_synt,"AU_UNITMEAS",mm)
         call TSetFld(t_synt,"F_AU_UNITMEAS_CODE",mm_c)
         call TPost(t_synt)

         call TNext(q)
        next
        call FreeEmbSQL(q)

        call TEdit(t)
        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)
        if (mode = "PORDER1_MODE") then
         call TSetFld(t,"TO_WAREHOUSE",whouse)
         descr = LookUpId("AU_WAREHOUSE",whouse,"DESCR")
         call TSetFld(t,"F_TO_WAREHOUSE_DESCR",descr)
        endif
        if (mode = "PORDER2_MODE") then
         call TSetFld(t,"FROM_WAREHOUSE",whouse)
         descr = LookUpId("AU_WAREHOUSE",whouse,"DESCR")
         call TSetFld(t,"F_FROM_WAREHOUSE_DESCR",descr)
        endif
        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",good_id,s)

end

proc Select_GOOD_SEL_TITLE_Params()

   bus_id = TGetFld(t,"BUSINESS_FROM")
   bus_id = val(bus_id)
   if (bus_id = 0) then
      call message("Select Supplier!")
      return
   endif
   s = GetEditedText()
   call ParamsEmbSQL("GOOD_SEL_TITLE",s,bus_id)

end

proc Select_GOOD_SEL_CODE_Params()

   bus_id = TGetFld(t,"BUSINESS_FROM")
   bus_id = val(bus_id)
   if (bus_id = 0) then
      call message("Select Supplier!")
      return
   endif
   s = GetEditedText()
   call ParamsEmbSQL("GOOD_SEL_CODE",s,bus_id)

end

{=================================== quant_exit ==================================}

proc quant_exit()

     synt_id = TGetFld(t,"AU_PROD_FORM")
     eposot = TGetFld(t,"QUANT")
     eposot0 = LookUpId("AU_PROD_FORM",synt_id,"PQUANT")

     start_sql "*" "KOSMOS"
       SELECT * FROM AU_PROD_FORM_GOOD
       WHERE (AU_PROD_FORM = :F)
     end_sql
     q = QueryByName()
     call TSetParam(q,"F",synt_id)
     call TExecute(q)
     count_synt = TRecordCount(q)

     call TFirst(q)
     for i = 1 to count_synt

         eidh0 = TGetFld(q,"AU_GOOD")
         descr = LookUpId("AU_GOOD",eidh0,"TITLE")
         unit_id = TGetFld(q,"AU_UNITMEAS")
         unit_descr = LookUpId("AU_UNITMEAS",unit_id,"DESCR")
         spc0 = TGetFld(q,"SPC")
         spc        = spc0 * eposot / eposot0

         call TAppend(t_synt)
         call TSetFld(t_synt,"AU_GOOD",eidh0)
         call TSetFld(t_synt,"F_AU_GOOD_TITLE",descr)
         call TSetFld(t_synt,"AU_UNITMEAS",unit_id)
         call TSetFld(t_synt,"F_AU_UNITMEAS_DESCR",unit_descr)
         call TSetFld(t_synt,"QUANT",spc)
         call TSetFld(t_synt,"COEF","-1")
         call TPost(t_synt)

         call TNext(q)
     next
     call FreeEmbSQL(q)

     eidh0      = LookUpId("AU_PROD_FORM",synt_id,"AU_GOOD")
     descr      = LookUpId("AU_GOOD",eidh0,"TITLE")
     unit_id = TGetFld(t,"AU_UNITMEAS")
     unit_descr = LookUpId("AU_UNITMEAS",unit_id,"DESCR")

     call TAppend(t_synt)
     call TSetFld(t_synt,"AU_GOOD",eidh0)
     call TSetFld(t_synt,"F_AU_GOOD_TITLE",descr)
     call TSetFld(t_synt,"AU_UNITMEAS",unit_id)
     call TSetFld(t_synt,"F_AU_UNITMEAS_DESCR",unit_descr)
     call TSetFld(t_synt,"QUANT",eposot)
     call TSetFld(t_synt,"COEF","1")
     call TPost(t_synt)

     call ReLoadEditFields(f)

end

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

fun Form_BeforeClose()

    result = 1

    {..............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

end