Advertisement
Guest User

Dettagli_consegnati

a guest
Dec 4th, 2014
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 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);/*
  2.     Funzione :
  3.        
  4.         of_scrivi_dettagli(ads_cnsg_fisle, ads_cnsg_insert, ai_mese, ai_anno)
  5.        
  6.     Valore di Ritorno :
  7.         Nessuno.
  8.        
  9.     Parametri :
  10.        
  11.         xxxu021_data_store_base     ads_cnsg_fisle      (DS con i dati da salvati nelle chiusure CNSG_FISLE_T190)
  12.         xxxu021_data_store_base     ads_cnsg_insert     (DS con i dati da calcolare CNSG_FISLE_CDP_T191)
  13.         xxxu021_data_store_base     ads_joint               (DS con i dati delle Joint PRTNR_CMP_T165)
  14.         Integer                         ai_mese                 (Mese di riferimento) Non utilizzato
  15.         Integer                         ai_anno                 (Anno di riferimento) Non utilizzato
  16.  
  17.     Descrizione :
  18.        
  19.         La funzione si preoccupa di calcolare i dati da inviare per il dettaglio del
  20.         consegnato.
  21. */
  22.  
  23. Long        ll_chiusure, ll_riga, ll_find
  24. Double  l_dbl_add, l_dbl_val
  25. String  ls_c_prdt, ls_c_soc, ls_f100, ls_c_dest, ls_flag_joint, ls_old_filter, ls_find_string
  26. Integer li_mese, li_anno
  27.  
  28. // Memorizza il filtro corrente per ripristinarlo alla fine
  29. ls_old_filter = ads_joint.Describe("Datawindow.Table.Filter")
  30.  
  31.  
  32. For ll_chiusure = 1 To ads_cnsg_fisle.RowCount()
  33.    
  34.     ls_c_prdt = ads_cnsg_fisle.GetItemString(ll_chiusure, "c_prdt")
  35.     ls_c_soc = ads_cnsg_fisle.GetItemString(ll_chiusure, "c_soc")
  36.     ls_c_dest = ads_cnsg_fisle.GetItemString(ll_chiusure, "c_dest")
  37.     ls_f100 = ads_cnsg_fisle.GetItemString(ll_chiusure, "f_100")   
  38.     li_mese = ads_cnsg_fisle.GetItemNumber(ll_chiusure, "d_mes")
  39.     li_anno = ads_cnsg_fisle.GetItemNumber(ll_chiusure,"d_anno")
  40.  
  41.  
  42.     ads_joint.SetFilter("c_cmp = '" + as_c_cmp + "' and c_prdt = '" + ls_c_prdt + "'")
  43.     ads_joint.Filter()
  44.  
  45.  
  46.     // Stabilisce il valore di ls_flag_joint
  47.     if (ls_c_soc = is_agip) And (ls_f100 = 'S') Then    // Dato di stoccaggio
  48.         ls_c_soc = ' '
  49.         ls_flag_joint = 'T'
  50.     else                                                                // Dato di produzione
  51.         if ls_c_soc <> ' ' Then     // Riga di partner
  52.             // Cerco la soc. tra le partner
  53.             ll_find = ads_joint.Find("c_soc = '"+ls_c_soc+"'",0,ads_joint.RowCount())
  54.             // Se la trovo vado a testare il f_agip
  55.             if ll_find > 0 Then
  56.                 if ads_joint.GetItemString(ll_find,"f_agip") = 'S' Then // Quota AGIP
  57.                     ls_flag_joint = 'Q'
  58.                 Else  // Dato di Quota per Soc. div. da Agip
  59.                     ls_flag_joint = ' '
  60.                 End if
  61.             Else
  62.                 ls_flag_joint = ' '   // Dato di quota per Soc. div. da Agip
  63.             End if
  64.         else                                // Riga 100%
  65.             if ads_joint.RowCOunt() > 0 Then
  66.                 ls_flag_joint = 'J' // 100 % con presenza di Joint Ventures
  67.                 if ads_joint.RowCOunt()  = 1 then   // Caso unica riga AGIP al 100%
  68.                     if ads_joint.GetItemString(1,"f_agip") = 'S' then
  69.                         ls_flag_joint = 'T'
  70.                     end if
  71.                 end if
  72.             Else
  73.                 ls_flag_joint = 'T' // 100 % senza Joint Ventures
  74.             End if
  75.         end if
  76.     End if
  77.  
  78.     ls_find_string = "c_cmp = '" + as_c_cmp + "' And c_prdt = '"+ls_c_prdt+"' And c_soc = '"+ls_c_soc+ &
  79.         "' And c_dest = '"+ls_c_dest+"' and f_100 = '"+ls_f100+"' And d_mes = "+&
  80.             String(li_mese)+" And d_anno = "+String(li_anno)
  81.  
  82.     ll_find = ads_cnsg_insert.Find(ls_find_string,0,ads_cnsg_insert.RowCOunt())
  83.  
  84.     if ll_find = 0  Then
  85.         ll_riga = ads_cnsg_insert.InsertRow(0)
  86.         ads_cnsg_insert.SetITem(ll_riga,"c_cmp",as_c_cmp)
  87.         ads_cnsg_insert.SetITem(ll_riga,"c_prdt",ls_c_prdt)
  88.         ads_cnsg_insert.SetITem(ll_riga,"c_soc", ls_c_soc)
  89.         ads_cnsg_insert.SetITem(ll_riga,"c_dest", ls_c_dest)
  90.         ads_cnsg_insert.SetItem(ll_riga,"d_mes", li_mese)
  91.         ads_cnsg_insert.SetITem(ll_riga,"d_anno", li_anno)
  92.         ads_cnsg_insert.SetITem(ll_riga,"f_100", ls_f100)
  93.         ads_cnsg_insert.SetItem(ll_riga,"f_jnt", ls_flag_joint)
  94.     Else
  95.         ll_riga = ll_find
  96.     End if
  97.    
  98.  
  99.     // Leggo i valori del consegnato in volume
  100.     l_dbl_add = ads_cnsg_fisle.GetItemNumber(ll_chiusure,"q_cnsg") 
  101.     l_dbl_val = ads_cnsg_insert.GetItemNumber(ll_riga,"q_cnsg")
  102.     if IsNull(l_dbl_val)  Then
  103.         If Not(IsNull(l_dbl_add)) Then
  104.             // Se il valore già presente è nullo, ma il nuovo no......
  105.             l_dbl_val = 0
  106.         End if
  107.     Else
  108.         if IsNull(l_dbl_add) Then
  109.             // se il vecchio non è nullo, ma il nuovo si......
  110.             l_dbl_add = 0
  111.         End if
  112.     End if 
  113.    
  114.     l_dbl_val += l_dbl_add
  115.    
  116.     ads_cnsg_insert.SetITem(ll_riga,"q_cnsg",l_dbl_val)
  117.  
  118.    
  119.     // Leggo i valori del consegnato in peso
  120.     l_dbl_add = ads_cnsg_fisle.GetItemNumber(ll_chiusure,"q_cnsg_peso")
  121.     l_dbl_val = ads_cnsg_insert.GetItemNumber(ll_riga,"q_cnsg_peso")
  122.     if IsNull(l_dbl_val)  Then
  123.         If Not(IsNull(l_dbl_add)) Then
  124.             // Se il valore già presente è nullo, ma il nuovo no......
  125.             l_dbl_val = 0
  126.         End if
  127.     Else
  128.         if IsNull(l_dbl_add) Then
  129.             // se il vecchio non è nullo, ma il nuovo si......
  130.             l_dbl_add = 0
  131.         End if
  132.     End if 
  133.    
  134.     l_dbl_val += l_dbl_add
  135.    
  136.     ads_cnsg_insert.SetITem(ll_riga,"q_cnsg_peso",l_dbl_val)
  137.    
  138.  
  139.     // Leggo i valori dell'acqua residua
  140.     l_dbl_add = ads_cnsg_fisle.GetItemNumber(ll_chiusure,"q_acqua_resid")
  141.     l_dbl_val = ads_cnsg_insert.GetItemNumber(ll_riga,"q_acqua_resid")
  142.     if IsNull(l_dbl_val)  Then
  143.         If Not(IsNull(l_dbl_add)) Then
  144.             // Se il valore già presente è nullo, ma il nuovo no......
  145.             l_dbl_val = 0
  146.         End if
  147.     Else
  148.         if IsNull(l_dbl_add) Then
  149.             // se il vecchio non è nullo, ma il nuovo si......
  150.             l_dbl_add = 0
  151.         End if
  152.     End if 
  153.    
  154.     l_dbl_val += l_dbl_add
  155.    
  156.     // L'acqua residua è sempre negativa
  157.     ads_cnsg_insert.SetITem(ll_riga,"q_acqua_resid", - l_dbl_val)
  158. Next
  159.  
  160. // Riapplica il filtro orginale
  161. ads_joint.SetFIlter(ls_old_filter )
  162. ads_joint.Filter()
  163.  
  164. end subroutine
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement