Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public subroutine of_scrivi_dettagli (ref xxxu021_data_store_base ads_cnsg_fisle, ref xxxu021_data_store_base ads_cnsg_insert, ref xxxu021_data_store_base ads_joint, string as_c_cmp, integer ai_mese, integer ai_anno);/*
- Funzione :
- of_scrivi_dettagli(ads_cnsg_fisle, ads_cnsg_insert, ai_mese, ai_anno)
- Valore di Ritorno :
- Nessuno.
- Parametri :
- xxxu021_data_store_base ads_cnsg_fisle (DS con i dati da salvati nelle chiusure CNSG_FISLE_T190)
- xxxu021_data_store_base ads_cnsg_insert (DS con i dati da calcolare CNSG_FISLE_CDP_T191)
- xxxu021_data_store_base ads_joint (DS con i dati delle Joint PRTNR_CMP_T165)
- Integer ai_mese (Mese di riferimento) Non utilizzato
- Integer ai_anno (Anno di riferimento) Non utilizzato
- Descrizione :
- La funzione si preoccupa di calcolare i dati da inviare per il dettaglio del
- consegnato.
- */
- Long ll_chiusure, ll_riga, ll_find
- Double l_dbl_add, l_dbl_val
- String ls_c_prdt, ls_c_soc, ls_f100, ls_c_dest, ls_flag_joint, ls_old_filter, ls_find_string
- Integer li_mese, li_anno
- // Memorizza il filtro corrente per ripristinarlo alla fine
- ls_old_filter = ads_joint.Describe("Datawindow.Table.Filter")
- For ll_chiusure = 1 To ads_cnsg_fisle.RowCount()
- ls_c_prdt = ads_cnsg_fisle.GetItemString(ll_chiusure, "c_prdt")
- ls_c_soc = ads_cnsg_fisle.GetItemString(ll_chiusure, "c_soc")
- ls_c_dest = ads_cnsg_fisle.GetItemString(ll_chiusure, "c_dest")
- ls_f100 = ads_cnsg_fisle.GetItemString(ll_chiusure, "f_100")
- li_mese = ads_cnsg_fisle.GetItemNumber(ll_chiusure, "d_mes")
- li_anno = ads_cnsg_fisle.GetItemNumber(ll_chiusure,"d_anno")
- ads_joint.SetFilter("c_cmp = '" + as_c_cmp + "' and c_prdt = '" + ls_c_prdt + "'")
- ads_joint.Filter()
- // Stabilisce il valore di ls_flag_joint
- if (ls_c_soc = is_agip) And (ls_f100 = 'S') Then // Dato di stoccaggio
- ls_c_soc = ' '
- ls_flag_joint = 'T'
- else // Dato di produzione
- if ls_c_soc <> ' ' Then // Riga di partner
- // Cerco la soc. tra le partner
- ll_find = ads_joint.Find("c_soc = '"+ls_c_soc+"'",0,ads_joint.RowCount())
- // Se la trovo vado a testare il f_agip
- if ll_find > 0 Then
- if ads_joint.GetItemString(ll_find,"f_agip") = 'S' Then // Quota AGIP
- ls_flag_joint = 'Q'
- Else // Dato di Quota per Soc. div. da Agip
- ls_flag_joint = ' '
- End if
- Else
- ls_flag_joint = ' ' // Dato di quota per Soc. div. da Agip
- End if
- else // Riga 100%
- if ads_joint.RowCOunt() > 0 Then
- ls_flag_joint = 'J' // 100 % con presenza di Joint Ventures
- if ads_joint.RowCOunt() = 1 then // Caso unica riga AGIP al 100%
- if ads_joint.GetItemString(1,"f_agip") = 'S' then
- ls_flag_joint = 'T'
- end if
- end if
- Else
- ls_flag_joint = 'T' // 100 % senza Joint Ventures
- End if
- end if
- End if
- ls_find_string = "c_cmp = '" + as_c_cmp + "' And c_prdt = '"+ls_c_prdt+"' And c_soc = '"+ls_c_soc+ &
- "' And c_dest = '"+ls_c_dest+"' and f_100 = '"+ls_f100+"' And d_mes = "+&
- String(li_mese)+" And d_anno = "+String(li_anno)
- ll_find = ads_cnsg_insert.Find(ls_find_string,0,ads_cnsg_insert.RowCOunt())
- if ll_find = 0 Then
- ll_riga = ads_cnsg_insert.InsertRow(0)
- ads_cnsg_insert.SetITem(ll_riga,"c_cmp",as_c_cmp)
- ads_cnsg_insert.SetITem(ll_riga,"c_prdt",ls_c_prdt)
- ads_cnsg_insert.SetITem(ll_riga,"c_soc", ls_c_soc)
- ads_cnsg_insert.SetITem(ll_riga,"c_dest", ls_c_dest)
- ads_cnsg_insert.SetItem(ll_riga,"d_mes", li_mese)
- ads_cnsg_insert.SetITem(ll_riga,"d_anno", li_anno)
- ads_cnsg_insert.SetITem(ll_riga,"f_100", ls_f100)
- ads_cnsg_insert.SetItem(ll_riga,"f_jnt", ls_flag_joint)
- Else
- ll_riga = ll_find
- End if
- // Leggo i valori del consegnato in volume
- l_dbl_add = ads_cnsg_fisle.GetItemNumber(ll_chiusure,"q_cnsg")
- l_dbl_val = ads_cnsg_insert.GetItemNumber(ll_riga,"q_cnsg")
- if IsNull(l_dbl_val) Then
- If Not(IsNull(l_dbl_add)) Then
- // Se il valore già presente è nullo, ma il nuovo no......
- l_dbl_val = 0
- End if
- Else
- if IsNull(l_dbl_add) Then
- // se il vecchio non è nullo, ma il nuovo si......
- l_dbl_add = 0
- End if
- End if
- l_dbl_val += l_dbl_add
- ads_cnsg_insert.SetITem(ll_riga,"q_cnsg",l_dbl_val)
- // Leggo i valori del consegnato in peso
- l_dbl_add = ads_cnsg_fisle.GetItemNumber(ll_chiusure,"q_cnsg_peso")
- l_dbl_val = ads_cnsg_insert.GetItemNumber(ll_riga,"q_cnsg_peso")
- if IsNull(l_dbl_val) Then
- If Not(IsNull(l_dbl_add)) Then
- // Se il valore già presente è nullo, ma il nuovo no......
- l_dbl_val = 0
- End if
- Else
- if IsNull(l_dbl_add) Then
- // se il vecchio non è nullo, ma il nuovo si......
- l_dbl_add = 0
- End if
- End if
- l_dbl_val += l_dbl_add
- ads_cnsg_insert.SetITem(ll_riga,"q_cnsg_peso",l_dbl_val)
- // Leggo i valori dell'acqua residua
- l_dbl_add = ads_cnsg_fisle.GetItemNumber(ll_chiusure,"q_acqua_resid")
- l_dbl_val = ads_cnsg_insert.GetItemNumber(ll_riga,"q_acqua_resid")
- if IsNull(l_dbl_val) Then
- If Not(IsNull(l_dbl_add)) Then
- // Se il valore già presente è nullo, ma il nuovo no......
- l_dbl_val = 0
- End if
- Else
- if IsNull(l_dbl_add) Then
- // se il vecchio non è nullo, ma il nuovo si......
- l_dbl_add = 0
- End if
- End if
- l_dbl_val += l_dbl_add
- // L'acqua residua è sempre negativa
- ads_cnsg_insert.SetITem(ll_riga,"q_acqua_resid", - l_dbl_val)
- Next
- // Riapplica il filtro orginale
- ads_joint.SetFIlter(ls_old_filter )
- ads_joint.Filter()
- end subroutine
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement