Cp1251
DOC 
foreground = lightgray
document_width = 1000
document_height = 700
document_title = "Реализация продукции"
style = "style/docs.st"
preloadscript="
(global.create = 0)
(global.d1 = ('\''+'01.01.2003'+'\'') )
(global.get_num = 0)
(global.cur_id_active = -1)
(global.recalc = 0)"

postloadscript="($X
	 	 ($IF (($g.D_HEAD@getvalue 'HEAD.ACCEPT') == 1)
		  ($g.progress@setValue 'Только для чтения')
		 )
		 ($if (global.create == 1)
		   (
		     ($g.default_client@retrieve)
		     (g.cli1_numb_client = ($g.default_client@getValue 'client.id_client'))
		     (g.name_client1 = ($g.default_client@getValue 'client.name1_client'))
		   )
		 )
		 ($ret '')
		 )"

{dscollection
   alias = ds
   initQuery = "select head_sq.nextval,sysdate,id_personal from personal where upper(login)=user"
   aliases = "hpk,date,idp"
   seqquery = "select spc_sq.nextval from dual"
   seqnames = "spk"
   initAction ="(global.create = 1)
                (global.get_num = 1)"
}

{datastore  alias=doc_num
    query="select num_sd from (select 'РПр-'||(nvl(max(to_number(substr(num_sd, 5))), 0) + 1) num_sd
             from head
            where head.num_sd like 'РПр-%')"
}

{datastore  alias=default_client
    query="select client.id_client, client.name1_client
             from parameters, client
            where parameters.id = 17 and parameters.n = client.id_client"
}

{datastore  alias=get_active_type
    query="select active_type.name_type,
                  doc_lib.getRestBeforeBefore(
                                               ~($try (g.sklad_t) $catch ('NullException')(-1))~,
                                               active.id_active,
                                               ~($if (global.create == 0)
                                                    ($try ($g.d_head@getValue 'head.sort') $catch ('NullException')(-1))
                                                 $else 
                                                    ('1e20')
                                                )~
                                             ) rest
             from active, active_type
            where active.id_active = ~global.cur_id_active~ and active.id_type_active = active_type.id_type"
  } // end of ds
{toolbar   BACKGROUND = "LIGHTGRAY"
{splitpanel   percent=40
{scrollpane 
{form width=780 height=208       bg_color="#c0c0c0"   alias = fm
   {label
       value="N док."       
       left=11    top=8     height=20       width=40
       font_size=12         font_family=0   bg_color="#c0c0c0"
   }  
   {field
       target=head.num_sd   border = box
       left=55     top=8    height=20       width=95
       alias=num_sd         font_size=12    font_family=0    bg_color="#ffffff"
       editable=readonly
   }  
   {label
       value="Дата док."    
       left=155    top=8    height=20       width=50
       font_size=12         font_family=0   bg_color="#c0c0c0"
   }
   {field
       target=head.date_sd  border = box
       left=210    top=8    height=20       width=70
       alias=date_sd        font_size=12    font_family=0    bg_color="#ffffff"
       dep="ficd1"
   }
 {field 
   type = string
   left = 500  width = 70 height=25    
   alias=ficd1           visible=no
   exp="(ficd1 = global.d1)"
  }
   {field
       target=head.accept    border = box   visible=no
       left=200   top=83    height=20      width=40
       alias=accept         font_size=12    font_family=0    bg_color="#ffffff"
   }
   {label
       value="Склад"        
       left=300    top=8    height=20       width=40
       font_size=12         font_family=0   bg_color="#c0c0c0"
   }
   {field
       target=head.id_department1
       visible=no           border = box
       left=350    top=8    height=20       width=100
       alias=sklad_t        font_size=12    font_family=0    bg_color="#ffffff"
       editexp="(sklad_t=STORE.department.id_department)"
   }
   {field
       target=department.name1_dep                 border = box
       left=350    top=8    height=20       width=100
       alias=sklad          font_size=12    font_family=0    bg_color="#ffffff"
       editable=handbook
       edit="opennew department_gr.rml "
       editexp="sklad=STORE.department.name1_dep"
       dep="sklad_t"
   }
   {label
       value="Исполнитель"  
       left=470  top=8      height=20       width=70
       font_size=12         font_family=0   bg_color="#c0c0c0"
   }
   {field
       target=personal.fname                border = box
       left=550    top=8    height=20       width=70
       alias=name           font_size=12    font_family=0    bg_color="#ffffff"
       editable = readonly
   }     
   {label
       value="Поставщик"
       left=11     top=33   height=20        width=65
       font_size=12         font_family=0    bg_color="#c0c0c0"
   }
   {field
       target=head.id_client1                 halignment = right
       left=80     top=33   height=20        width=70
       alias=cli1_numb_client                border = box        
       font_size=12         font_family=0    bg_color="#ffffff"
       editable=handbook
       edit="opennew find_client.rml"
       editexp="cli1_numb_client=STORE.client.id_client"
       dep="name_client1"
   }
   {field
      target=client.name1_client              border = box
      left=155     top=33   height=20        width=270
      alias=name_client1    font_size=12     font_family=0    bg_color="#ffffff"
      editexp="name_client1=STORE.client.name1_client"
      editable = readonly
   }
   {label
       value="Покупатель"
       left=11    top=58     height=20       width=65
       font_size=12          font_family=0   bg_color="#c0c0c0"
   }
   {field
       target=head.id_client2            halignment = right
       left=80    top=58     height=20       width=70         border = box
       alias=cli3_numb_client                font_size=12     font_family=0    bg_color="#ffffff"
       editable=handbook
       edit="opennew find_client.rml"
       editexp="cli3_numb_client=STORE.client.id_client"
       dep="name_client2"
   }
   {field
      target=client2.name1_client
      left=155    top=58     height=20       width=270        border = box
      alias=name_client2     font_size=12    font_family=0    bg_color="#ffffff"
      editexp="name_client2=STORE.client.name1_client"
           editable = readonly
   }
   {label
       value="Номер пер док."
       left=470    top=33     height=20       width=80
       font_size=12          font_family=0   bg_color="#c0c0c0"
   }
   {field
       target=head.num_per_sd            halignment = right
       left=550    top=33     height=20       width=70         border = box
       alias=num_per         font_size=12     font_family=0    bg_color="#ffffff"
   }
   {label
       value="Дата пер док."
       left=470    top=58     height=20       width=80
       font_size=12          font_family=0   bg_color="#c0c0c0"
   }
   {field
       target=head.date_per_sd            halignment = right
       left=550    top=58     height=20       width=70         border = box
       alias=dat_per         font_size=12     font_family=0    bg_color="#ffffff"
   }
   {label
       value="Примечание"    
       left=11    top=108     height=20      width=65
       font_size=12          font_family=0  bg_color="#c0c0c0"
   }
   {field
       target=head.comment_sd   border = box
       left=80    top=108    height=20      width=495
       alias=comment_sd         font_size=12   font_family=0    bg_color="#ffffff"
   }
   {label
    alias=progress
    left = 630  top = 8      width = 150     height = 20 
    font_size=16              font_family=2   font_color="#000088"
    bg_color="#c0c0c0"        border=none     
   }
{datastore 
        alias = d_head
        query = "select head.id_head,head.sort,head.id_type_doc,head.accept,
                        head.num_sd,head.date_sd,
                        head.num_per_sd,head.date_per_sd,
                        head.id_department1,department.name1_dep,head.id_department2,
                        head.id_client1,client.name1_client,
			head.id_client2,client2.name1_client,
                        head.comment_sd,
			head.id_contract,contract.name_contract,
			head.id_personal,personal.fname,
			head.parent_id_head
                   from head,client,client client2,personal,department,contract
                  where head.id_head = ~($try ($if (global.create == 0)
                                  	    	(ARGUMENTS.0)
	                                       $else (ds.hpk))
		                         $catch ('any') (-1))~
                   and head.id_client1 = client.id_client (+)
                   and head.id_client2 = client2.id_client (+)
                   and head.id_contract = contract.id_contract (+)
                   and head.id_department1 = department.id_department (+)
                   and head.id_personal = personal.id_personal(+)"
              editable = yes
                  head = yes
                unique = "('head','head.id_head')"
               default = "head.id_head=~ds.hpk~,head.id_type_doc=~19~,
                          head.date_sd=~ds.date~,
                          head.id_personal=~ds.idp~,
                          head.accept=~0~,
                          head.num_sd=~'РПр-'~,
			  head.num_per_sd=~'.'~,head.date_per_sd=~ds.date~,
			  head.id_department1=~0~,
			  head.id_department2=~0~,
			  head.id_contract=~1~,
                          head.id_client1=~1~,
                          client.name1_client=~'ФИРМА'~, 
                          head.id_client2=~1~,
                          client2.name1_client=~'ФИРМА'~"
} // ds
} // form
} // scroll
{tabset labels = "перечень продукции"
 tabs_on_top=yes
{grid
editable = yes
add="opennew find_choose.rml 1, 0"
alias = GRIDSPC
buttonbar_font_family=0       buttonbar_font_size=12           
buttonbar_size = 30           titlebar_size = 18            rowsize=20     
addexp="($X
	(t = ($g.d_spc@iterator))
	(i = 0)
	(is_in = 1)
	($while ($t@next)
	    (
		(i += 1)
		($g.d_spc@SetCurRow (i-1))
		(l_id_active = ($try ($g.d_spc@GetValue 'SPC.ID_ACTIVE') $catch ('Any')(-1)))
		($if (l_id_active == store.active.id_active) (
                    ($g.self@sure 'Актив '+store.active.name_active+' уже присутствует в спецификации!' 1)
                    (is_in = 0)
                    ($g.d_spc@delRow (($g.d_spc@size) - 1))
		))
        ))
	($if (is_in == 1) (

          (g.war=store.active.id_active)
          (g.name_w=store.active.name_active)
          (g.id_un=store.id_pseudo_unit)
          (g.name_un=store.obozn)
          (global.cur_id_active = store.active.id_active)
          ($g.get_active_type@retrieve)
          (g.ost = ($try ($g.get_active_type@GetValue 'REST') $catch ('Any')('')))
          ($p.diff@calc)
          ($p.summ@calc)
          ($p.sum_nds@calc)
          ($p.itog_sum@calc)
        ))

        ($ret '')
        )
        "
{menu
   {item label = "Поиск в справочнике" action="opennew find_choose.rml 1, 0"}
   {item label = "История поступлений"
    action = "opennew history_prih.rml ~($g.d_spc@getValue 'spc.id_active')~"
   }
   {item label = "-"}

   {item label = "История изменений" action= "open reports/report_spc_log.rml ~($g.d_spc@getValue 'spc.id_spc')~"}

}
 {column size=40  
     visible=no
     title="Номер"   
     target=spc.id_spc        title_font_family=2     halignment=left
     font_color="#000000"     font_size=12              font_family=0
 }
 {column size=110 
    visible=no
    title="Номер"   
    target=spc.id_head        title_font_family=2
    font_color="#000000"      font_size = 12            font_family=0
 }
 {column size=40     
    title="Код"              font_family=0	     editable = readonly   
    target=spc.id_active     title_font_family=2     halignment=left
    alias=war                font_color="#000000"    font_size=12   
    editmask = "##0."
 }
 {column size=180       title="Наименование"
    target=active.name_active  title_font_family=2     halignment=left
    font_color="#000000"      font_size=12              font_family=0
    alias=name_w              editable = readonly 
 }
 {column size=60     
    visible=no
    title="Код"              font_family=0
    target=spc.id_unit       title_font_family=2     halignment=left
    alias=id_un                font_color="#000000"     font_size=12   
    editexp = "id_un=STORE.active_pseudo_unit.id_pseudo_unit"
 }
 {column size=60       title="Ед. изм."
    target=active_pseudo_unit.obozn  title_font_family=2     halignment=left
    font_color="#000000"      font_size=12              font_family=0
    alias=name_un             
    editable = handbook    
    edit = "opennew psevdo_units.rml ~($try (war) $catch ('NullException') (-1) )~"
    editexp = "name_un=STORE.active_pseudo_unit.obozn"
    dep = "id_un" 
 }
 {column size=50       title="Кол-во " 
    target=spc.q1_spc      title_font_family=2      halignment=right
    font_color="#000000"     font_size=12            font_family=0
    editmask = "# #0.00"    alias = q1_spc
    dep="summ,diff"
 }
 {column size=70       title="Остаток" 
    target="DOC_LIB.GETRESTBEFOREBEFORE(HEAD.ID_DEPARTMENT1,SPC.ID_ACTIVE,HEAD.SORT)"
    title_font_family=2      halignment=right
    font_color="#000000"     font_size=12            font_family=0
    editmask = "# #0.000"    alias = ost
    editable = readonly			visible = yes
 }
 {column size=70       title="Разница" 
    type = number
    title_font_family=2      halignment=right
    font_color="#000000"     font_size=12            font_family=0
    editmask = "# #0.000"    alias = diff
    editable = readonly		visible = yes
    exp = "($X
               #($if (global.loading == 1) ($ret '') )
               ($debug 'recalc diff ' + global.recalc)
               (g.diff = g.ost - g.q1_spc)
               ($if (g.diff < 0)
                  ($g.gridspc@setcellbgcolor ($g.d_spc@getCurRow) 4 'RED')
                $else
                  ($g.gridspc@setcellbgcolor ($g.d_spc@getCurRow) 4 'WHITE')
               )
               (global.recalc += 1)
               ($debug 'recalc diff ' + global.recalc)
               ($ret '')
           )"
 }
 {column size=60
    target = spc.price1_spc   title="Цена"      title_font_family=2
    font_color="#000000"     font_size=12            font_family=0
    editmask = "# #0.000"     alias = price1_spc        halignment=right
    dep="summ"
 }
 {column size=60
    type = number	     title="Сумма"      title_font_family=2
    font_color="#000000"     font_size=12            font_family=0
    editmask = "# #0.00"    alias = summ        halignment=right
    exp="($X
          (g.summ = ($try (g.q1_spc) $catch ('NullException')(0)) * ($try (g.price1_spc) $catch ('NullException')(0)) )
          ($ret '') 
         )"
 }

 {datastore 
      alias = d_spc
      query = "select spc.id_spc,spc.id_head,spc.id_active,spc.id_unit,
                      spc.q1_spc,spc.q2_spc,spc.price1_spc,spc.price2_spc,
                      active.name_active,active_pseudo_unit.obozn,
		      active_type.name_type,
		      doc_lib.getRestBeforeBefore(head.id_department1, spc.id_active, head.sort)
                 from head,spc,active,active_pseudo_unit,active_type
                where spc.id_head = ~($try (d_head.head.id_head) $catch ('NullException') (-1) )~ 
                  and spc.id_head = head.id_head
                  and spc.id_active = active.id_active 
                  and spc.id_unit = active_pseudo_unit.id_pseudo_unit 
                  and active.id_type_active = active_type.id_type
             order by spc.id_spc"
             editable = yes
               unique = "('spc','spc.id_spc')" 
              default = "spc.id_head=~($try (d_head.head.id_head) $catch ('NullException') (-1) )~,
                         spc.id_spc=~ds.spk~,
			 spc.q1_spc=~1~,spc.q2_spc=~0~,
			 spc.price1_spc=~0~,spc.price2_spc=~0~"  
} // ds
} // grid1
} // tabset
} // split
{button
  left = 11  width = 50    height = 20
  BACKGROUND = "LIGHTGRAY"    foreground="#000000"
  label = "Сохранить и выйти F3"
  action = "($X
	     ($if (($G.D_HEAD@getValue 'HEAD.ACCEPT') == 1)
		  (
		    ($g.self@actcancel)
		    ($ret '')
		  )
	     )
	     # проверяем, нет ли перемещений больше остатка
	     (found = 0)
	     (i = 0) (sz = ($g.d_spc@size))
	     ($while (i < sz)
	       (
	         ($g.d_spc@setCurRow i)
	         ($if (($try (g.diff) $catch ('NullException')(0)) < 0)
	           (
	             (found = 1)
	             (i = sz)
	           )
	         )
	         (i += 1)
	       )
	     )
	     ($if (found > 0)
               (
                 ($g.self@sure 'В документе есть строки с недостаточным остатком - отмечены красным цветом. Для сохранения документа исправьте эти строки.' 1)
                 ($ret '')
               )
             )
             (tmp = 'Вы действительно хотите сохранить все изменения и выйти' + '')
             (m = ($g.self@sure tmp 0))
               ($if (m == 0)()
               $else 
                    (
                        ($if (global.get_num == 1)
                            (
                                ($g.doc_num@retrieve)
                                d_head.head.num_sd = ($try ($g.doc_num@GetValue 'NUM_SD') $catch ('Any')(''))
                                g.num_sd = ($try ($g.doc_num@GetValue 'NUM_SD') $catch ('Any')(''))
                                (global.get_num = 0)
                            )
                        )
                        #($if (($G.D_HEAD@getValue 'HEAD.ACCEPT') == 1)
			#  (
			    #($g.self@doAction 'execute exec doc_lib.de_accept(' + ($G.D_HEAD@getValue 'HEAD.ID_HEAD') + ');')
			    #($g.self@actsave)
  			    #($g.self@doAction 'execute exec doc_lib.accept(' + ($G.D_HEAD@getValue 'HEAD.ID_HEAD') + ');')
			    #($g.self@actcancel)
			#  )
			#  $else (
			    ($g.self@actdok)
			#  )
			#)
                    )
               )
             ($ret ''))"
  shortcut = "F3"
}
{button
  left = 11  width = 50    height = 20
  BACKGROUND = "LIGHTGRAY"    foreground="#000000"
  label = "Запис F4"
  action = "($if (($G.D_HEAD@getValue 'HEAD.ACCEPT') == 1)
		  (
		    ($g.self@actcancel)
		    ($ret '')
		  )
	     )
	    ($if (global.get_num == 1)
                (
                    ($g.doc_num@retrieve)
                    d_head.head.num_sd = ($try ($g.doc_num@GetValue 'NUM_SD') $catch ('Any')(''))
                    g.num_sd = ($try ($g.doc_num@GetValue 'NUM_SD') $catch ('Any')(''))
                    (global.get_num = 0)
                )
            )
	     # проверяем, нет ли перемещений больше остатка
	     (found = 0)
	     (i = 0) (sz = ($g.d_spc@size))
	     ($while (i < sz)
	       (
	         ($g.d_spc@setCurRow i)
	         ($if (($try (g.diff) $catch ('NullException')(0)) < 0)
	           (
	             (found = 1)
	             (i = sz)
	           )
	         )
	         (i += 1)
	       )
	     )
	     ($if (found > 0)
               (
                 ($g.self@sure 'В документе есть строки с недостаточным остатком - отмечены красным цветом. Для сохранения документа исправьте эти строки.' 1)
                 ($ret '')
               )
             )
            #($if (($G.D_HEAD@getValue 'HEAD.ACCEPT') == 1)
		#  (
		    #($g.self@doAction 'execute exec doc_lib.de_accept(' + ($G.D_HEAD@getValue 'HEAD.ID_HEAD') + ');')
		    #($g.self@actsave)
		    #($g.self@doAction 'execute exec doc_lib.accept(' + ($G.D_HEAD@getValue 'HEAD.ID_HEAD') + ');')
		    ($g.self@actcancel)
		#  )
		#  $else (
		    ($g.self@actsave)
		#  )
		#)
		"
  shortcut = "F4"
}
{button
  left = 72  width = 50    height = 20
  BACKGROUND = "LIGHTGRAY"    foreground="#000000"
  label = "Отмена ESC"
  action = "($X
             (tmp = 'Вы действительно хотите выйти без сохранения данных' + '')
             (m = ($g.self@sure tmp 0))
               ($if (m == 0)()
               $else ($g.self@actcancel)
               )
             ($ret ''))"
  shortcut = "escape"
}
} // toolbar

