edmandc Posted September 20, 2021 Report Share Posted September 20, 2021 Olá a todos. Trabalho com o FWH10.09 Xharbour1.2.3 Intl. (SimpLex) (Build 20161218) e BCC582 A anos tenho criado meus aplicativos sem nenhum problema. Recentemente (AGOSTO/2021) começou a ocorrer este erro e de forma intermitente. Não mudei nada no meu pc . Alguém poderia me dar uma luz de como resolver isto? O erro acontece quando retorno da rotina que segue em anexo. Outra dúvida que não tem nada a ver com o problema anterior: quando coloco os arquivos do fwh bcc e xharbour em um Disco RAM ocorrem erros que não acontecem quando estes arquivos esteão em Hd. rotina.txt Quote Link to comment Share on other sites More sharing options...
Ariston Santos Posted September 20, 2021 Report Share Posted September 20, 2021 Talvez este post seja de ajuda http://fivewin.com.br/index.php?/topic/24570-erro-hb_vmdo/ Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 20, 2021 Report Share Posted September 20, 2021 Olá, em uma olhada rápida, já que estou meio enrolado, veja com calma, o que eu vi e mudaria: // ************************************************************************* // GETSPLA.PRG - CAPTURA DADOS PARA UM REGISTRO DO CADASTRO DE PLANILHAS * // ROTINA CHAMADA DE INREVPLA.PRG * // ************************************************************************* #include "fivewin.ch" #include "vkey.ch" #include "inkey.ch" #include "tsbutton.ch" // ******************************* FUNC getspla( modocapt, odlgantes ) // ******************************* LOCAL area := Select() LOCAL l_retu := .F. LOCAL ctitulo := if( modocapt == 'inclusao', 'Inclusão de uma nova planilha', 'Inclusão de nova Revisão da Planilha: ' + trans( vnridplan, '@r 9999/99-99' ) ) LOCAL crecurso := if( modocapt == 'inclusao', 'rcadplan_in', 'rcadplan_rev' ) LOCAL arrsolicita := {} LOCAL arranalista := {} LOCAL cAias PRIVA vctpm := vcfabcli := vccircret := ' - ' PRIVA nk := 0 PRIVA idtecla := 0 PRIVA xx := .F. // UTILIZADO PARA QUANDO SE CLICA NO BOTAO DE SELECAO E O GET AINDA ESTA VÁZIO PRIVA ltrocoucel := .F. PRIVA lppassagem := .T. PRIVA lspassagem := .F. PRIVA ndatasele PRIVA l_liberado := .F. HB_GCALL( .F. ) // LIMPA LIXO NA MEMORIA cor_verdf := nrgb( 199, 220, 175 ) IF modocapt == 'inclusao' odlgantes:hide() ENDIF // CRIA ARRAY DE ANALISTAS // USE analista INDE analista NEW USE ANALISTA INDEX ANALISTA NEW SHARED // SET ORDER TO... GO TOP cAlias := ALIAS() //analista->( dbGoTop() ) AAdd( arranalista, Space( 15 ) ) WHILE( .NOT. EOF() ) //! analista->( Eof() ) SYSREFRESH() // REFRESQUE O PROCESSADOR... AAdd( arranalista, ( analista )->analista ) // AAdd( arranalista, ( cAlias )->analista ) // analista->( dbSkip() ) SKIP ENDDO dbCloseArea() // CRIA ARRAY DE SOLICITANTES USE solicita INDEX solicita NEW SHARED // EXCLUSIVE ?? // SET ORDER TO... // ( solicita )->( dbGoTop() ) GO TOP AAdd( arrsolicita, Space( 15 ) ) WHILE( .NOT. EOF() ) //! solicita->( Eof() ) SYSREFRESH() AAdd( arrsolicita, ( solicita )->solicita ) // ( solicita )->( dbSkip() ) SKIP ENDDO dbCloseArea() dbSelectArea( area ) // AS PRIVATES DEVERIAM ESTAR SEMPRES EM CIMA, ABAIXO DAS LOCALS. PRIVA mododecaptur := modocapt //??? NAO CONCORDO QUE SEJAM AQUI. PRIVA odlgipl // QUADRO DO NUMERO DA PLANILHA E DA SITUAÇÃO PRIVA os_frmpla_3000 // quadro num. planilha PRIVA os_numpla_3100 // say n.plani PRIVA ogetvnridplan // 3200 // QUADRO DA SITUAÇÃO E NUMERO DO ORÇAMENTO PRIVA os_frmsit_4104 // quadro situação PRIVA os_situacao_4030 // say situação PRIVA ocbx_situacao_603 // combobox situações PRIVA os_numorcam_4099 // say nº do orçamento // priva os_dtregsit_4011 // say data de registro da situaçao PRIVA ogetvdocorcam // 4103 // QUADRO DO CÓDIGO DA PEÇA DADO PELO FABRICANTE () PRIVA os_frmcodfab_4070 // quadro num.cod peça pelo fabricante PRIVA os_codpcfabr_4006 // say cod.pç fabric. PRIVA ogetvidpcfabr // 4031 id peça pelo fabr (fabr.) PRIVA ogetvidpcclie // 4038 id peça pelo cliente // QUADRO DOS DADOS DO CLIENTE E DO PEDIDO PRIVA os_frmcli_1000 // quadro dos dados do cliente PRIVA os_nomcli_1100 // say cliente PRIVA ogetvcliente // 1101 PRIVA obtselcli // 1110 PRIVA os_numdes_1200 // say desenho PRIVA ogetvdesenho // 1201 PRIVA os_numite_1300 // say item PRIVA ogetvitem // 1301 PRIVA os_desmes_1400 // say des mestre PRIVA ogetvdesmestre // 1401 PRIVA os_despro_1500 // descriçao prod. PRIVA ogetvdescricao // get descrição do produto 1501 PRIVA obtseldescr // 1510 PRIVA os_codpccl4004 // codigo da pela dado pelo cliente PRIVA os_volanua4033 // say volume anual PRIVA ogetvvolumeano // 4035 PRIVA os_qtdpro_1600 // quant total pedido PRIVA ogetvquantpedd // 1601 PRIVA os_qtdmil_1610 // say "quant em milhares..." PRIVA os_qtdal1_1700 // say altern 1 PRIVA ogetvquantped2 // 1701 PRIVA os_qtdal2_1750 // say altern 2 PRIVA ogetvquantped3 // 1751 PRIVA os_qtdal3_1800 // say altern 3 PRIVA ogetvquantped4 // 1801 PRIVA os_qtdal4_1850 // say altern 4 PRIVA ogetvquantped5 // 1851 PRIVA obtcalcqtdd // 1950 // QUADRO DADOS DO PRODUTO (MOLA) PRIVA os_frmmol_2000 // quadro dados da molas PRIVA oq_tipomol_4128 // tipo PRIVA oq_fabrcli_4129 // fornecimento PRIVA oq_circret_4130 // secao PRIVA os_tipmol_2010 // say tipo de mola PRIVA obtzeramatp // 2300 PRIVA obtcompressao // 4058 PRIVA obttracao // 4115 PRIVA obttorcao // 4124 PRIVA obtartefato // 4125 PRIVA obtfabfornmp // 4068 PRIVA obtclifornmp // 4072 PRIVA obtselematp // 2035 PRIVA obtcircular // 4126 PRIVA obtretangular // 4127 PRIVA os_forsec_2020 // say formato da seçao PRIVA os_matpri_2030 // say mat prima PRIVA ogetvmaterial // 2031 PRIVA os_respmp_4010 // quem fornecera mat.pr clie ou fabr. PRIVA oslotminmp // 4005 PRIVA ogetvlotminmp // 4009 PRIVA os_dimara_2040 // say diam arame PRIVA ogetvd_arame // 2041 PRIVA os_nespic_2050 // say nº espir circular PRIVA ogetvespirasc // 2051 PRIVA os_ladaxi_2042 // say lado axial PRIVA ogetvldaxial // 2043 PRIVA os_ladrad_2052 // say lado radial PRIVA ogetvldradial // 2053 PRIVA os_nespiR_2060 // say nº espir PRIVA ogetvespirasR // 2061 PRIVA os_dimmed_2070 // say diam médio PRIVA ogetvd_medio2 // 2071 PRIVA os_dimint_2080 // say diam int PRIVA ogetvd_intern2 // 2081 PRIVA os_dimext_2090 // say diam ext PRIVA ogetvd_extern2 // 2091 PRIVA os_haste1_2100 // say tam. haste 1 PRIVA ogetvhaste1 // 2101 PRIVA os_haste2_2110 // say tam. haste 2 PRIVA ogetvhaste2 // 2111 PRIVA os_fornmp_2120 // say nome do fornecedor PRIVA os_forsel_2121 // apresenta nome do fornecedor escolhido automat. PRIVA os_cusmat_2130 // say Custo Mat.Prima/kg: PRIVA os_vcusmp_2131 // apresenta custo mat prima por kg PRIVA os_presuc_4002 // say preço da sucata PRIVA ogetvcustosuc // 4036 PRIVA os_aprsuc_4003 // say % aproveitamento da sucata PRIVA ogetvaprovsuc // 4037 PRIVA osvc_matprim // 4028 PRIVA os_vc_matprim // 4057 PRIVA ossv_pesomilha // 4158 say peso/K PRIVA osv_pesomilha // 4159 valor peso/K // QUADRO SUCATA E COND.PAGTO PRIVA os_frmcpg_4017 // quadro sucata e cond.PAGTO PRIVA os_codpag_4007 // say condições de pagamento PRIVA ogetvcondpagt // 4040 // ARTEFATOS PRIVA os_artfdim_4122 // say Dimens. Artefato PRIVA ogetvarteftdim // 4123 PRIVA os_artfvol_4116 // say Vol/Mil [mm3] PRIVA ogetvarteftvol // 4117 PRIVA os_artfmas_4118 // say Massa/Mil [kg] PRIVA ogetvarteftmas // 4119 // QUADRO DAS TAXAS PRIVA os_frmtxs_4018 // quadro das taxas PRIVA os_csll_4012 PRIVA ogetvtxcsll // 4021 PRIVA os_irpj_4013 PRIVA o7getvtxirpj // 4022 PRIVA os_icms_4015 PRIVA ogetvtxicms // 4023 PRIVA os_piscof_4014 PRIVA ogetvtxpiscof // 4024 PRIVA os_lucro_4019 PRIVA ogetvtxlucro // 4025 PRIVA os_tran_4020 PRIVA ogetvtxtransp // 4026 // 5935 PRIVA os_despad_4016 PRIVA ogetvtxdespad // 4027 PRIVA os_indtottax // mostra valor tx total e o indice PRIVA ogetvtxirpj PRIVA os_frmdgf_5716 // quadro PRIVA os_txdgf_5717 PRIVA ogetvtxdgf // 5718 PRIVA osvc_tottxdgf // 5719 // priva vos_itottax // movido para inrevpla.prg // priva os_despgr_5920 // say Desp Ger Fabr // priva os_inddes_5930 // say indice desp geral // priva ogetvtaxadgf // 5931 // priva os_ttdesp_5940 // say tot -> vC_TOTTAXV // QUADRO DE MENSAGENS // priva qdrmsg_10000 // bmp do quadro de mensagens PRIVA os_msg // 10001 apresenta mensagens PRIVA cmsgqdr := '' // conteudo da mensagem // QUADRO DO NUMERO DA CELULA E SEUS CUSTOS PADROES PRIVA os_frmcel_4000 // quadro número celula PRIVA os_numcel_4100 // say número da celula PRIVA ogetvcelula // 4101 PRIVA obtselecel // 4102 PRIVA os_tpadra_4200 // say tempo padrao PRIVA os_tpadra_4201 // apresenta tempo padrao PRIVA os_hrmqen_4300 // say hr maq enrolar PRIVA os_hrmqen_4301 // apresenta hr maq enrolar PRIVA os_hrmqre_4400 // say hr maq retif PRIVA os_hrmqre_4401 // apresenta hr maq retif PRIVA os_hrmaes_4500 // say hr maq estampar PRIVA os_hrmaes_4501 // apresenta hr maq estampar // priva os_hrpren_4600 // say hora Prensa para Estampar // priva os_hrpren_4601 // apresenta valor da hora prensa estamp // QUADRO DAS OPERAÇÕES DA CELULA SELECIONADA PRIVA os_frmope_4071 // quadro operacões da celula // EMBALAR PRIVA os_embala_5700 // 5700 "say Embalar" PRIVA osvc_totembala // 5711 PRIVA obtembalar // 5712 // vostipselemb := space(20) // variavel de prompt do objeto say: ostipselemb PRIVA obtzeraemb // 5715 * ESTE BOTAO FICA NA ROTINA GETSPLOP.PRG // OBSERVAÇÕES PRIVA os_frmobs_6000 // say quadro OBSERVAÇOES PRIVA os_observ_6010 // say Observações PRIVA ogetvobsv1pla // 6011 PRIVA ogetvobsv2pla // 6012 PRIVA ogetvobsv3pla // 6013 // RESPONSABILIDADES E DATAS PRIVA os_frresp_7000 // say quadro dos responsaveis e datas PRIVA os_solici_7100 // say solicitado por: PRIVA ocbxvsolicita // 7101 PRIVA os_analis_7200 // say analisado por: PRIVA ocbxvanalista // 7201 PRIVA os_dtregs_7300 // say "registrado em:" PRIVA ogetvdtanalise // 7301 PRIVA obtcalend // 7302 PRIVA os_validd_7400 // say validade: PRIVA ogetvvalidade // 7401 PRIVA os_aprova_7500 // say aprovado por: PRIVA ogetvaprovador // 7501 get nome do aprovador PRIVA os_dtapro_7600 // say data Aprov.: PRIVA ogetvdtaprova // 7601 // TOTALIZAÇÕES PRIVA osvcustotpla // CUSTO INDUSTRIAL 1 PRIVA osvcustotpl2 // CUSTO INDUSTRIAL 2 PRIVA osvcustotpl3 // CUSTO INDUSTRIAL 3 PRIVA osvcustotpl4 // CUSTO INDUSTRIAL 4 PRIVA osvcustotpl5 // CUSTO INDUSTRIAL 5 PRIVA oscustotpla // say custo indl 20133 PRIVA osvtotvdpla // VALOR VENDA 1 PRIVA osvtotvdpl2 // VALOR VENDA 2 PRIVA osvtotvdpl3 // VALOR VENDA 3 PRIVA osvtotvdpl4 // VALOR VENDA 4 PRIVA osvtotvdpl5 // VALOR VENDA 5 PRIVA ostotvdpla // say PRIVA ostotvdpl2 // say PRIVA ostotvdpl3 // say PRIVA ostotvdpl4 // say PRIVA ostotvdpl5 // say PRIVA ostottaxv // say PRIVA osvc_tottaxv // VALOR DO MARKUP // BOTÕES REGISTRA E CANCELA PRIVA obtprepreg // 8000 PRIVA obtcancela // 9000 PRIVA vmatprimini := if( modocapt == 'inclusao', '', ( Planilha )->material ) PRIVA vsituaesc := if( modocapt == 'inclusao', 'G-AGUARDANDO APROVAÇÃO ', ; if( ( Planilha )->situacao == Upper( 'V' ), 'V-ANALISANDO VIABILIDADE', ; if( ( Planilha )->situacao == Upper( 'G' ), 'G-AGUARDANDO APROVAÇÃO ', ; if( ( Planilha )->situacao == Upper( 'A' ), 'A-APROVADO ', ; if( ( Planilha )->situacao == Upper( 'C' ), 'C-CANCELADO ', ; if( ( Planilha )->situacao == Upper( 'T' ), 'T-COTANDO MATÉRIA PRIMA ', ; if( ( Planilha )->situacao == Upper( 'O' ), 'O-OUTRAS >> ver observ. ', ; if( ( Planilha )->situacao == Upper( 'R' ), 'R-REPROVADO ', '' ) ) ) ) ) ) ) ) PRIVA obmp // deveria ser LOCAL // CRIA ARRAY COM AS SITUAÇÕES POSSIVEIS PARA UMA PLANILHA PRIVA a_situs := {} PRIVA c_situs := MemoRead( "situacao.rel" ) FOR nitem := 1 TO MLCount( c_situs ) AAdd( a_situs, MemoLine( c_situs,, nitem ) ) NEXT // asort(a_situs) // ordenar nomes dos arquivos PRIVA csitubmp := 'no.bmp' // EXCESSO DE PRIVATES E FORA DO LOCAL, EX: // FIELD // LOCAL // MEMVAR // PRIVATE // PUBLIC // obmp:loadbmp( "yes.bmp") // oBmp:refresh() cor_texto := if( modocapt == 'inclusao', cor_azule, cor_pret ) cor_fundo := if( modocapt == 'inclusao', cor_azulff, cor_amarv ) cor_textog := if( modocapt == 'inclusao', cor_verd, cor_pret ) cor_fundog := if( modocapt == 'inclusao', nrgb( 192, 213, 237 ), cor_verdf ) // cor de fundo gotfocus cor_textosg := if( modocapt == 'inclusao', cor_verd, cor_azule ) cor_fundosg := if( modocapt == 'inclusao', cor_verde, cor_amarv ) // cor fundo lostfocus cor_txtsay := if( modocapt == 'inclusao', cor_pret, cor_pret ) cor_funsay := if( modocapt == 'inclusao', nrgb( 150, 181, 210 ), cor_fundo ) DEFINE FONT oFnt3 NAME "ARIAL" SIZE 14, 28 BOLD define dialog odlgipl resource crecurso font ofntprinc odlgipl:SetColor( cor_texto, cor_fundo ) odlgipl:ctitle := ctitulo // ATIVA OU DESATIVA OS CAMPOS TEXTO (SAYS) DA INCLUSAO OU REVISAO DA PLANILHA fdefinesays() // ALTAMENTE RECOMENDAVEL TRAZER OS SAYS PARA DENTRO DO // DEFINE DIALOG... ACTIVATE DIALOG... PODE DAR ESOUTO COM // RECURSOS EM CODIGO NAO TERIA PROBLEMAS. IF modocapt == Lower( 'inclusao' ) redefine GET ogetvnridplan VAR vnridplan; id 3200 of odlgipl; PICTURE '@r 9999/99-99'; VALID fchknrid( modocapt ); MESSAGE 'Aceite o número sugerido quando for uma nova planilha' + CRLF + 'Ou informe o número da planilha que está sendo reincluida !'; COLOR cor_texto, cor_fundog; font ofntbold; update ogetvnridplan:ctooltip := 'Aceite o número sugerido quando for uma nova planilha' + CRLF + 'Ou informe o número da planilha que está sendo re-incluida !' // ISTO NAO CAUSA NENHUM TRANSTORNO? ogetvnridplan:bgotfocus := {|| cmsgqdr := 'Aceite o número sugerido quando for uma nova planilha!' + CRLF + ; 'Ou informe o número da planilha que está sendo reincluida!', ; os_msg:refresh(), ; ogetvnridplan:SetColor( cor_textog, cor_fundog ) } // ISTO NAO CAUSA NENHUM TRANSTORNO? ogetvnridplan:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ; ogetvnridplan:SetColor( cor_textosg, cor_fundosg ) } redefine combobox ocbx_situacao_603; VAR vsituaesc ; items a_situs; id 603; of odlgipl; COLOR cor_bran, cor_azule; STYLE CBS_DROPDOWNLIST; ON change ( vsituacao := Upper( subs( vsituaesc, 1, 1 ) ), ; if( vsituacao == Upper( 'A' ), ; ( os_aprova_7500:enable(), ogetvaprovador:enable(), os_dtapro_7600:enable() ), ; ( os_aprova_7500:disable(), ogetvaprovador:disable(), os_dtapro_7600:disable(), ogetvdtaprova:disable() ) ) ) ocbx_situacao_603:bgotfocus := {|| cmsgqdr := 'Selecione a situação atual do orçamento!', ; os_msg:refresh(), ocbx_situacao_603:SetColor( cor_texto, cor_fundogf ) } ocbx_situacao_603:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ; ocbx_situacao_603:SetColor( cor_amar, cor_verm_ ), ; vsituacao := subs( vsituaesc, 1, 1 ), ; if( vsituacao == Upper( 'A' ), ; ( os_aprova_7500:enable(), ogetvaprovador:enable(), os_dtapro_7600:enable(), ogetvdtaprova:enable() ), ; ( os_aprova_7500:disable(), ogetvaprovador:disable(), os_dtapro_7600:disable(), ogetvdtaprova:disable() ) ) } ocbx_situacao_603:ctooltip := 'Informe a situação desta planilha' // REDEFINE GET oObjs[1] VAR aGets[1] ID 101 OF oDlg UPDATE PICTURE "@KR!" redefine GET ogetvdtregsit; VAR vdtregsit; id 4032; of odlgipl UPDATE // COLOQUE UPADATE EN TODOS OS GETS ogetvdtregsit:bgotfocus := {|| cmsgqdr := 'Informe a data em que ocorreu a situação agora registrada!', ; os_msg:refresh(), ; ogetvdtregsit:SetColor( cor_verm, cor_fundogf ) } ogetvdtregsit:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ; ogetvdtregsit:SetColor( cor_textosg, cor_fundosg ) } ogetvdtregsit:ctooltip := 'Informe a data em que ocorreu a situação agora registrada!' redefine GET ogetvdocorcam; VAR vdocorcam; id 4103; of odlgipl; PICTURE '@k'; COLOR cor_texto, cor_fundog; update ogetvdocorcam:ctooltip := 'Informe (caso haja) a identificação do documento de orçamento referente a esta planilha!' ogetvdocorcam:bgotfocus := {|| cmsgqdr := 'Informe (caso exista) a identificação do documento de orçamento referente a esta planilha!', ; os_msg:refresh(), ; ogetvdocorcam:SetColor( cor_textog, cor_fundogf ) } ogetvdocorcam:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ; ogetvdocorcam:SetColor( cor_textosg, cor_fundosg ) } ogetvdocorcam:bkeydown := {| nk | if( nk == VK_F9, ; ( ogetvdocorcam:undo(), ogetvdocorcam:refresh(), ogetvdocorcam:setfocus() ), ) } redefine GET ogetvidpcfabr; VAR vidpcfabr; id 4031; PICTURE '@kr 999-999'; of odlgipl; COLOR cor_texto, cor_fundog; update ogetvidpcfabr:ctooltip := 'Informe a identificação que o fabricante dá a este produto !' ogetvidpcfabr:bgotfocus := {|| cmsgqdr := 'Informe a identificação que o fabricante dá a este produto !', ; os_msg:refresh(), ogetvidpcfabr:SetColor( cor_textog, cor_fundog ) } ogetvidpcfabr:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvidpcfabr:SetColor( cor_textosg, cor_fundosg ) } ogetvidpcfabr:bkeydown := {| nk | if( nk == VK_F9, ; ( ogetvidpcfabr:undo(), ogetvidpcfabr:refresh(), ogetvidpcfabr:setfocus() ), ) } redefine GET ogetvidpcclie; VAR vidpcclie; id 4038; of odlgipl; PICTURE '@k'; COLOR cor_texto, cor_fundog; update ogetvidpcclie:ctooltip := 'Informe a identificação que o cliente dá a este produto!' ogetvidpcclie:bgotfocus := {|| cmsgqdr := 'Informe a identificação que o cliente dá a este produto!', ; os_msg:refresh(), ; ogetvidpcclie:SetColor( cor_texto, cor_fundogf ) } ogetvidpcclie:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ; ogetvidpcclie:SetColor( cor_textog, cor_fundosg ) } ogetvidpcclie:bkeydown := {| nk | if( nk == VK_F9, ; ( ogetvidpcclie:undo(), ogetvidpcclie:refresh(), ogetvidpcclie:setfocus() ), ) } redefine GET ogetvcliente; VAR vcliente; id 1101; of odlgipl; bitmap "on"; PICTURE '@k!'; COLOR cor_texto, cor_fundog; action( idtecla := nk, obtselcli:setfocus(), Eval( obtselcli:baction ) ) ; update; VALID if( idtecla == VK_F2, ; ( xx := .F., idtecla := 0, .T. ), ; conferin( 'clientes', 'clientes', vcliente, 30, 'cliente', Upper( 'GETSPLA' ), '' ) ) ogetvcliente:lBtnTransparent := .F. ogetvcliente:ctooltip := 'Informe o nome do cliente ou tecle F2 ou clique no botão ao lado para obte-lo do cadastro de clientes!' ogetvcliente:bkeydown := {| nk | if( nk == VK_F2, ; ( idtecla := nk, obtselcli:setfocus(), Eval( obtselcli:baction ) ), ; if( nk == VK_F9, ; ( ogetvcliente:undo(), ogetvcliente:refresh(), ogetvcliente:setfocus() ), ) ) } ogetvcliente:bgotfocus := {|| idtecla := 0, xx := .F., lrettabel := .F., ; cmsgqdr := 'Informe o nome do cliente ou tecle F2 ou clique no botão ao lado para obte-lo do cadastro de clientes!', ; os_msg:refresh(), ; ogetvcliente:SetColor( cor_texto, cor_fundogf ) } ogetvcliente:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ; ogetvcliente:SetColor( cor_textog, cor_fundosg ) } redefine btnbmp obtselcli; FILE DiskName() + ':\' + CurDir() + '\imagens\lupa.bmp'; noborder; id 1110; of odlgipl; cancel; update; tooltip 'Clique aqui para selecionar um cliente do cadastro de clientes!'; action if( tabelas( ProcFile(), Upper( 'vcliente' ) ), ; ( xx := .F., idtecla := 0, ogetvcliente:refresh(), ogetvdesenho:setfocus() ), ; ( ogetvcliente:refresh(), ogetvcliente:setfocus() ) ) obtselcli:bgotfocus := {|| xx := .T. } // ???? ELSEIF modocapt == 'revisao' // RETIRE OS UPDATES DOS BOTOES PROVOCAM EFEITOS INDESEJADOS. redefine button obtdadosold; id 3300 of odlgipl; action ( mostrapl( nil, nil, Lower( 'revisao' ) ), ; odlgipl:goprevctrl( obtdadosold:hwnd ), .T. ); cancel ; update obtdadosold:ctooltip := 'Clique aqui para visualizar os valores originais desta planilha!' redefine GET ogetvnridplan VAR vnridplarv; id 3200 of odlgipl; PICTURE '@r 9999/99-99'; font ofntbold; COLOR cor_texto, cor_fundog; update ogetvnridplan:disable() redefine GET ogetvcliente VAR vcliente; id 1101; of odlgipl; PICTURE '@!'; font ofntbold; COLOR cor_texto, cor_fundog; update ogetvcliente:disable() redefine combobox ocbx_situacao_603; VAR vsituaesc ; items a_situs; id 603; of odlgipl; COLOR cor_bran, cor_azule; STYLE CBS_DROPDOWNLIST; ON change ( vsituacao := Upper( subs( vsituaesc, 1, 1 ) ), ; if( vsituacao == Upper( 'A' ), ; ( os_aprova_7500:enable(), ogetvaprovador:enable(), os_dtapro_7600:enable(), ogetvdtaprova:enable(), os_numorcam_4099:enable(), ogetvdocorcam:enable() ), ; ( os_aprova_7500:disable(), ogetvaprovador:disable(), os_dtapro_7600:disable(), ogetvdtaprova:disable(), os_numorcam_4099:disable(), ogetvdocorcam:disable() ) ) ) ocbx_situacao_603:bkeydown := {| nk | if( nk == VK_F9, ; ( vsituaesc := defsituacao( ( Planilha )->situacao ), ocbx_situacao_603:refresh(), ocbx_situacao_603:setfocus() ), ) } ocbx_situacao_603:bgotfocus := {|| cmsgqdr := ( 'Selecione a situação atual do orçamento!' + ; CRLF + CRLF + 'Pressione F9 para voltar ao valor original' ), ; os_msg:refresh(), ; ocbx_situacao_603:SetColor( cor_texto, cor_fundogf ) } ocbx_situacao_603:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ; ocbx_situacao_603:SetColor( cor_amar, cor_verm_ ), ; vsituacao := subs( vsituaesc, 1, 1 ), ; if( vsituacao == Upper( 'A' ), ; ( os_aprova_7500:enable(), ogetvaprovador:enable(), os_dtapro_7600:enable(), ogetvdtaprova:enable(), os_numorcam_4099:enable(), ogetvdocorcam:enable() ), ; ( os_aprova_7500:disable(), ogetvaprovador:disable(), os_dtapro_7600:disable(), ogetvdtaprova:disable(), ogetvdocorcam:disable() ) ) } ocbx_situacao_603:ctooltip := 'Informe a situação desta planilha!' redefine GET ogetvdtregsit; VAR vdtregsit; id 4032; of odlgipl; update ogetvdtregsit:bkeydown := {| nk | if( nk == VK_F9, ; ( vdtregsit := ( Planilha )->dtregsit, ogetvdtregsit:refresh(), ogetvdtregsit:setfocus() ), ) } ogetvdtregsit:ctooltip := 'Informe a data em que ocorreu a situação agora registrada!' ogetvdtregsit:bgotfocus := {|| cmsgqdr := ( 'Informe a data em que ocorreu a situação agora registrada!' + ; CRLF + CRLF + 'Pressione F9 para voltar ao valor original' ), ; os_msg:refresh(), ; ogetvdtregsit:SetColor( cor_texto, cor_fundogf ) } ogetvdtregsit:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ; ogetvdtregsit:SetColor( cor_textog, cor_fundosg ) } redefine GET ogetvdocorcam; VAR vdocorcam; id 4103; of odlgipl; PICTURE '@k'; COLOR cor_texto, cor_fundog; update ogetvdocorcam:bkeydown := {| nk | if( nk == VK_F9, ; ( vdocorcam := ( Planilha )->docorcam, ogetvdocorcam:refresh(), ogetvdocorcam:setfocus() ), ) } ogetvdocorcam:ctooltip := 'Informe (caso haja) a identificação do documento de orçamento referente a esta planilha!' ogetvdocorcam:bgotfocus := {|| cmsgqdr := ( 'Informe (caso haja) a identificação do documento de orçamento referente a esta planilha!' + ; CRLF + CRLF + 'Pressione F9 para voltar ao valor original' ), ; os_msg:refresh(), ; ogetvdocorcam:SetColor( cor_texto, cor_fundogf ) } ogetvdocorcam:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ; ogetvdocorcam:SetColor( cor_textog, cor_fundosg ) } redefine GET ogetvidpcfabr; VAR vidpcfabr; id 4031; PICTURE '@kr 999-999'; of odlgipl; COLOR cor_texto, cor_fundog; update ogetvidpcfabr:bkeydown := {| nk | if( nk == VK_F9, ; ( vidpcfabr := ( Planilha )->idpcfabr, ogetvidpcfabr:refresh(), ogetvidpcfabr:setfocus() ), ) } ogetvidpcfabr:ctooltip := 'Informe a identificação que o fabricante dá a este produto !' ogetvidpcfabr:bgotfocus := {|| cmsgqdr := ( 'Informe a identificação que o fabricante dá a este produto !' + ; CRLF + CRLF + 'Pressione F9 para voltar ao valor original' ), ; os_msg:refresh(), ; ogetvidpcfabr:SetColor( cor_texto, cor_fundogf ) } ogetvidpcfabr:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvidpcfabr:SetColor( cor_textog, cor_fundosg ) } redefine GET ogetvidpcclie; VAR vidpcclie; id 4038; of odlgipl; PICTURE '@k'; COLOR cor_texto, cor_fundog; update ogetvidpcclie:bkeydown := {| nk | if( nk == VK_F9, ; ( vidpcclie := ( Planilha )->idpcclie, ogetvidpcclie:refresh(), ogetvidpcclie:setfocus() ), ) } ogetvidpcclie:ctooltip := 'Informe a identificação que o cliente dá a este produto!' ogetvidpcclie:bgotfocus := {|| cmsgqdr := 'Informe a identificação que o cliente dá a este produto!' + ; if( modocapt == 'revisao', ( CRLF + CRLF + 'Pressione F9 para voltar ao valor original' ), '' ), ; os_msg:refresh(), ; ogetvidpcclie:SetColor( cor_texto, cor_fundogf ) } ogetvidpcclie:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ; ogetvidpcclie:SetColor( cor_textog, cor_fundosg ) } ENDIF redefine GET ogetvdesenho; VAR vdesenho; id 1201 of odlgipl; PICTURE '@k!'; COLOR cor_texto, cor_fundog; update IF modocapt == 'revisao' ogetvdesenho:bkeydown := {| nk | if( nk == VK_F9, ; ( vdesenho := ( Planilha )->desenho, ogetvdesenho:refresh(), ogetvdesenho:setfocus() ), ) } ENDIF ogetvdesenho:ctooltip := 'Informe o número do desenho !' ogetvdesenho:bgotfocus := {|| cmsgqdr := ( 'Informe o número do desenho !' + ; if( modocapt == 'revisao', ( CRLF + CRLF + 'Pressione F9 para voltar ao valor original' ), '' ) ), ; os_msg:refresh(), ogetvdesenho:SetColor( cor_texto, cor_fundogf ) } ogetvdesenho:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvdesenho:SetColor( cor_textog, cor_fundosg ) } redefine GET ogetvdesmestre VAR vdesmestre; id 1401 of odlgipl; PICTURE '@k'; COLOR cor_texto, cor_fundog; update IF modocapt == 'revisao' ogetvdesmestre:bkeydown := {| nk | if( nk == VK_F9, ; ( vdesmestre := ( Planilha )->desmestre, ogetvdesmestre:refresh(), ogetvdesmestre:setfocus() ), ) } ENDIF ogetvdesmestre:ctooltip := 'Informe o número do desenho mestre !' ogetvdesmestre:bgotfocus := {|| cmsgqdr := ( 'Informe o número do desenho mestre! (se houver)' + ; if( modocapt == 'revisao', ( CRLF + CRLF + 'Pressione F9 para voltar ao valor original' ), '' ) ), ; os_msg:refresh(), ogetvdesmestre:SetColor( cor_texto, cor_fundogf ) } ogetvdesmestre:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvdesmestre:SetColor( cor_textog, cor_fundosg ) } redefine GET ogetvitem VAR vitem; id 1301 of odlgipl; PICTURE '@k'; COLOR cor_texto, cor_fundog; update IF modocapt == 'revisao' ogetvitem:bkeydown := {| nk | if( nk == VK_F9, ; ( vitem := ( Planilha )->item, ogetvitem:refresh(), ogetvitem:setfocus() ), ) } ENDIF ogetvitem:ctooltip := 'Informe o número do item pedido !' ogetvitem:bgotfocus := {|| cmsgqdr := ( 'Informe o número do item do desenho ou pedido! (se houver)' + ; if( modocapt == 'revisao', ( CRLF + CRLF + 'Pressione F9 para voltar ao valor original' ), '' ) ), ; os_msg:refresh(), ogetvitem:SetColor( cor_texto, cor_fundogf ) } ogetvitem:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvitem:SetColor( cor_textog, cor_fundosg ) } redefine GET ogetvdescricao; VAR vdescricao; id 1501 of odlgipl; PICTURE '@!k'; COLOR cor_texto, cor_fundog; update; VALID if( idtecla == VK_F2, ; ( xx := .F., idtecla := 0, ogetvdescricao:refresh(), .T. ), ; conferin( 'descric', 'descric', vdescricao, 40, 'descricao', Upper( 'GETSPLA' ), '' ) ) ogetvdescricao:bkeydown := {| nk | if( nk == VK_F2, ( idtecla := nk, obtseldescr:setfocus(), Eval( obtseldescr:baction ) ), ; if( nk == VK_F9 .AND. modocapt == 'revisao', ; ( vdescricao := ( Planilha )->descricao, ogetvdescricao:refresh(), ogetvdescricao:setfocus() ), ) ) } ogetvdescricao:ctooltip := 'Informe a descrição do produto conforme designação do cliente, ou tecle F2 ou clique no botão ao lado para obtê-lo do CADASTRO DE DESCRIÇÕES!' ogetvdescricao:bgotfocus := {|| idtecla := 0, xx := .F., cmsgqdr := 'Informe a descrição do produto conforme designação do cliente!' + CRLF + ; 'Tecle F2 ou clique no botão ao lado para obtê-lo do CADASTRO DE DESCRIÇÕES!' + CRLF + CRLF + ; if( modocapt == 'revisao', 'Pressione F9 para voltar ao valor original!', '' ), ; os_msg:refresh(), ogetvdescricao:SetColor( cor_texto, cor_fundogf ) } ogetvdescricao:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvdescricao:SetColor( cor_textog, cor_fundosg ) } redefine btnbmp obtseldescr; id 1510 of odlgipl; FILE DiskName() + ':\' + CurDir() + '\imagens\lupa.bmp'; noborder; cancel; update; action if( tabelas( ProcFile(), Upper( 'vdescricao' ) ), ; ( xx := .F., idtecla := 0, ogetvdescricao:refresh(), ogetvvolumeano:setfocus() ), ; ( ogetvdescricao:refresh(), ogetvdescricao:setfocus() ) ) obtseldescr:ctooltip := 'Clique aqui para selecionar uma descrição do cadastro de descrições!' obtseldescr:bgotfocus := {|| xx := .T. } // ************************************************************************* // INICIO DA CAPTURA DE DADOS QUE INFLUENCIAM NO CALCULO DO VALOR DE VENDA // ************************************************************************* redefine GET ogetvvolumeano VAR vvolumeano; id 4035 of odlgipl; PICTURE '@kzer 9,999.999 K'; COLOR cor_texto, cor_fundog; spinner; update IF modocapt == 'revisao' ogetvvolumeano:bkeydown := {| nk | if( nk == VK_F9, ; ( vvolumeano := ( Planilha )->volumeano, ogetvvolumeano:refresh(), ogetvvolumeano:setfocus() ), ) } ENDIF ogetvvolumeano:ctooltip := 'Informe a quantidade do volume anual (EM MILHEIROS)!' ogetvvolumeano:bgotfocus := {|| cmsgqdr := 'Informe a quantidade do volume anual (EM MILHEIROS)!' + CRLF + ; 'Exemplo: para 1000 peças -> digite apenas 1' + CRLF + CRLF + ; if( modocapt == 'revisao', 'Pressione F9 para voltar ao valor original', '' ), ; os_msg:refresh(), ogetvvolumeano:SetColor( cor_texto, cor_fundogf ) } ogetvvolumeano:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvvolumeano:SetColor( cor_textog, cor_fundosg ) } redefine GET ogetvquantpedd VAR vquantpedd; id 1601 of odlgipl; PICTURE '@kzer 9,999.999 K'; COLOR cor_texto, cor_fundog; spinner; update; VALID ( calcqtdds( '', modocapt ), odlgipl:update(), .T. ) IF modocapt == 'revisao' ogetvquantpedd:bkeydown := {| nk | if( nk == VK_F9, ; ( vquantpedd := ( Planilha )->quantpedd, ogetvquantpedd:refresh(), ogetvquantpedd:setfocus() ), ) } ENDIF ogetvquantpedd:ctooltip := 'Informe a quantidade total de peças que serao produzidas (EM MILHEIROS)!' ogetvquantpedd:bgotfocus := {|| cmsgqdr := 'Informe a quantidade total de peças que serao produzidas (EM MILHEIROS)!' + CRLF + ; 'Exemplo: Para 1000 peças -> digite apenas 1' + CRLF + ; 'Ao informar a quantidade nominal do pedido: as demais quantidades (alternativas)' + ; 'serão calculadas automaticamente, mas ainda assim, poderão serem informadas individualmente!' + CRLF + CRLF + ; if( modocapt == 'revisao', 'Pressione F9 para voltar ao valor original', '' ), ; os_msg:refresh(), ogetvquantpedd:SetColor( cor_texto, cor_fundogf ) } ogetvquantpedd:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvquantpedd:SetColor( cor_textog, cor_fundosg ) } redefine GET ogetvquantped2 VAR vquantped2; id 1701 of odlgipl; PICTURE '@kzer 9,999.999 K'; // when !empty(vquantpedd); COLOR cor_texto, cor_fundog; spinner; update IF modocapt == 'revisao' // VERIFICAR ogetvquantped2:bkeydown := {| nk | if( nk == VK_F9, ; ( vquantped2 := ( Planilha )->quantped2, ogetvquantped2:refresh(), ogetvquantped2:setfocus() ), ) } ENDIF ogetvquantped2:ctooltip := 'Informe a primeira alternativa para a quantidade solicitada! (EM MILHEIROS)' // + CRLF +; // 'Atenção! Se uma das quantidades alternativas não for informada:'+ CRLF +; // 'Esta e as demais quantidades serão calculadas automáticamente!' ogetvquantped2:bgotfocus := {|| cmsgqdr := 'Informe a primeira alternativa para a quantidade solicitada! (EM MILHEIROS)' + CRLF + CRLF + ; // + CRLF +;// // 'Atenção! Se uma das quantidades alternativas não for informada:'+ CRLF +;// 'Esta e as demais quantidades serão calculadas automáticamente!'+CRLF+CRLF+; 'Exemplo: para 1000 peças -> digite apenas 1', os_msg:refresh(), ogetvquantped2:SetColor( cor_texto, cor_fundogf ) } ogetvquantped2:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvquantped2:SetColor( cor_textog, cor_fundosg ) } ogetvquantped2:lDisColors := .F. // Desativa disable color ogetvquantped2:nClrTextDis := cor_cinz // Cor texto disable status ogetvquantped2:nClrPaneDis := cor_fundo // Cor fundo disable status // SPINNER / PICTURE '@kzer 9,999.999 K' ??? QUE RESULTA? redefine GET ogetvquantped3 VAR vquantped3; id 1751 of odlgipl; PICTURE '@kzer 9,999.999 K'; // when !empty(vquantped2); MESSAGE 'Informe a segunda alternativa para a quantidade solicitada!'; // + CRLF +; //'Atenção! Se uma das quantidades alternativas não for informada:'+ CRLF +;'Esta e as demais quantidades serão calculadas automáticamente!'; COLOR cor_texto, cor_fundog; spinner; update IF modocapt == 'revisao' // VERIFICAR ogetvquantped3:bkeydown := {| nk | if( nk == VK_F9, ; ( vquantped3 := ( Planilha )->quantped3, ogetvquantped3:refresh(), ogetvquantped3:setfocus() ), ) } ENDIF ogetvquantped3:ctooltip := 'Informe a segunda alternativa para a quantidade solicitada!' ogetvquantped3:bgotfocus := {|| cmsgqdr := 'Informe a segunda alternativa para a quantidade solicitada! (EM MILHEIROS)' + CRLF + CRLF + ; 'Exemplo: para 10.000 peças -> digite apenas 10 - Para 50 peças digite .050', ; os_msg:refresh(), ogetvquantped3:SetColor( cor_texto, cor_fundogf ) } ogetvquantped3:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvquantped3:SetColor( cor_textog, cor_fundosg ) } ogetvquantped3:lDisColors := .F. // Desativa disable color ogetvquantped3:nClrTextDis := cor_cinz // Cor texto disable status ogetvquantped3:nClrPaneDis := cor_fundo // Cor fundo disable status redefine GET ogetvquantped4 VAR vquantped4; id 1801 of odlgipl; PICTURE '@kzer 9,999.999 K'; // when !empty(vquantped3); MESSAGE 'Informe a terceira alternativa para a quantidade solicitada!'; // 'Atenção! Se uma das quantidades alternativas não for informada:'+ CRLF +;'Esta e as demais quantidades serão calculadas automáticamente!'; COLOR cor_texto, cor_fundog; spinner; update IF modocapt == 'revisao' // VERIFICAR ogetvquantped4:bkeydown := {| nk | if( nk == VK_F9, ; ( vquantped4 := ( Planilha )->quantped4, ogetvquantped4:refresh(), ogetvquantped4:setfocus() ), ) } ENDIF ogetvquantped4:ctooltip := 'Informe a terceira alternativa para a quantidade solicitada!' // + CRLF +; // 'Atenção! Se uma das quantidades alternativas não for informada:'+ CRLF +; // 'Esta e as demais quantidades serão calculadas automáticamente!' ogetvquantped4:bgotfocus := {|| cmsgqdr := 'Informe a terceira alternativa para a quantidade solicitada! (EM MILHEIROS)' + CRLF + CRLF + ; // 'Atenção! Se uma das quantidades alternativas não for informada:'+ CRLF +;'Esta e as demais quantidades serão calculadas automáticamente!'+CRLF+CRLF+; 'Exemplo: para 10.000 peças -> digite apenas 10', os_msg:refresh(), ogetvquantped4:SetColor( cor_texto, cor_fundogf ) } ogetvquantped4:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvquantped4:SetColor( cor_textog, cor_fundosg ) } ogetvquantped4:lDisColors := .F. // Desativa disable color ogetvquantped4:nClrTextDis := cor_cinz // Cor texto disable status ogetvquantped4:nClrPaneDis := cor_fundo // Cor fundo disable status redefine GET ogetvquantped5 VAR vquantped5; id 1851; of odlgipl; PICTURE '@kzer 9,999.999 K'; // when !empty(vquantped4); MESSAGE 'Informe a quarta alternativa para a quantidade solicitada!'; // + CRLF +;'Atenção! Se uma das quantidades alternativas não for informada:'+ CRLF +;'Esta e as demais quantidades serão calculadas automáticamente!'; COLOR cor_texto, cor_fundog; spinner; update IF modocapt == 'revisao' ogetvquantped4:bkeydown := {| nk | if( nk == VK_F9, ; ( vquantped4 := ( Planilha )->quantped5, ogetvquantped5:refresh(), ogetvquantped5:setfocus() ), ) } ENDIF ogetvquantped5:ctooltip := 'Informe a quarta alternativa para a quantidade solicitada!' // + CRLF +; // 'Atenção! Se uma das quantidades alternativas não for informada:'+ CRLF +; // 'Esta e as demais quantidades serão calculadas automáticamente!' ogetvquantped5:bgotfocus := {|| cmsgqdr := 'Informe a quarta alternativa para a quantidade solicitada! (EM MILHEIROS)' + CRLF + CRLF + ; // 'Atenção! Se uma das quantidades alternativas não for informada:'+ CRLF +;'Esta e as demais quantidades serão calculadas automáticamente!'+CRLF+CRLF+; 'Exemplo: para 200.000 peças -> digite apenas 200', os_msg:refresh(), ogetvquantped5:SetColor( cor_texto, cor_fundogf ) } ogetvquantped5:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvquantped5:SetColor( cor_textog, cor_fundosg ) } ogetvquantped5:lDisColors := .F. // Desativa disable color ogetvquantped5:nClrTextDis := cor_cinz // Cor texto disable status ogetvquantped5:nClrPaneDis := cor_fundo // Cor fundo disable status // botao para calculo das quantidades alternativas // RETIRE O CANCEL - DEIXE SOMENTE NO BOTAO DE SAIDA DO MODULO redefine button obtcalcqtdd; id 1950; WHEN !Empty( vquantpedd ); action ( calcqtdds( 'dobotao', modocapt ), odlgipl:update() ); cancel; update obtcalcqtdd:ctooltip := 'Clique aqui para calcular a quantidades alternativas automaticamente!' redefine sbutton oq_tipomol_4128; id 4128; colors CLR_BLUE, { CLR_HRED, cor_fundog, 0 }; update redefine sbutton oq_fabrcli_4129; id 4129; colors CLR_BLUE, { CLR_HRED, cor_fundog, 2 }; update redefine sbutton oq_circret_4130; id 4130; colors CLR_BLUE, { CLR_HRED, cor_fundog, 2 }; update redefine sbutton obtcompressao; id 4058; tooltip 'Clique neste botão se desejar selecionar mola de Compressão'; action ( vtipomola := 1, fmudagets() ); PROMPT 'Compressão'; noborder ; cancel; update; colors cor_azule, cor_fundog obtcompressao:bgotfocus := {|| oq_tipomol_4128:show(), oq_fabrcli_4129:hide(), oq_circret_4130:hide(), odlgipl:update() } redefine sbutton obttracao; id 4115; tooltip 'Clique neste botão se desejar selecionar mola de Tração'; action ( vtipomola := 2, fmudagets() ); PROMPT 'Tração'; noborder; cancel; update; colors cor_azule, cor_fundog obtcompressao:bgotfocus := {|| oq_tipomol_4128:show(), oq_fabrcli_4129:hide(), oq_circret_4130:hide(), odlgipl:update() } redefine sbutton obttorcao; id 4124; tooltip 'Clique neste botão se desejar selecionar mola de Torção'; action ( vtipomola := 3, fmudagets() ); PROMPT 'Torção'; noborder; cancel; update; colors cor_azule, cor_fundog obtcompressao:bgotfocus := {|| oq_tipomol_4128:show(), oq_fabrcli_4129:hide(), oq_circret_4130:hide(), odlgipl:update() } redefine sbutton obtartefato; id 4125; tooltip 'Clique neste botão se desejar selecionar Artefato'; action ( vtipomola := 4, fmudagets() ); PROMPT 'Artefato'; noborder; cancel; update; colors cor_azule, cor_fundog obtcompressao:bgotfocus := {|| oq_tipomol_4128:show(), oq_fabrcli_4129:hide(), oq_circret_4130:hide(), odlgipl:update() } redefine sbutton obtfabfornmp; id 4068; tooltip 'Clique neste botão para informar que o fabricante fornecerá a Mat.Prima'; action ( vtipoforesc := 1, vfabfornmp := .T., fmudagetsmp() ); PROMPT 'Fabricante'; noborder; cancel; update; colors cor_azule, cor_fundog obtfabfornmp:bgotfocus := {|| oq_fabrcli_4129:show(), oq_tipomol_4128:hide(), oq_circret_4130:hide(), odlgipl:update() } redefine sbutton obtclifornmp; id 4072; tooltip 'Clique neste botão para informar que o Cliente fornecerá a Mat.Prima'; action ( vtipoforesc := 2,, vfabfornmp := .F., fmudagetsmp() ); PROMPT 'Cliente'; noborder; cancel; update; colors cor_azule, cor_fundog obtclifornmp:bgotfocus := {|| oq_fabrcli_4129:show(), oq_tipomol_4128:hide(), oq_circret_4130:hide(), odlgipl:update() } redefine sbutton obtcircular; id 4126 ; tooltip 'Clique neste botão para selecionar seção do arame "CIRCULAR"'; action ( vtiposecesc := 1, fmudagetsec() ); PROMPT 'Circular'; noborder; cancel; update; colors cor_azule, cor_fundog obtcircular:bgotfocus := {|| oq_circret_4130:show(), oq_tipomol_4128:hide(), oq_fabrcli_4129:hide(), odlgipl:update() } redefine sbutton obtretangular; id 4127 ; tooltip 'Clique neste botão para selecionar seção do arame "RETANGULAR"'; action ( vtiposecesc := 2, fmudagetsec() ); PROMPT 'Retangular'; noborder; cancel; update; colors cor_azule, cor_fundog obtretangular:bgotfocus := {|| oq_circret_4130:show(), oq_tipomol_4128:hide(), oq_fabrcli_4129:hide(), odlgipl:update() } redefine sbutton obtzeramatp; id 2300; of odlgipl; tooltip 'Clique neste botão se desejar apaguar todos os dados da Matéria Prima!'; PROMPT 'Limpa' + CRLF + 'Mat.Prima'; noborder; colors cor_pret, cor_fundog; cancel; update; action ( fzeramatp( '' ), obtcompressao:setfocus() ) obtzeramatp:ocursor := ocursorx obtzeramatp:lmulti := .T. redefine GET ogetvmaterial; VAR vmaterial; id 2031; of odlgipl; PICTURE '@k!'; COLOR cor_texto, cor_fundog; update; VALID if( modocapt == 'inclusao' .OR. ( modocapt == 'revisao' .AND. vmaterial # ( Planilha )->material ), ; if( idtecla == VK_F2, ( xx := .F., idtecla := 0, .T. ), fvalidmat( modocapt ) ), .T. ) // ações apos pressionamento de teclas F9 e F2 ogetvmaterial:bkeydown := {| nk | if( nk == VK_F9 .AND. modocapt == 'revisao', ; ( vmaterial := ( Planilha )->material, ogetvmaterial:refresh(), ogetvmaterial:setfocus() ), ; if( nk == VK_F2, ( idtecla := nk, obtselematp:setfocus(), Eval( obtselematp:baction ) ), ) ) } // mostra mensagem e ajusta cores ogetvmaterial:bgotfocus := {|| cmsgqdr := ( ( vctpm + vcfabcli + vccircret ) + CRLF + 'Informe o material ou tecle F2 ou clique no botão à direita para seleciona-lo do Cadastro de Materias-Primas!' + ; if( modocapt == 'revisao', ( CRLF + CRLF + 'Pressione F9 para voltar ao valor original' ), '' ) ), ; os_msg:refresh(), ogetvmaterial:SetColor( cor_texto, cor_fundogf ) } ogetvmaterial:ctooltip := 'Informe o material ou tecle F2 ou clique no botão a direita para seleciona-lo do Cadastro de Materias-Primas!' // sequencia depois do valid ogetvmaterial:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvmaterial:SetColor( cor_textog, cor_fundosg ), precalc() } redefine btnbmp obtselematp; id 2035; of odlgipl; FILE DiskName() + ':\' + CurDir() + '\imagens\lupa.bmp'; noborder; action if( fselematp( modocapt ), ; ( xx := .F., idtecla := 0, linfmpmanual := .F., precalc(), ogetvmaterial:refresh(), if( vtipoforesc == 1, ogetvlotminmp:setfocus(), ) ), ; ( ogetvmaterial:refresh(), ogetvmaterial:setfocus() ) ); cancel; update obtselematp:bgotfocus := {|| xx := .T. } // ???? obtselematp:ctooltip := 'Clique aqui para selecionar um material do cadastro de Materias-Primas!' redefine GET ogetvlotminmp; VAR vlotminmp; id 4009; of odlgipl; PICTURE '@kze 999,999'; // picture '@kzer Ø 999.99 mm'; COLOR cor_texto, cor_fundog; update; MESSAGE 'Informe o peso do lote minino (se houver) para compra da Matéria Prima! [em kilogramas]' ogetvlotminmp:bkeydown := {| nk | if( nk == VK_F9 .AND. modocapt == 'revisao', ; ( vlotminmp := ( Planilha )->lotminmp, ogetvlotminmp:refresh(), ogetvlotminmp:setfocus() ), ) } ogetvlotminmp:ctooltip := 'Informe o peso do lote minino (se houver) para compra da Matéria Prima! [em kilogramas]' + ; if( modocapt == 'revisao', ( CRLF + CRLF + 'Pressione F9 para voltar ao valor original' ), '' ) ogetvlotminmp:bgotfocus := {|| cmsgqdr := 'Informe o peso do lote minino (se houver) para compra da Matéria Prima! [em kilogramas]', os_msg:refresh(), ogetvlotminmp:SetColor( cor_texto, cor_fundogf ) } ogetvlotminmp:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvlotminmp:SetColor( cor_textog, cor_fundosg ), precalc() } ogetvlotminmp:lDisColors := .F. // Desativa disable color ogetvlotminmp:nClrTextDis := cor_cinz // Cor texto disable status ogetvlotminmp:nClrPaneDis := cor_fundo // Cor fundo disable status redefine GET ogetvd_arame; VAR vd_arame; id 2041; of odlgipl; PICTURE '@kzer 999.99 mm'; // picture '@kzer Ø 999.99 mm'; COLOR cor_texto, cor_fundog; spinner; update; MESSAGE 'Informe o diâmetro do arame! [em milímetros]'; VALID if( vtipoforesc == 1, ; ( if( !linfmpmanual, ; if( fvalidarame( Lower( 'circular' ), modocapt ), ; ( if( modocapt == 'revisao' .AND. mudoucusto(),, ), os_vcusmp_2131:setfont( ofntbold ), ; os_vcusmp_2131:SetColor( cor_vermt, cor_fundosg ), os_vcusmp_2131:refresh(), odlgipl:update(), ogetvespirasc:refresh(), precalc(), odlgipl:update(), ogetvespirasc:setfocus(), .T. ), ; ( vd_arame := 0, ogetvd_arame:refresh(), ogetvd_arame:setfocus(), .F. ) ), .T. ) ), .T. ) ogetvd_arame:bkeydown := {| nk | if( vtipoforesc == 1, ( if( ( nk == VK_F9 .AND. modocapt == 'revisao' ), ; ( vd_arame := ( Planilha )->d_arame, ogetvd_arame:refresh(), ogetvd_arame:setfocus() ), ; if( nk == 27, ogetvmaterial:setfocus(), ) ) ), ) } ogetvd_arame:ctooltip := 'Informe o diâmetro do arame! [em milimetros]' + ; if( vtipoforesc == 1, ( if( modocapt == 'revisao', ( CRLF + CRLF + 'Pressione F9 para voltar ao valor original' ), '' ) ), '' ) ogetvd_arame:bgotfocus := {|| cmsgqdr := 'Informe o diâmetro do arame! [em milimetros]' + ; if( vtipoforesc == 1, ; if( modocapt == 'revisao', CRLF + CRLF + 'Pressione F9 para voltar ao valor original!', '' ), '' ), ; os_msg:refresh(), ogetvd_arame:SetColor( cor_texto, cor_fundogf ) } ogetvd_arame:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvd_arame:SetColor( cor_textog, cor_fundosg ), precalc() } ogetvd_arame:nClrTextDis := cor_cinz ogetvd_arame:nClrPaneDis := cor_fundo ogetvd_arame:disable() redefine GET ogetvespirasc; VAR vespiras; id 2051; of odlgipl; PICTURE '@kzer 999.99 e.t.'; MESSAGE 'Informe o número de espiras completas!'; COLOR cor_texto, cor_fundog; spinner; VALID !Empty( vespiras ); update IF modocapt == 'revisao' ogetvespirasc:bkeydown := {| nk | if( nk == VK_F9, ; ( vespiras := ( Planilha )->espiras, ; voldespiras := ( Planilha )->espiras, ; ogetvespirasc:refresh(), ; ogetvespirasc:setfocus() ), .T. ) } ENDIF ogetvespirasc:ctooltip := 'Informe o número de espiras completas ou tecle F9 para retornar ao valor original!' ogetvespirasc:bgotfocus := {|| cmsgqdr := 'Informe o número de espiras completas ou tecle F9 para retornar ao valor original' + ; if( modocapt == 'revisao', CRLF + CRLF + 'Pressione F9 para voltar ao valor original!', '' ), ; os_msg:refresh(), ogetvespirasc:SetColor( cor_texto, cor_fundogf ), precalc() } ogetvespirasc:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvespirasc:SetColor( cor_textog, cor_fundosg ), precalc() } ogetvespirasc:nClrTextDis := cor_cinz ogetvespirasc:nClrPaneDis := cor_fundo ogetvespirasc:disable() redefine GET ogetvldaxial VAR vldaxial; id 2043 of odlgipl; PICTURE '@kzer 999.99 mm'; MESSAGE ( 'Informe a medida do lado AXIAL (largura) da seção do arame [em milimetros]' ); COLOR cor_texto, cor_fundog; // when (alltrim(upper(vtiposecao))==upper('RETANGULAR').and.!empty(vmaterial) ) ; spinner; VALID !Empty( vldaxial ); update IF modocapt == 'revisao' ogetvldaxial:bkeydown := {| nk | if( nk == VK_F9, ; ( vldaxial := ( Planilha )->ldaxial, ogetvldaxial:refresh(), ogetvldaxial:setfocus() ), ) } ENDIF ogetvldaxial:ctooltip := 'Informe a medida do lado AXIAL (largura) da seção do arame [em milimetros]!' ogetvldaxial:bgotfocus := {|| cmsgqdr := 'Informe a medida do LADO AXIAL (largura) da seção do arame [em milimetros]' + ; if( modocapt == 'revisao', CRLF + CRLF + 'Pressione F9 para voltar ao valor original!', '' ), os_msg:refresh(), ogetvldaxial:SetColor( cor_texto, cor_fundogf ) } ogetvldaxial:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvldaxial:SetColor( cor_textog, cor_fundosg ), precalc() } ogetvldaxial:nClrTextDis := cor_cinz ogetvldaxial:nClrPaneDis := cor_fundo ogetvldaxial:disable() redefine GET ogetvldradial VAR vldradial; id 2053 of odlgipl; PICTURE '@kzer 999.99 mm'; MESSAGE ( 'Informe a medida do lado RADIAL (altura) da seção do arame [em milimetros]' ); COLOR cor_texto, cor_fundog; spinner; update; VALID if( vtipoforesc == 1, ( if( !linfmpmanual, ; if( fvalidarame( Lower( 'retangular' ), modocapt ), ; ( if( modocapt == 'revisao' .AND. mudoucusto(),, ), os_vcusmp_2131:refresh(), ogetvespirasr:refresh(), precalc(), odlgipl:update(), ogetvespirasr:setfocus(), .T. ), ; ( vldaxial := 0, vldradial := 0, ogetvldaxial:refresh(), ogetvldradial:refresh(), ogetvldaxial:setfocus(), .F. ) ), .T. ) ), .T. ) IF modocapt == 'revisao' ogetvldradial:bkeydown := {| nk | if( nk == VK_F9, ; ( vldradial := ( Planilha )->ldradial, ogetvldradial:refresh(), ogetvldradial:setfocus() ), ; if( nk == 27, ogetvldradial:setfocus(), ) ) } ENDIF ogetvldradial:ctooltip := 'Informe a medida do lado RADIAL (altura) da seção do arame [em milimetros]!' ogetvldradial:bgotfocus := {|| cmsgqdr := 'Informe a medida do LADO RADIAL (altura) da seção do arame [em milimetros]' + ; if( modocapt == 'revisao', CRLF + CRLF + 'Pressione F9 para voltar ao valor original!', '' ), os_msg:refresh(), ogetvldradial:SetColor( cor_texto, cor_fundogf ) } ogetvldradial:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvldradial:SetColor( cor_textog, cor_fundosg ), precalc() } ogetvldradial:nClrTextDis := cor_cinz ogetvldradial:nClrPaneDis := cor_fundo ogetvldradial:disable() redefine GET ogetvespirasR; VAR vespiras; id 2061 of odlgipl; PICTURE '@kzer 999.99 e.t.'; // when ( vtiposecao==upper('RETANGULAR').and.!empty(vldaxial+vldradial) ); MESSAGE 'Informe o número de espiras completas!'; COLOR cor_texto, cor_fundog; spinner; VALID !Empty( vespiras ); update IF modocapt == 'revisao' ogetvespirasr:bkeydown := {| nk | if( nk == VK_F9, ; ( vespiras := ( Planilha )->espiras, ogetvespirasr:refresh(), ; ogetvespirasr:setfocus() ), ) } ENDIF ogetvespirasr:ctooltip := 'Informe o número de espiras completas!' ogetvespirasr:bgotfocus := {|| cmsgqdr := 'Informe o número de espiras completas!' + ; if( modocapt == 'revisao', CRLF + CRLF + 'Pressione F9 para voltar ao valor original!', '' ), ; os_msg:refresh(), ogetvespirasr:SetColor( cor_texto, cor_fundogf ) } ogetvespirasr:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvespirasr:SetColor( cor_textog, cor_fundosg ), precalc() } ogetvespirasr:nClrTextDis := cor_cinz ogetvespirasr:nClrPaneDis := cor_fundo ogetvespirasr:disable() redefine GET ogetvd_medio2 VAR vd_medio2; id 2071 of odlgipl; PICTURE '@kzer 999.99 mm'; // picture '@kzer Ø 999.99 mm'; // when ( empty(vd_intern2) .and. empty(vd_extern2).and.!empty(vmaterial) ); MESSAGE 'Informe o diâmetro medio da espira da mola! [em milimetros]'; COLOR cor_texto, cor_fundog; spinner; update; VALID if( vd_medio2 > 0, ; if( fchkdims( 'medio', vd_medio2, modocapt ), ( precalc(), ogetvhaste1:setfocus(), .T. ), .F. ), ; ( vd_medio2 := 0, ogetvd_medio2:refresh(), .T. ) ) ogetvd_medio2:ctooltip := 'Informe o diâmetro médio da espira da mola! [em milimetros]' ogetvd_medio2:bkeydown := {| nk | if( nk == VK_F2, msgalert( 'completar' ), ) } // COMPLETAR ogetvdescricao:bkeydown := {|nk| if( nk == VK_F2,( obtselcli:setfocus(),eval(obtselcli:baction)),)} IF modocapt == 'revisao' ogetvd_medio2:bkeydown := {| nk | if( nk == VK_F9, ; ( vd_medio2 := ( Planilha )->d_medio, ogetvd_medio2:refresh(), ogetvd_medio2:setfocus() ), ) } ENDIF ogetvd_medio2:bgotfocus := {|| cmsgqdr := 'Informe o diâmetro médio da espira da mola! [em milimetros]' + ; if( modocapt == 'revisao', CRLF + CRLF + 'Pressione F9 para voltar ao valor original!', '' ), ; os_msg:refresh(), ogetvd_medio2:SetColor( cor_texto, cor_fundogf ), precalc() } ogetvd_medio2:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvd_medio2:SetColor( cor_textog, cor_fundosg ), precalc() } ogetvd_medio2:nClrTextDis := cor_cinz ogetvd_medio2:nClrPaneDis := cor_fundo ogetvd_medio2:disable() redefine GET ogetvd_intern2 VAR vd_intern2; id 2081 of odlgipl; PICTURE '@kzer 999.99 mm'; // picture '@kzer Ø 999.99 mm'; // when ( empty(vd_extern2) .and. empty(vd_medio2).and.!empty(vmaterial) ); MESSAGE 'Informe o diâmetro interno da espira da mola! [em milimetros]'; COLOR cor_texto, cor_fundog; spinner; update; VALID if( vd_intern2 > 0, ; if( fchkdims( 'interno', vd_intern2, modocapt ), ( precalc(), ogetvhaste1:setfocus(), .T. ), .F. ), ; ( vd_intern2 := 0, ogetvd_intern2:refresh(), .T. ) ) IF modocapt == 'revisao' ogetvd_intern2:bkeydown := {| nk | if( nk == VK_F9, ; ( vd_intern2 := ( Planilha )->d_interno, ogetvd_intern2:refresh(), ogetvd_intern2:setfocus() ), ) } ENDIF ogetvd_intern2:ctooltip := 'Informe o diâmetro interno da espira da mola! [em milimetros]' ogetvd_intern2:bgotfocus := {|| cmsgqdr := 'Informe o diâmetro interno da espira da mola! [em milimetros]' + ; if( modocapt == 'revisao', CRLF + CRLF + 'Pressione F9 para voltar ao valor original!', '' ), os_msg:refresh(), ogetvd_intern2:SetColor( cor_texto, cor_bran ) } ogetvd_intern2:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvd_intern2:SetColor( cor_textog, cor_fundosg ), precalc() } ogetvd_intern2:nClrTextDis := cor_cinz ogetvd_intern2:nClrPaneDis := cor_fundo ogetvd_intern2:disable() redefine GET ogetvd_extern2 VAR vd_extern2; id 2091 of odlgipl; PICTURE '@kzer 999.99 mm'; // Ø 999.99 mm'; // when (empty(vd_intern2).and.empty(vd_medio2).and.!empty(vmaterial) ); MESSAGE 'Informe o diâmetro externo da espira da mola! [em milimetros]'; COLOR cor_texto, cor_fundog; spinner; update; VALID if( vd_extern2 > 0, ; if( fchkdims( 'externo', vd_extern2,, modocapt ), ( precalc(), ogetvhaste1:setfocus(), .T. ), .F. ), ; ( vd_extern2 := 0, ogetvd_extern2:refresh(), .T. ) ) IF modocapt == 'revisao' ogetvd_extern2:bkeydown := {| nk | if( nk == VK_F9, ; ( vd_extern2 := ( Planilha )->d_externo, ogetvd_extern2:refresh(), ogetvd_extern2:setfocus() ), ) } ENDIF ogetvd_extern2:ctooltip := 'Informe o diâmetro externo da espira da mola! [em milimetros]' ogetvd_extern2:bgotfocus := {|| cmsgqdr := 'Informe o diâmetro externo da espira da mola! [em milimetros]' + ; if( modocapt == 'revisao', CRLF + CRLF + 'Pressione F9 para voltar ao valor original!', '' ), os_msg:refresh(), ogetvd_extern2:SetColor( cor_texto, cor_fundogf ) } ogetvd_extern2:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvd_extern2:SetColor( cor_textog, cor_fundosg ), precalc() } ogetvd_extern2:nClrTextDis := cor_cinz ogetvd_extern2:nClrPaneDis := cor_fundo ogetvd_extern2:disable() redefine GET ogetvhaste1; VAR vhaste1; id 2101 of odlgipl; PICTURE '@kzer 9999.99 mm'; // when !empty( vd_intern2+vd_medio2+vd_extern2 ); MESSAGE 'Informe o tamanho da haste 1 da mola! [em milimetros] - (SE HOUVER!)'; COLOR cor_texto, cor_fundog; spinner; update IF modocapt == 'revisao' ogetvhaste1:bkeydown := {| nk | if( nk == VK_F9, ; ( vhaste1 := ( Planilha )->haste1, ogetvhaste1:refresh(), ogetvhaste1:setfocus() ), ) } ENDIF ogetvhaste1:ctooltip := 'Informe o tamanho da haste 1 da mola! [em milimetros] - (SE HOUVER!)' ogetvhaste1:bgotfocus := {|| cmsgqdr := 'Informe o tamanho da haste 1 da mola! [em milimetros] - (SE HOUVER!)' + ; if( modocapt == 'revisao', CRLF + CRLF + 'Pressione F9 para voltar ao valor original!', '' ), os_msg:refresh(), ogetvhaste1:SetColor( cor_texto, cor_fundogf ) } ogetvhaste1:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvhaste1:SetColor( cor_textog, cor_fundosg ), precalc() } ogetvhaste1:nClrTextDis := cor_cinz ogetvhaste1:nClrPaneDis := cor_fundo ogetvhaste1:disable() redefine GET ogetvhaste2 VAR vhaste2; id 2111 of odlgipl; PICTURE '@kzer 9999.99 mm'; // when !empty(vd_intern2+vd_medio2+vd_extern2); MESSAGE 'Informe o tamanho da haste 2 da mola [em milimetros] - (SE HOUVER!)'; COLOR cor_texto, cor_fundog; spinner; update IF modocapt == 'revisao' ogetvhaste2:bkeydown := {| nk | if( nk == VK_F9, ; ( vhaste2 := ( Planilha )->haste2, ogetvhaste2:refresh(), ogetvhaste2:setfocus() ), ) } ENDIF ogetvhaste2:ctooltip := 'Informe o tamanho da haste 2 da mola [em milimetros] - (SE HOUVER!)' ogetvhaste2:bgotfocus := {|| cmsgqdr := 'Informe o tamanho da haste 2 da mola! [em milimetros] - (SE HOUVER!)' + ; if( modocapt == 'revisao', CRLF + CRLF + 'Pressione F9 para voltar ao valor original!', '' ), ; os_msg:refresh(), ogetvhaste2:SetColor( cor_texto, cor_fundogf ) } ogetvhaste2:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvhaste2:SetColor( cor_textog, cor_fundosg ), precalc() } ogetvhaste2:nClrTextDis := cor_cinz ogetvhaste2:nClrPaneDis := cor_fundo ogetvhaste2:disable() redefine GET ogetvcustosuc VAR vcustosuc; id 4036 of odlgipl; PICTURE '@kze 99,999.99'; MESSAGE 'Informe o valor do kg de sucata para o material selecionado!'; COLOR cor_texto, cor_fundog; update IF modocapt == 'revisao' ogetvcustosuc:bkeydown := {| nk | if( nk == VK_F9, ; ( vcustosuc := ( Planilha )->custosuc, ogetvcustosuc:refresh(), ogetvcustosuc:setfocus() ), ) } ENDIF ogetvcustosuc:ctooltip := 'Informe o valor do kg de sucata para o material selecionado!' ogetvcustosuc:bgotfocus := {|| cmsgqdr := 'Informe o valor do kg de sucata para o material selecionado!' + ; if( modocapt == 'revisao', CRLF + CRLF + 'Pressione F9 para voltar ao valor original!', '' ), ; os_msg:refresh(), ogetvcustosuc:SetColor( cor_texto, cor_fundogf ) } ogetvcustosuc:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvcustosuc:SetColor( cor_textog, cor_fundosg ), precalc() } ogetvcustosuc:lDisColors := .F. // Desativa disable color ogetvcustosuc:nClrTextDis := cor_cinz // Cor texto disable status ogetvcustosuc:nClrPaneDis := cor_fundo // Cor fundo disable status ogetvcustosuc:nClrTextDis := cor_cinz ogetvcustosuc:nClrPaneDis := cor_fundo ogetvcustosuc:disable() redefine GET ogetvaprovsuc VAR vaprovsuc; id 4037 of odlgipl; PICTURE '@kzer 999.99 %'; MESSAGE 'Informe a porcentagem de aproveitamento do material sucateado!'; COLOR cor_texto, cor_fundog; update IF modocapt == 'revisao' ogetvaprovsuc:bkeydown := {| nk | if( nk == VK_F9, ; ( vaprovsuc := ( Planilha )->aprovsuc, ogetvaprovsuc:refresh(), ogetvaprovsuc:setfocus() ), ) } ENDIF ogetvaprovsuc:ctooltip := 'Informe a porcentagem de aproveitamento do material sucateado!' ogetvaprovsuc:bgotfocus := {|| cmsgqdr := 'Informe a porcentagem de aproveitamento do material sucateado!' + ; if( modocapt == 'revisao', CRLF + CRLF + 'Pressione F9 para voltar ao valor original!', '' ), ; os_msg:refresh(), ogetvaprovsuc:SetColor( cor_texto, cor_fundogf ) } ogetvaprovsuc:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvaprovsuc:SetColor( cor_textog, cor_fundosg ), precalc() } ogetvaprovsuc:lDisColors := .F. // Desativa disable color ogetvaprovsuc:nClrTextDis := cor_cinz // Cor texto disable status ogetvaprovsuc:nClrPaneDis := cor_fundo // Cor fundo disable status ogetvaprovsuc:nClrTextDis := cor_cinz ogetvaprovsuc:nClrPaneDis := cor_fundo ogetvaprovsuc:disable() redefine GET ogetvarteftdim VAR varteftdim; id 4123 of odlgipl; PICTURE '@k'; MESSAGE 'Informe as principais dimensões do artefato!'; COLOR cor_texto, cor_fundog; update IF modocapt == 'revisao' ogetvarteftdim:bkeydown := {| nk | if( nk == VK_F9, ; ( varteftdim := ( Planilha )->arteftdim, ogetvarteftdim:refresh(), ogetvarteftdim:setfocus() ), ) } ENDIF ogetvarteftdim:ctooltip := 'Informe as condições de pagamento!' ogetvarteftdim:bgotfocus := {|| cmsgqdr := 'Informe as principais dimensões do artefato!' + ; if( modocapt == 'revisao', CRLF + CRLF + 'Pressione F9 para voltar ao valor original!', '' ), ; os_msg:refresh(), ogetvarteftdim:SetColor( cor_texto, cor_fundogf ) } ogetvarteftdim:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvarteftdim:SetColor( cor_textog, cor_fundosg ) } ogetvarteftdim:nClrTextDis := cor_cinz ogetvarteftdim:nClrPaneDis := cor_fundo ogetvarteftdim:disable() redefine GET ogetvarteftvol VAR varteftvol; id 4117 of odlgipl; PICTURE '@k'; MESSAGE 'Informe o volume do artefato em mm3 !'; COLOR cor_texto, cor_fundog; update IF modocapt == 'revisao' ogetvarteftvol:bkeydown := {| nk | if( nk == VK_F9, ; ( varteftvol := ( Planilha )->arteftdim, ogetvarteftvol:refresh(), ogetvarteftvol:setfocus() ), ) } ENDIF ogetvarteftvol:ctooltip := 'Informe o volume do artefato em mm3 !' ogetvarteftvol:bgotfocus := {|| cmsgqdr := 'Informe o volume do artefato em mm3 !' + ; if( modocapt == 'revisao', CRLF + CRLF + 'Pressione F9 para voltar ao valor original!', '' ), ; os_msg:refresh(), ogetvarteftvol:SetColor( cor_texto, cor_fundogf ) } ogetvarteftvol:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvarteftvol:SetColor( cor_textog, cor_fundosg ) } ogetvarteftvol:nClrTextDis := cor_cinz ogetvarteftvol:nClrPaneDis := cor_fundo ogetvarteftvol:disable() redefine GET ogetvarteftmas VAR varteftmas; id 4119 of odlgipl; PICTURE '@k'; MESSAGE 'Informe o peso do "MILHEIRO" do artefato em kg !'; COLOR cor_texto, cor_fundog; update IF modocapt == 'revisao' ogetvarteftmas:bkeydown := {| nk | if( nk == VK_F9, ; ( varteftmas := ( Planilha )->arteftdim, ogetvarteftmas:refresh(), ogetvarteftmas:setfocus() ), ) } ENDIF ogetvarteftmas:ctooltip := 'Informe o peso do "MILHEIRO" do artefato em kg !' ogetvarteftmas:bgotfocus := {|| cmsgqdr := 'Informe o peso do "MILHEIRO" do artefato em kg !' + ; if( modocapt == 'revisao', CRLF + CRLF + 'Pressione F9 para voltar ao valor original!', '' ), ; os_msg:refresh(), ogetvarteftmas:SetColor( cor_texto, cor_fundogf ) } ogetvarteftmas:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvarteftmas:SetColor( cor_textog, cor_fundosg ) } ogetvarteftmas:nClrTextDis := cor_cinz ogetvarteftmas:nClrPaneDis := cor_fundo ogetvarteftmas:disable() redefine GET ogetvcondpagt VAR vcondpagt; id 4040 of odlgipl; PICTURE '@k!'; MESSAGE 'Informe as condições de pagamento!' + CRLF + 'Pode ser informado, posteriormente, pelo Deptº Comercial!'; COLOR cor_texto, cor_fundog; update IF modocapt == 'revisao' ogetvcondpagt:bkeydown := {| nk | if( nk == VK_F9, ; ( vcondpagt := ( Planilha )->condpagt, ogetvcondpagt:refresh(), ogetvcondpagt:setfocus() ), ) } ENDIF ogetvcondpagt:ctooltip := 'Informe as condições de pagamento!' ogetvcondpagt:bgotfocus := {|| cmsgqdr := 'Informe as condições de pagamento!' + ; if( modocapt == 'revisao', CRLF + CRLF + 'Pressione F9 para voltar ao valor original!', '' ), ; os_msg:refresh(), ogetvcondpagt:SetColor( cor_texto, cor_fundogf ) } ogetvcondpagt:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvcondpagt:SetColor( cor_textog, cor_fundosg ) } redefine GET ogetvtxcsll VAR vtxcsll; id 4021 of odlgipl; PICTURE '@ker 999.99 %'; MESSAGE 'Informe a taxa CSLL em porcentagem!'; COLOR cor_texto, cor_fundog; update; spinner; VALID if( vtxcsll >= 0, ( precalc(), .T. ), .F. ) ogetvtxcsll:bkeydown := {| nk | if( nk == VK_F9 .AND. modocapt == 'revisao', ; ( vtxcsll := ( Planilha )->txcsll, ogetvtxcsll:refresh(), ogetvtxcsll:setfocus() ), ; if( nk == VK_F8, ; ( vtxcsll := cfgtxcsll, ogetvtxcsll:refresh(), ogetvtxcsll:setfocus() ), ) ) } ogetvtxcsll:ctooltip := 'Informe a taxa CSLL em porcentagem!' ogetvtxcsll:bgotfocus := {|| cmsgqdr := 'Informe a taxa CSLL em porcentagem!' + CRLF + CRLF + ; 'Explo.: Meio por cento = 0,50 %' + CRLF + CRLF + ; if( modocapt == 'revisao', 'Pressione F9 para voltar ao valor original ou pressione F8 para obter valor padrão!', 'Pressione F8 para obter valor padrão!' ), ; os_msg:refresh(), ogetvtxcsll:SetColor( cor_texto, cor_fundogf ), precalc() } ogetvtxcsll:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvtxcsll:SetColor( cor_textog, cor_fundosg ) } redefine GET ogetvtxirpj VAR vtxirpj; id 4022 of odlgipl; PICTURE '@ker 999.99 %'; MESSAGE 'Informe a taxa IRPJ em porcentagem!'; COLOR cor_texto, cor_fundog; update; spinner; VALID if( vtxirpj >= 0, ( precalc(), .T. ), .F. ) ogetvtxirpj:bkeydown := {| nk | if( nk == VK_F9 .AND. modocapt == 'revisao', ; ( vtxirpj := ( Planilha )->txirpj, ogetvtxirpj:refresh(), ogetvtxirpj:setfocus() ), ; if( nk == VK_F8, ; ( vtxirpj := cfgtxirpj, ogetvtxirpj:refresh(), ogetvtxirpj:setfocus() ), ) ) } ogetvtxirpj:ctooltip := 'Informe a taxa IRPJ em porcentagem!' ogetvtxirpj:bgotfocus := {|| cmsgqdr := 'Informe a taxa IRPJ em porcentagem!' + CRLF + CRLF + ; 'Explo.: Cinco por cento = 5,00 %' + CRLF + CRLF + ; if( modocapt == 'revisao', 'Pressione F9 para voltar ao valor original ou pressione F8 para obter valor padrão!', 'Pressione F8 para obter valor padrão!' ), ; os_msg:refresh(), ogetvtxirpj:SetColor( cor_texto, cor_fundogf ) } ogetvtxirpj:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvtxirpj:SetColor( cor_textog, cor_fundosg ), precalc() } redefine GET ogetvtxicms VAR vtxicms; id 4023 of odlgipl; PICTURE '@ker 999.99 %'; MESSAGE 'Informe a taxa ICMS em porcentagem!'; COLOR cor_texto, cor_fundog; update; spinner; VALID if( vtxicms >= 0, ( precalc(), .T. ), .F. ) ogetvtxicms:bkeydown := {| nk | if( nk == VK_F9 .AND. modocapt == 'revisao', ; ( vtxicms := ( Planilha )->txicms, ogetvtxicms:refresh(), ogetvtxicms:setfocus() ), ; if( nk == VK_F8, ; ( vtxicms := cfgtxicms, ogetvtxicms:refresh(), ogetvtxicms:setfocus() ), ) ) } ogetvtxicms:ctooltip := 'Informe a taxa ICMS em porcentagem!' ogetvtxicms:bgotfocus := {|| cmsgqdr := 'Informe a taxa ICMS em porcentagem!' + CRLF + CRLF + ; 'Explo.: Dez por cento = 10,00 %' + CRLF + CRLF + ; if( modocapt == 'revisao', 'Pressione F9 para voltar ao valor original ou pressione F8 para obter valor padrão!', 'Pressione F8 para obter valor padrão!' ), ; os_msg:refresh(), ogetvtxicms:SetColor( cor_texto, cor_fundogf ) } ogetvtxicms:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvtxicms:SetColor( cor_textog, cor_fundosg ), precalc() } redefine GET ogetvtxpiscof VAR vtxpiscof; id 4024 of odlgipl; PICTURE '@ker 999.99 %'; MESSAGE 'Informe a taxa PIS/COFINS em porcentagem!'; COLOR cor_texto, cor_fundog; update; spinner; VALID if( vtxpiscof >= 0, ( precalc(), .T. ), .F. ) ogetvtxpiscof:bkeydown := {| nk | if( nk == VK_F9 .AND. modocapt == 'revisao', ; ( vtxpiscof := ( Planilha )->txpiscof, ogetvtxpiscof:refresh(), ogetvtxpiscof:setfocus() ), ; if( nk == VK_F8, ; ( vtxpiscof := cfgtxpisco, ogetvtxpiscof:refresh(), ogetvtxpiscof:setfocus() ), ) ) } ogetvtxpiscof:ctooltip := 'Informe a taxa PIS/COFINS em porcentagem!' ogetvtxpiscof:bgotfocus := {|| cmsgqdr := 'Informe a taxa PIS/COFINS em porcentagem!' + CRLF + CRLF + ; 'Explo.: Dez por cento = 10,00 %' + CRLF + CRLF + ; if( modocapt == 'revisao', 'Pressione F9 para voltar ao valor original ou pressione F8 para obter valor padrão!', 'Pressione F8 para obter valor padrão!' ), ; os_msg:refresh(), ogetvtxpiscof:SetColor( cor_texto, cor_fundogf ) } ogetvtxpiscof:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvtxpiscof:SetColor( cor_textog, cor_fundosg ), precalc() } redefine GET ogetvtxlucro VAR vtxlucro; id 4025 of odlgipl; PICTURE '@ker 999.99 %'; MESSAGE 'Informe a taxa de LUCRO em porcentagem!'; COLOR cor_texto, cor_fundog; update; spinner; VALID if( vtxlucro >= 0, ( precalc(), .T. ), .F. ) ogetvtxlucro:bkeydown := {| nk | if( nk == VK_F9 .AND. modocapt == 'revisao', ; ( vtxlucro := ( Planilha )->txlucro, ogetvtxlucro:refresh(), ogetvtxlucro:setfocus() ), ; if( nk == VK_F8, ; ( vtxlucro := cfgtxlucro, ogetvtxlucro:refresh(), ogetvtxlucro:setfocus() ), ) ) } ogetvtxlucro:ctooltip := 'Informe a taxa de LUCRO em porcentagem!' ogetvtxlucro:bgotfocus := {|| cmsgqdr := 'Informe a taxa de LUCRO em porcentagem!' + CRLF + CRLF + ; 'Explo.: Doze por cento = 12,00 %' + CRLF + CRLF + ; if( modocapt == 'revisao', 'Pressione F9 para voltar ao valor original ou pressione F8 para obter valor padrão!', 'Pressione F8 para obter valor padrão!' ), ; os_msg:refresh(), ogetvtxlucro:SetColor( cor_texto, cor_fundogf ) } ogetvtxlucro:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvtxlucro:SetColor( cor_textog, cor_fundosg ), precalc() } redefine GET ogetvtxtransp VAR vtxtransp; id 4026 of odlgipl; PICTURE '@ker 999.99 %'; MESSAGE 'Informe a taxa de TRANSPORTE em porcentagem!'; COLOR cor_texto, cor_fundog; update; spinner; VALID if( vtxtransp >= 0, ( precalc(), .T. ), .F. ) ogetvtxtransp:bkeydown := {| nk | if( nk == VK_F9 .AND. modocapt == 'revisao', ; ( vtxtransp := ( Planilha )->txtransp, ogetvtxtransp:refresh(), ogetvtxtransp:setfocus() ), ; if( nk == VK_F8, ; ( vtxtransp := cfgtxtransp, ogetvtxtransp:refresh(), ogetvtxtransp:setfocus() ), ) ) } ogetvtxtransp:ctooltip := 'Informe a taxa de TRANSPORTE em porcentagem!' ogetvtxtransp:bgotfocus := {|| cmsgqdr := 'Informe a taxa de TRANSPORTE em porcentagem!' + CRLF + CRLF + ; 'Explo.: Noventa e nove por cento = 99,00 %' + CRLF + CRLF + ; if( modocapt == 'revisao', 'Pressione F9 para voltar ao valor original ou pressione F8 para obter valor padrão!', 'Pressione F8 para obter valor padrão!' ), ; os_msg:refresh(), ogetvtxtransp:SetColor( cor_texto, cor_fundogf ) } ogetvtxtransp:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvtxtransp:SetColor( cor_textog, cor_fundosg ), precalc() } redefine GET ogetvtxdespad VAR vtxdespad; id 4027 of odlgipl; PICTURE '@ker 999.99 %'; MESSAGE 'Informe a taxa de DESPESAS ADMINISTRATIVAS em porcentagem!'; COLOR cor_texto, cor_fundog; update; spinner; VALID if( vtxdespad >= 0, ( precalc(), .T. ), .F. ) ogetvtxdespad:bkeydown := {| nk | if( nk == VK_F9 .AND. modocapt == 'revisao', ; ( vtxdespad := ( Planilha )->txdespad, ogetvtxdespad:refresh(), ogetvtxdespad:setfocus() ), ; if( nk == VK_F8, ; ( vtxdespad := cfgtxdespa, ogetvtxdespad:refresh(), ogetvtxdespad:setfocus() ), ) ) } ogetvtxdespad:ctooltip := 'Informe a taxa de DESPESAS ADMINISTRATIVAS em porcentagem!' ogetvtxdespad:bgotfocus := {|| cmsgqdr := 'Informe a taxa de DESPESAS ADMINISTRATIVAS em porcentagem!' + CRLF + CRLF + ; 'Explo.: Um por cento = 1,00 %' + CRLF + CRLF + ; if( modocapt == 'revisao', 'Pressione F9 para voltar ao valor original ou pressione F8 para obter valor padrão!', 'Pressione F8 para obter valor padrão!' ), ; os_msg:refresh(), ogetvtxdespad:SetColor( cor_texto, cor_fundogf ) } ogetvtxdespad:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvtxdespad:SetColor( cor_textog, cor_fundosg ), precalc() } /* redefine get ogetvcelula; var vcelula; id 4101; of odlgipl; picture '@k 9999'; color cor_texto,cor_fundog; update; valid if( val(vcelula) > 0 ,; if( idtecla == VK_F9 , ( xx := .f. , idtecla:=0, fvalidcel(modocapt) ),; fvalidcel(modocapt,odlgipl) ), .t. ) * F9 -> VOLTA AOS VALORES ORIGINAIS NA REVISAO ogetvcelula:bkeydown := {|nk| if( nk==VK_F9 .and. modocapt=='revisao',; if( fddanterior('redadoscel'),; ( xx:=.t., idtecla:=0 , ogetvcelula:refresh(),ogetvcelula:setfocus(),.T. ), ), )} ogetvcelula:bgotfocus := {|| precalc(),odlgipl:update(), idtecla:=0, xx:=.t. ,; cmsgqdr:='Informe a célula de fabricação!'+ CRLF+CRLF+; 'ou clique na "LUPA", à direita, para selecioná-la!' +; if( modocapt=='revisao', CRLF + CRLF + ; 'Caso queira voltar aos valores originais "DA CÉLULA" pressione a tecla F9 !',''),; os_msg:refresh(),ogetvcelula:setcolor(cor_texto,cor_fundogf)} ogetvcelula:blostfocus := {|| cmsgqdr:='', os_msg:refresh(),ogetvcelula:setcolor(cor_textog,cor_fundosg), precalc() } ogetvcelula:ctooltip := 'Informe a célula de fabricação!'+ CRLF+CRLF+; 'ou clique na "LUPA", à direita, para selecioná-la!'+; if(modocapt=='revisao', CRLF+CRLF+'Caso queira voltar aos valores originais pressione a tecla F9 !','') */ redefine GET ogetvcelula; VAR vcelula; id 4101; of odlgipl; PICTURE '@k 9999'; COLOR cor_texto, cor_fundog; update; bitmap "on"; // action( idtecla:=nk, obtselecel:setfocus(),eval(obtselecel:baction)) ; action( if( selecelu( modocapt, odlgipl ), ; ( getcelul(), precalc(), ogetvcelula:setfocus() ), ; ogetvcelula:setfocus() ), xx := .T. ); VALID if( Val( vcelula ) > 0, ; if( idtecla == VK_F2, ( xx := .F., idtecla := 0, .T. ), ; if( idtecla == VK_F9 .AND. modocapt == 'revisao', ; ( xx := .F., idtecla := 0, fvalidcel( modocapt ) ), ; fvalidcel( modocapt, odlgipl ) ) ), .F. ) ogetvcelula:lBtnTransparent := .F. ogetvcelula:bkeydown := {| nk | if( nk == VK_F9 .AND. modocapt == 'revisao', ; if( fddanterior( 'redadoscel' ), ( xx := .T., idtecla := 0, ogetvcelula:refresh(), ogetvcelula:setfocus(), .T. ), ), ; ) } ogetvcelula:bgotfocus := {|| precalc(), odlgipl:update(), idtecla := 0, xx := .T., ; cmsgqdr := 'Informe a célula de fabricação!' + CRLF + CRLF + ; 'ou clique na "LUPA", à direita, para selecioná-la!' + ; if( modocapt == 'revisao', CRLF + CRLF + ; 'Caso queira voltar aos valores originais "DA CÉLULA" pressione a tecla F9 !', '' ), ; ; os_msg:refresh(), ; ogetvcelula:SetColor( cor_texto, cor_fundogf ) } ogetvcelula:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ; ogetvcelula:SetColor( cor_textog, cor_fundosg ), precalc() } ogetvcelula:ctooltip := 'Informe a célula de fabricação!' + CRLF + ; 'ou clique na quadradinho, à direita, para selecioná-la!' + ; if( modocapt == 'revisao', CRLF + CRLF + 'Caso queira voltar aos valores originais pressione a tecla F9 !', '' ) /* redefine btnbmp obtselecel; id 4102; of odlgipl; file diskname()+':\'+curdir()+'\imagens\lupa.bmp'; noborder; update; cancel; action if( selecelu(modocapt,odlgipl),; ( getcelul(), precalc(), odlgipl:gonextctrl(ogetvcelula:hwnd)),; ogetvcelula:setfocus() ) // selecelu() é igual a tabelas porem de forma especial para células obtselecel:bgotfocus := {|| xx:=.t. } obtselecel:ctooltip := 'Clique aqui para selecionar uma célula do cadastro de células!' */ // *********************************************************************************** // ROTINA QUE CRIA OS GETS DE OPERAÇÕES DA CELULA QUE SERA SELECIONADA NO OGETVCELULA getsplop( @odlgipl, modocapt ) // *********************************************************************************** redefine GET ogetvtxdgf VAR vtxdgf; id 5718 of odlgipl; PICTURE '@ker 999.99 %'; MESSAGE 'Informe a taxa de Despesas Gerais de Fabricação!'; COLOR cor_texto, cor_fundog; update; spinner; VALID if( vtxdgf >= 0, ( precalc(), .T. ), .F. ) ogetvtxdgf:bkeydown := {| nk | if( nk == VK_F9 .AND. modocapt == 'revisao', ; ( vtxdgf := ( Planilha )->txdgf, ogetvtxdgf:refresh(), ogetvtxdgf:setfocus() ), ; if( nk == VK_F8, ; ( vtxdgf := cfgtxdgf, ogetvtxdgf:refresh(), ogetvtxdgf:setfocus() ), ) ) } ogetvtxdgf:ctooltip := 'Informe a taxa de Despesas Gerais de Fabricação!' ogetvtxdgf:bgotfocus := {|| cmsgqdr := 'Informe a taxa de Despesas Gerais de Fabricação!' + CRLF + CRLF + ; 'Explo.: Meio por cento = 0,50 %' + CRLF + CRLF + ; if( modocapt == 'revisao', 'Pressione F9 para voltar ao valor original ou pressione F8 para obter valor padrão!', 'Pressione F8 para obter valor padrão!' ), ; os_msg:refresh(), ogetvtxdgf:SetColor( cor_texto, cor_fundogf ), precalc() } ogetvtxdgf:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvtxdgf:SetColor( cor_textog, cor_fundosg ) } redefine GET ogetvobsv1pla; VAR vobsv1pla; id 6011 of odlgipl; PICTURE '@k!'; COLOR cor_texto, cor_fundog; update ogetvobsv1pla:bkeydown := {| nk | if( nk == VK_F9 .AND. modocapt == 'revisao', ; ( vobsv1pla := ( Planilha )->obsv1pla, ogetvobsv1pla:refresh(), ogetvobsv1pla:setfocus() ), ) } ogetvobsv1pla:bgotfocus := {|| cmsgqdr := 'Linha 1 -Informe quaisquer tipos de inforamacoes nestas 3 linhas!' + CRLF + CRLF + ; 'Capacidade: 80 caracteres para cada linha.', ; os_msg:refresh(), ogetvobsv1pla:SetColor( cor_texto, cor_fundogf ) } ogetvobsv1pla:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvobsv1pla:SetColor( cor_textog, cor_fundosg ) } ogetvobsv1pla:disable() redefine GET ogetvobsv2pla; VAR vobsv2pla; id 6012 of odlgipl; PICTURE '@k!'; COLOR cor_texto, cor_fundog; update IF modocapt == 'revisao' ogetvobsv2pla:bkeydown := {| nk | if( nk == VK_F9, ; ( ogetvobsv2pla := ( Planilha )->obsv2pla, ogetvobsv2pla:refresh(), ogetvobsv2pla:setfocus() ), ) } ENDIF ogetvobsv2pla:bgotfocus := {|| cmsgqdr := 'Linha 2 -Informe quaisquer tipos de inforamacoes nestas 3 linhas!' + CRLF + CRLF + 'Capacidade: 80 caracteres para cada linha.', os_msg:refresh(), ogetvobsv2pla:SetColor( cor_texto, cor_fundogf ) } ogetvobsv2pla:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvobsv2pla:SetColor( cor_textog, cor_fundosg ) } ogetvobsv2pla:disable() redefine GET ogetvobsv3pla; VAR vobsv3pla; id 6013 of odlgipl; PICTURE '@k!'; COLOR cor_texto, cor_fundog; update ogetvobsv3pla:bgotfocus := {|| cmsgqdr := 'Linha 3 -Informe quaisquer tipos de inforamacoes nestas 3 linhas!' + CRLF + CRLF + 'Capacidade: 80 caracteres para cada linha.', os_msg:refresh(), ogetvobsv3pla:SetColor( cor_texto, cor_fundogf ) } ogetvobsv3pla:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvobsv3pla:SetColor( cor_textog, cor_fundosg ) } ogetvobsv3pla:disable() IF modocapt == 'revisao' ogetvobsv3pla:bkeydown := {| nk | if( nk == VK_F9, ; ( ogetvobsv3pla := ( Planilha )->obsv3pla, ogetvobsv3pla:refresh(), ogetvobsv3pla:setfocus() ), ) } ENDIF redefine combobox ocbxvsolicita; VAR vsolicita; items arrsolicita; // DEIXAR VAZIO QUANDO NAO FOR NENHUMA DAS CAIXAS PADRAO id 7101 of odlgipl; COLOR cor_texto, cor_fundo; update; // STYLE CBS_DROPDOWNLIST /*if modocapt=='revisao' :bkeydown := {|nk| if( nk == VK_F9,; ( :=( Planilha )-> , :refresh(), :setfocus() ), )} endif*/ ocbxvsolicita:bgotfocus := {|| cmsgqdr := 'Selecione o nome de quem solicitou esta planilha!', os_msg:refresh(), ; ocbxvsolicita:SetColor( cor_texto, cor_fundogf ) } ocbxvsolicita:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ocbxvsolicita:SetColor( cor_textog, cor_fundosg ) } redefine combobox ocbxvanalista; VAR vanalista; items arranalista; // DEIXAR VAZIO QUANDO NAO FOR NENHUMA DAS CAIXAS PADRAO id 7201 of odlgipl; COLOR cor_texto, cor_fundo; update; STYLE CBS_DROPDOWNLIST // DEVERIA ESTA NO RECURSO. /*if modocapt=='revisao' :bkeydown := {|nk| if( nk == VK_F9,; ( :=( Planilha )-> , :refresh(), :setfocus() ), )} endif*/ ocbxvanalista:bgotfocus := {|| cmsgqdr := 'Selecione o nome de quem analisou esta planilha !', os_msg:refresh(), ; ocbxvanalista:SetColor( cor_texto, cor_fundogf ) } ocbxvanalista:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ocbxvanalista:SetColor( cor_textog, cor_fundosg ) } redefine GET ogetvdtanalise; VAR vdtanalise; // VARIAVEL UTILIZADA TAMBEM NA VERSAO ANTERIOR id 7301 of odlgipl; // picture '@r 99/99/9999'; COLOR cor_texto, cor_fundog; update; VALID .T. // CONCLUIR colocar um calendario e checador ogetvdtanalise:bkeydown := {| nk | if( nk == VK_F9 .AND. modocapt == 'revisao', ; ( vdtanalise := ( Planilha )->dtanalise, ogetvdtanalise:refresh(), ogetvdtanalise:setfocus() ), ; if( nk == VK_F2, ; ( obtcalend:setfocus(), Eval( obtcalend:baction ) ), ) ) } ogetvdtanalise:ctooltip := 'Informe a data em que esta planilha esta sendo confeccionada ou tecle F2 para selecionar o calendario!' ogetvdtanalise:bgotfocus := {|| cmsgqdr := 'Informe a data em que esta planilha esta sendo confeccionada ou tecle F2 para selecionar o calendario!', os_msg:refresh(), ogetvdtanalise:SetColor( cor_texto, cor_fundogf ) } ogetvdtanalise:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvdtanalise:SetColor( cor_textog, cor_fundosg ) } ogetvdtanalise:disable() redefine btnbmp obtcalend; id 7302; of odlgipl; action if( calendar(), ; ( vdtanalise := ndatasele, ogetvdtanalise:refresh(), ogetvdtanalise:setfocus() ), ; ogetvdtanalise:setfocus() ); FILE DiskName() + ':\' + CurDir() + '\imagens\lupa.bmp'; noborder; cancel; update obtcalend:ctooltip := 'Clique aqui para selecionar um calendario!' obtcalend:disable() redefine GET ogetvvalidade; VAR vvalidade; id 7401 of odlgipl; PICTURE '@k 999'; spinner; COLOR cor_texto, cor_fundog; update; VALID .T. // CONCLUIR IF modocapt == 'revisao' ogetvvalidade:bkeydown := {| nk | if( nk == VK_F9, ; ( vvalidade := ( Planilha )->validade, ogetvvalidade:refresh(), ogetvvalidade:setfocus() ), ) } ENDIF ogetvvalidade:ctooltip := 'Informe o prazo de validade para esta planilha!' ogetvvalidade:bgotfocus := {|| cmsgqdr := 'Informe o prazo de validade para esta planilha!', os_msg:refresh(), ogetvvalidade:SetColor( cor_texto, cor_fundogf ) } ogetvvalidade:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvvalidade:SetColor( cor_textog, cor_fundosg ) } ogetvvalidade:disable() redefine GET ogetvaprovador; // 7501 get nome do aprovador VAR vaprovador; id 7501 of odlgipl; PICTURE '@k!'; COLOR cor_texto, cor_fundog; update IF modocapt == 'revisao' ogetvaprovador:bkeydown := {| nk | if( nk == VK_F9, ; ( vaprovador := ( Planilha )->aprovador, ogetvaprovador:refresh(), ogetvaprovador:setfocus() ), ) } ENDIF ogetvaprovador:ctooltip := 'Informe o nome de quem aprovou os resultados da planilha!' ogetvaprovador:bgotfocus := {|| cmsgqdr := 'Informe o nome de quem aprovou os resultados da planilha!', os_msg:refresh(), ogetvaprovador:SetColor( cor_texto, cor_fundogf ) } ogetvaprovador:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvaprovador:SetColor( cor_textog, cor_fundosg ) } ogetvaprovador:disable() redefine GET ogetvdtaprova; VAR vdtaprova; id 7601 of odlgipl; PICTURE '@k'; COLOR cor_texto, cor_fundog; update ogetvdtaprova:bkeydown := {| nk | if( nk == VK_F9 .AND. modocapt == 'revisao', ; ( vdtaprova := ( Planilha )->dtaprova, ogetvdtaprova:refresh(), ogetvdtaprova:setfocus() ), ; if( nk == VK_F8, ; ( vdtaprova := diatual, ogetvdtaprova:refresh(), ogetvdtaprova:setfocus() ), ) ) } ogetvdtaprova:ctooltip := 'Informe a data da aprovação da planilha!' ogetvdtaprova:bgotfocus := {|| cmsgqdr := 'Informe a data da aprovação da planilha!' + CRLF + CRLF + ; if( modocapt == 'revisao', 'Pressione F9 para voltar ao valor original!', ; 'Pressione F8 para obter a data de hoje!' ), ; os_msg:refresh(), ogetvdtaprova:SetColor( cor_texto, cor_fundogf ) } ogetvdtaprova:blostfocus := {|| cmsgqdr := '', os_msg:refresh(), ogetvdtaprova:SetColor( cor_textog, cor_fundosg ) } ogetvdtaprova:disable() redefine button obtprepreg; id 8000; of odlgipl; action if( fchecatudo( modocapt ), ( regidado( modocapt ), l_liberado := .T., odlgipl:end() ), ); cancel; update; obtprepreg:ctooltip := 'Analisa os dados informados e, não encontrando inconsistências, realiza o registro.'; // color {|ob| if(ob:lmouseover,if(ob:lpressed,ct_bcs1p1,ct_bcs1p0),ct_bc)},; // {|ob| if(ob:lmouseover,if(ob:lpressed,cf_bcs1p1,cf_bcs1p0),cf_bc)} obtprepreg:disable() redefine button obtcancela; id 9000; of odlgipl; action odlgipl:end(); update; cancel; // color {|ob| if(ob:lmouseover,if(ob:lpressed,ct_bcs1p1,ct_bcs1p0),ct_bc)},; // {|ob| if(ob:lmouseover,if(ob:lpressed,cf_bcs1p1,cf_bcs1p0),cf_bc)} // odlgipl:bgotfocus := {|| alerta('zz'),; // HB_KeyPut( K_LEFT ) } odlgipl:lhelpicon := .F. activate dialog odlgipl center; // on paint poenotopo(odlgipl); // on right click if( GetKeyState(VK_CONTROL), fsopratestes(),if( l_testando,(ondestou(procfile()),owndprinc:end()), )); ON INIT ( odlgipl:lballoon := .T., ; oq_tipomol_4128:hide(), ; oq_fabrcli_4129:hide(), ; oq_circret_4130:hide() ); ON right click if( GetKeyState( VK_CONTROL ), ; fsopratestes(), ; if( l_testando, ( owndprinc:end(), l_retu := .T. ), ) ); VALID if( l_liberado, ( l_retu := .T., .T. ), ; if( naosim( 'Deseja cancelar esta ' + ; if( modocapt == 'inclusao', 'inclusão ?', if( modocapt == 'revisao', 'revisão ?', '' ) ) ), ; ( l_retu := .F., .T. ), .F. ) ) IF modocapt == Lower( 'inclusao' ) odlgantes:show() ENDIF olstbplan:setfocus( .T. ) // CONCLUSAO: EXCESSO DE PRIVATES, SPINNERs, CANCEL E UPDATES // OS REDEFINES SAYS ESTAO EM LOCAL ERRADO, PODENDO PROVOCAR ESTOURO // DA PILHA - REVEJA. DEPOIS DE MODIFICAR, TESTE E DIGA QUAL O EFEITO. HB_GCALL( .T. ) // NA SAIDA FORCAR LIMPEZA RETU l_retu // ********************** STAT FUNC ftranstmola() // ********************** IF AllTrim( ( Planilha )->tipomola ) == Upper( 'COMPRESSÃO' ) vtipomola := 1 ELSEIF AllTrim( ( Planilha )->tipomola ) == Upper( 'TRAÇÃO' ) vtipomola := 2 ELSEIF AllTrim( ( Planilha )->tipomola ) == Upper( 'TORÇÃO' ) vtipomola := 3 ELSEIF AllTrim( ( Planilha )->tipomola ) == Upper( 'ARTEFATO' ) vtipomola := 4 ELSE vtipomola := 0 ENDIF RETU .T. // ******************* STAT FUNC fvertxinic // ******************* LOCAL ctaxa, cindice IF vtxdespad >= 0 .AND. ; // colocanco " >= 0 " garante que valor será sempre positivo vtxpiscof >= 0 .AND. ; vtxicms >= 0 .AND. ; vtxlucro >= 0 .AND. ; vtxcsll >= 0 .AND. ; vtxirpj >= 0 .AND. ; vtxtransp >= 0 vc_tottaxi := ( vtxdespad + vtxpiscof + vtxicms + vtxlucro + vtxcsll + vtxirpj + vtxtransp ) ctaxa := AllTrim( trans( vc_tottaxi, '@e 999.99' ) ) + '%' cindice := ' ( i = ' + AllTrim( trans( ( 100 / ( 100 - vc_tottaxi ) ), '@e 999.999' ) ) + ')' vos_itottax := ctaxa + cindice ENDIF RETU NIL // ************************ STAT FUNC fzeramatp( v_ori ) // ************************* vmaterial := Space( 40 ) ogetvmaterial:refresh() IF v_ori # 'fmudagets' .AND. v_ori # 'material' vtipomola := 0 ENDIF vtiposecao := Space( 10 ) // vtiposecao := padr(upper('CIRCULAR'),10) vtiposecesc := 0 vtipoforesc := 0 vfabfornmp := nil varteftdim := Space( 30 ) // Dimensoes do Artefato varteftvol := 0 // Vol Artef varteftmas := 0 // Massa Artef ogetvarteftdim:refresh() ogetvarteftvol:refresh() ogetvarteftmas:refresh() voldsecao := '' vmatprimini := '' vc_matprim := 0 vforneced := Space( 30 ) os_forsel_2121:refresh() vcustosec := 0 os_vcusmp_2131:refresh() vlotminmp := 0 ogetvlotminmp:refresh() vdevetrata := ' ' vdeveolear := ' ' vpespecif := 0 vd_arame := 0 ogetvd_arame:refresh() vold_arame := 0 vldaxial := 0 ogetvldaxial:refresh() voldaxial := 0 vldradial := 0 ogetvldradial:refresh() voldradial := 0 vbdcustmp := Space( 8 ) vd_extern2 := 0 ogetvd_extern2:refresh() vd_externo := 0 vd_intern2 := 0 ogetvd_intern2:refresh() vd_interno := 0 vd_medio := 0 vd_medio2 := 0 ogetvd_medio2:refresh() vespiras := 0 ogetvespirasc:refresh() ogetvespirasr:refresh() vhaste1 := 0 ogetvhaste1:refresh() vhaste2 := 0 ogetvhaste2:refresh() vdesenvol := 0 varea := 0 vvolume := 0 vmassa := 0 v_pesopedd := 0 vc_matprim := 0 RETU NIL // ******************************** STAT FUNC fvalidmat( cmodo, lvimde ) // ******************************** LOCAL lretu linfmpmanual := .F. IF xx idtecla := 0 RETU .T. ELSEIF idtecla == VK_F2 xx := .F. idtecla := 0 RETU .T. ELSE fresetparcial( Lower( 'material' ), '' ) IF conferin( 'matprima', 'matprima', vmaterial, 40, 'nomematp', Upper( 'GETSPLA' ), '' ) IF AllTrim( Upper( vtiposecao ) ) == Upper( 'CIRCULAR' ) ogetvd_arame:refresh() ELSE ogetvldaxial:refresh() ENDIF IF Empty( vmatprimini ) vmatprimini := vmaterial ENDIF ogetvlotminmp:setfocus() lretu := .T. ELSE lretu := .F. ENDIF ENDIF resetcel( cmodo ) odlgipl:update() RETU lretu // ************************* STAT FUNC fselematp( cmodo ) // ************************* LOCAL lresetp := .F. IF tabelas( ProcFile(), Upper( 'VMATERIAL' ) ) IF cmodo == 'revisao' .AND. vmaterial == vmatprimini RETU .T. ELSEIF cmodo == 'revisao' .AND. vmaterial # vmatprimini vmatprimini := vmaterial ENDIF IF cmodo == 'inclusao' .AND. vmaterial == vmatprimini RETU .T. ELSEIF ( cmodo == 'inclusao' .AND. Empty( vmatprimini ) ) .OR. ; ( cmodo == 'inclusao' .AND. vmaterial # vmatprimini ) vmatprimini := vmaterial resetcel( cmodo ) ENDIF fresetparcial( 'material', '' ) RETU .T. ENDIF RETU .F. // ******************************** STAT FUNC fvalidarame( vsec, cmodo ) // ******************************** LOCAL lretu := .F. vsec := Lower( vsec ) IF GetKeyState( VK_ESCAPE ) .OR. ; GetKeyState( VK_UP ) .OR. ; GetKeyState( VK_LBUTTON ) .OR. ; linfmpmanual ogetvmaterial:setfocus() RETU .T. ENDIF IF Empty( vmaterial ) msgalert( 'Informe a MATÉRIA-PRIMA do arame!', 'Atenção!' ) RETU .F. ENDIF IF vsec == 'circular' .AND. Empty( vd_arame ) msgalert( 'Informe o diametro do arame!', 'Atenção!' ) RETU .F. ENDIF IF vsec == 'retangular' .AND. ( Empty( vldaxial ) .OR. Empty( vldradial ) ) msgalert( 'Informe as dimensões (radial e axial) da seção do arame!', 'Atenção!' ) RETU .F. ENDIF IF vsec == 'circular' IF mododecaptur == 'revisao' .AND. ; Empty( vold_arame ) .AND. ; AllTrim( vforneced ) == Upper( 'N/INF' ) .AND. ; !Empty( ( Planilha )->d_arame ) // SIGNIFICA QUE, ANTES DESTA REVISAO, OS DADOS DE: // CUSTOS DO MATERIAL, OLEAMENTO E TRATAMENTO // FORAM INFORMADOS MANUALMENTE. RETU .T. ENDIF IF Empty( vold_arame ) vold_arame := vd_arame ELSE IF vold_arame # vd_arame fresetparcial( 'arame', vsec ) resetcel( '' ) odlgipl:update() vold_arame := vd_arame ENDIF ENDIF ENDIF IF vsec == 'retangular' IF mododecaptur == 'revisao' .AND. ; Empty( voldaxial ) .AND. ; Empty( voldradial ) .AND. ; AllTrim( vforneced ) == Upper( 'N/INF' ) .AND. ; !Empty( ( Planilha )->ldaxial ) .AND. ; !Empty( ( Planilha )->ldradial ) // SIGNIFICA QUE, ANTES DESTA REVISAO, OS DADOS DE: // CUSTOS DO MATERIAL, OLEAMENTO E TRATAMENTO // FORAM INFORMADOS MANUALMENTE. RETU .T. ENDIF IF Empty( voldaxial ) voldaxial := vldaxial ELSE IF voldaxial # vldaxial fresetparcial( 'arame', vsec ) resetcel( cmodo ) odlgipl:update() voldaxial := vldaxial ENDIF ENDIF IF Empty( voldradial ) voldradial := vldradial ELSE IF voldradial # vldradial fresetparcial( 'arame', vsec ) resetcel( cmodo ) odlgipl:update() voldradial := vldradial ENDIF ENDIF ENDIF IF chkmpfor() os_forsel_2121:refresh() os_vcusmp_2131:refresh() ogetvespirasc:setfocus() lretu := .T. ELSE vforneced := Space( 30 ) vcustosec := 0 os_forsel_2121:refresh() os_vcusmp_2131:refresh() lretu := .F. ENDIF RETU lretu // ************************** STAT FUNC fchknrid( c_modop ) // ************************** LOCAL registro := ( Planilha )->( RecNo() ) LOCAL ordem := ( Planilha )->( dbOrderInfo( 5 ) ) LOCAL lretu := .F. LOCAL lresposta := .F. // checagem da parte inicial do número da planilha IF Val( subs( vnridplan, 1, 4 ) ) = 0 msgalert( 'O número da planilha deve estar contido no intervalo: 0001 a 9999 ' ) RETU .F. ENDIF // checagem do ano do planilha IF Val( subs( vnridplan, 5, 2 ) ) # Val( subs( AllTrim( Str( Year( Date() ) ) ), 3, 2 ) ) lreposta := msgyesno( 'O ano da planilha esta correto ?' ) IF lresposta == .T. lretu := .T. ELSE lretu := .F. ENDIF IF ! lretu RETU .F. ENDIF ENDIF // o número de revisão da planilha deve ser zero quando for inclusao de uma nova IF Val( subs( vnridplan, 7, 2 ) ) > 0 .AND. c_modop == 'inclusao' msgalert( 'Nas inclusões o número de revisão só pode ser igual a 00' ) RETU .F. ENDIF vnridplan := StrZero( Val( subs( vnridplan, 1, 4 ) ), 4, 0 ) + ; StrZero( Val( subs( vnridplan, 5, 2 ) ), 2, 0 ) + ; StrZero( Val( subs( vnridplan, 7, 2 ) ), 2, 0 ) ( Planilha )->( dbSetOrder( 'plidplan' ) ) ( Planilha )->( dbGoTop() ) IF ( Planilha )->( dbSeek( subs( vnridplan, 5, 2 ) + subs( vnridplan, 1, 4 ) + subs( vnridplan, 7, 2 ) ) ) alerta( 'Este número de planilha já está cadastrado!.' + CRLF + 'Por favor, tente outro!' ) ( Planilha )->( dbSetOrder( ordem ) ) ( Planilha )->( dbGoTop() ) ( Planilha )->( dbGoto( registro ) ) RETU .F. ENDIF ( Planilha )->( dbSetOrder( ordem ) ) ( Planilha )->( dbGoTop() ) ( Planilha )->( dbGoto( registro ) ) RETU .T. // ******************** STAT FUNC fdefinesays // COM RECURSOS, E MELHOR COLOCAR DENTRO DA FUNCAO QUE CONTEM O // DIALOGO DEFINE DIA... ACTIVATE DIA... PODE DAR ESTOURO DE PILHA AQUI. // DEPOIS DE POR NO LOCAL CORRETO, USE O UPDATE NELES. VEJA \SAMPLES // ******************** // QUADRO DO NUMERO DA PLANILHA E SITUAÇÃO redefine SAY os_frmpla_3000 id 3000 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_frmsit_4104 id 4104 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_numpla_3100 id 3100 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_situacao_4030 id 4030 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_dtregsit_4011 id 4011 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_numorcam_4099 id 4099 COLOR cor_txtsay, cor_fundo of odlgipl // QUADRO DO CÓDIGO DA PEÇA DADO PELO FABRICANTE (FABR.) redefine SAY os_frmcodfab_4070 id 4070 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_codpcfabr_4006 id 4006 COLOR cor_txtsay, cor_fundo of odlgipl // QUADRO DOS DADOS DO CLIENTE E DO PEDIDO redefine SAY os_frmcli_1000 id 1000 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_nomcli_1100 id 1100 COLOR cor_txtsay, cor_fundo of odlgipl font ofntbold redefine SAY os_numdes_1200 id 1200 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_numite_1300 id 1300 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_desmes_1400 id 1400 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_despro_1500 id 1500 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_codpccl4004 id 4004 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_volanua4033 id 4033 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_qtdpro_1600 id 1600 COLOR cor_txtsay, cor_fundo of odlgipl font ofntbold redefine SAY os_qtdmil_1610 id 1610 COLOR cor_txtsay, cor_fundo of odlgipl // say "quant em milhares..." redefine SAY os_qtdal1_1700 id 1700 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_qtdal2_1750 id 1750 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_qtdal3_1800 id 1800 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_qtdal4_1850 id 1850 COLOR cor_txtsay, cor_fundo of odlgipl // QUADRO DOS DADOS DO PRODUTO (MOLA) redefine SAY os_frmmol_2000 id 2000 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_tipmol_2010 id 2010 COLOR cor_txtsay, cor_fundo of odlgipl update redefine SAY os_forsec_2020 id 2020 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_matpri_2030 id 2030 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY oslotminmp id 4005 COLOR cor_txtsay, cor_fundo of odlgipl // redefine say id 4128 color cor_verm,cor_azule of odlgipl // oslotminmp:disable() redefine SAY os_respmp_4010 id 4010 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_dimara_2040 id 2040 COLOR cor_txtsay, cor_fundo of odlgipl // os_dimara_2040:disable() redefine SAY os_nespic_2050 id 2050 COLOR cor_txtsay, cor_fundo of odlgipl // os_nespic_2050:disable() redefine SAY os_ladaxi_2042 id 2042 COLOR cor_txtsay, cor_fundo of odlgipl // os_ladaxi_2042:disable() redefine SAY os_ladrad_2052 id 2052 COLOR cor_txtsay, cor_fundo of odlgipl // os_ladrad_2052:disable() redefine SAY os_nespiR_2060 id 2060 COLOR cor_txtsay, cor_fundo of odlgipl // os_nespiR_2060:disable() redefine SAY os_dimmed_2070 id 2070 COLOR cor_txtsay, cor_fundo of odlgipl // os_dimmed_2070:disable() redefine SAY os_dimint_2080 id 2080 COLOR cor_txtsay, cor_fundo of odlgipl // os_dimint_2080:disable() redefine SAY os_dimext_2090 id 2090 COLOR cor_txtsay, cor_fundo of odlgipl // os_dimext_2090:disable() redefine SAY os_haste1_2100 id 2100 COLOR cor_txtsay, cor_fundo of odlgipl // os_haste1_2100:disable() redefine SAY os_haste2_2110 id 2110 COLOR cor_txtsay, cor_fundo of odlgipl // os_haste2_2110:disable() redefine SAY os_fornmp_2120 id 2120 COLOR cor_txtsay, cor_fundo of odlgipl // os_fornmp_2120:disable() redefine SAY os_forsel_2121 id 2121 of odlgipl PROMPT AllTrim( vforneced ) COLOR cor_azul, cor_fundo update // os_forsel_2121:disable() redefine SAY os_cusmat_2130 id 2130 COLOR cor_txtsay, cor_fundo of odlgipl // os_cusmat_2130:disable() redefine SAY os_vcusmp_2131 id 2131 of odlgipl PROMPT AllTrim( trans( vcustosec, '@ez 99,999.99' ) ) COLOR cor_azul, cor_fundo update // os_vcusmp_2131:disable() redefine SAY os_presuc_4002 id 4002 COLOR cor_txtsay, cor_fundo of odlgipl // say preço da sucata // os_presuc_4002:disable() redefine SAY os_aprsuc_4003 id 4003 COLOR cor_txtsay, cor_fundo of odlgipl // say % aproveitamento da sucata // os_aprsuc_4003:disable() redefine SAY osvc_matprim id 4028 COLOR cor_txtsay, cor_fundo of odlgipl update // osvc_matprim:disable() redefine SAY os_vc_matprim id 4057 of odlgipl PROMPT AllTrim( trans( vc_matprim, '@ez 999,999,999.99' ) ) COLOR cor_vermt, cor_fundo UPDATE font ofntbold // os_vc_matprim:disable() redefine SAY ossv_pesomilha id 4158 COLOR cor_txtsay, cor_fundo of odlgipl update redefine SAY osv_pesomilha id 4159 of odlgipl PROMPT AllTrim( trans( vmassa, '@ze 99,999.999' ) ) COLOR cor_azul, cor_fundo update // DADOS DO ARTEFATO redefine SAY os_artfdim_4122 id 4122 COLOR cor_txtsay, cor_fundo of odlgipl // say dimensoes do artefato os_artfdim_4122:disable() redefine SAY os_artfvol_4116 id 4116 COLOR cor_txtsay, cor_fundo of odlgipl // say condições de pagamento os_artfvol_4116:disable() redefine SAY os_artfmas_4118 id 4118 COLOR cor_txtsay, cor_fundo of odlgipl // say condições de pagamento os_artfmas_4118:disable() // QUADRO COND.PAGTO redefine SAY os_frmcpg_4017 id 4017 COLOR cor_txtsay, cor_fundo of odlgipl // quadro sucata e cond.PAGTO redefine SAY os_codpag_4007 id 4007 COLOR cor_txtsay, cor_fundo of odlgipl // say condições de pagamento // QUADRO DAS TAXAS redefine SAY os_frmtxs_4018 id 4018 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_csll_4012 id 4012 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_irpj_4013 id 4013 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_icms_4015 id 4015 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_piscof_4014 id 4014 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_lucro_4019 id 4019 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_tran_4020 id 4020 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_despad_4016 id 4016 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_indtottax PROMPT vos_itottax id 4008 COLOR cor_txtsay, cor_fundo of odlgipl UPDATE // mostra valor tx total // QUADRO DAS MENSAGENS redefine SAY os_msg PROMPT cmsgqdr id 10001 of odlgipl COLOR rgb( 0, 255, 255 ), cor_pret font ofntbold // QUADRO NUMERO DA CELULA E SUAS CONSTANTES redefine SAY os_frmcel_4000 id 4000 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_numcel_4100 id 4100 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_tpadra_4200 id 4200 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_hrmqen_4300 id 4300 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_hrmqre_4400 id 4400 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_hrmaes_4500 id 4500 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_tpadra_4201 id 4201 of odlgipl PROMPT AllTrim( trans( vpadrao, '@r 99.99 h' ) ) COLOR cor_azul, cor_fundo update redefine SAY os_hrmqen_4301 id 4301 of odlgipl PROMPT AllTrim( trans( vhrmaqerl, '@ 999.99' ) ) COLOR cor_azul, cor_fundo update redefine SAY os_hrmqre_4401 id 4401 of odlgipl PROMPT AllTrim( trans( vhrmaqret, '@ 999.99' ) ) COLOR cor_azul, cor_fundo update redefine SAY os_hrmaes_4501 id 4501 of odlgipl PROMPT AllTrim( trans( vhrmaqest, '@ 999.99' ) ) COLOR cor_azul, cor_fundo update // QUADRO DAS OPERAÇÕES redefine SAY os_frmope_4071 id 4071 COLOR cor_txtsay, cor_fundo of odlgipl // ENROLAR 7000 redefine SAY os_enro7k_5100 id 5100 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_hrhm7k_5110 id 5110 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_5115 id 5115 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_pontil_20140 id 20140 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_tp1k7k_5130 id 5130 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY osvc_TotEnrl7 id 20005 of odlgipl PROMPT trans( vc_totenrl7, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // ENROLAR redefine SAY os_enrola_5150 id 5150 COLOR cor_azule, cor_fundo of odlgipl font ofntbold redefine SAY os_hmenro_5160 id 5160 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_padenr_5170 id 5170 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pherol_5180 id 5180 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_20141 id 20141 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_TotEnrl id 20009 of odlgipl PROMPT trans( vc_totenrl, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // ESTAMPAR COM PRENSA redefine SAY os_estamP_5200 id 5200 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_nopest_5210 id 5210 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_4001 id 4001 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_pontil_20142 id 20142 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_pdestP_5230 id 5230 COLOR cor_txtsay, cor_fundo of odlgipl // say peças/dia redefine SAY osvc_TotEstp id 20028 of odlgipl PROMPT trans( vc_totestp, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // ESTAMPAR COM MAQUINA redefine SAY os_estamM_5250 id 5250 COLOR cor_azule, cor_fundo of odlgipl font ofntbold// COR AZUL ESCURO SIGNIFICA QUE ESTA OPERAÇÃO INFLUENCIA NO VALOR DE VENDA PELA VARIAÇÃO DAS QUANTIDADE redefine SAY os_hrmaqe_5260 id 5260 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_padrae_5270 id 5270 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_phestM_5280 id 5280 COLOR cor_vermt, cor_fundo of odlgipl redefine SAY os_pontil_20143 id 20143 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totestm id 20057 of odlgipl PROMPT trans( vc_totEstm, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // REVENIR redefine SAY os_reveni_5300 id 5300 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_5305 id 5305 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_cmreve_4059 id 4059 COLOR cor_txtsay, cor_fundo of odlgipl // custo/mil redefine SAY os_pontil_20144 id 20144 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totrevn id 20058 of odlgipl PROMPT trans( vc_totrevn, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // CALIBRAR redefine SAY os_calibr_5330 id 5330 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_5335 id 5335 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_prdica_5340 id 5340 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_20145 id 20145 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totclbr id 20059 of odlgipl PROMPT trans( vc_totclbr, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // ENDIREITAR-CORTAR redefine SAY os_cortar_5360 id 5360 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_5365 id 5365 COLOR cor_txtsay, cor_fundo of odlgipl // pontilh redefine SAY os_prdico_5370 id 5370 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_20146 id 20146 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totendr id 20061 of odlgipl PROMPT trans( vc_TotEndr, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // LEV.OLHAL redefine SAY os_lolhal_5390 id 5390 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_opolha_5400 id 5400 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_5405 id 5405 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_prdiol_5410 id 5410 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_20147 id 20147 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totolha id 20084 of odlgipl PROMPT trans( vc_TotOlha, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // DOBRAR redefine SAY os_dobrar_5430 id 5430 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_opdobr_5440 id 5440 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_5445 id 5445 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_prdido_5450 id 5450 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_20148 id 20148 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totdobr id 20085 of odlgipl PROMPT trans( vc_TotDobr, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // RECORTAR redefine SAY os_recort_5470 id 5470 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_opreco_5480 id 5480 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_5485 id 5485 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_prdire_5490 id 5490 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_20149 id 20149 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totreco id 20086 of odlgipl PROMPT trans( vc_TotReco, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // CHANFRAR redefine SAY os_chanfr_5510 id 5510 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_opchan_5520 id 5520 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_5525 id 5525 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_prdich_5530 id 5530 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_20150 id 20150 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totchfr id 20108 of odlgipl PROMPT trans( vc_TotChfr, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // RETIFICAR redefine SAY os_retifi_5550 id 5550 COLOR cor_AZULE, cor_fundo of odlgipl font ofntbold redefine SAY os_numpas_4079 id 4079 COLOR cor_txtsay, cor_fundo of odlgipl// say passes redefine SAY os_pontil_5555 id 5555 COLOR cor_txtsay, cor_fundo of odlgipl // pontilh redefine SAY os_phreti_5560 id 5560 COLOR cor_vermt, cor_fundo of odlgipl redefine SAY os_pontil_20151 id 20151 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totretf id 20109 of odlgipl PROMPT trans( vc_TotRetf, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // OLEAR redefine SAY os_olear__5580 id 5580 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_5585 id 5585 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_pontil_20152 id 20152 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_cmolea_4061 id 4061 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY osvc_totolea id 20112 of odlgipl PROMPT trans( vc_TotOlea, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // SELEÇAO 100% redefine SAY os_sel100_5860 id 5860 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_5865 id 5865 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_prdise_5870 id 5870 COLOR cor_txtsay, cor_fundo of odlgipl // say peças/dia redefine SAY os_pontil_20153 id 20153 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totsele id 20113 of odlgipl PROMPT trans( vc_TotSele, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // LAVAR redefine SAY os_lavar__5950 id 5950 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_5952 id 5952 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_cmlava_4084 id 4084 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_20154 id 20154 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totlava id 20114 of odlgipl PROMPT trans( vc_TotLava, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // TAMBOREAR redefine SAY os_tambor_5955 id 5955 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_5956 id 5956 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_cmtamb_4085 id 4085 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_20155 id 20155 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_tottamb id 20115 of odlgipl PROMPT trans( vc_Tottamb, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // OPER.EXTRA 1,2 E 3 // 1 redefine SAY os_opext1_5961 id 5961 COLOR cor_txtsay, cor_fundo of odlgipl // say Op Extr 1 redefine SAY os_pontil_5963 id 5963 COLOR cor_txtsay, cor_fundo of odlgipl // redefine SAY os_cmopx1_4086 id 4086 COLOR cor_txtsay, cor_fundo of odlgipl // redefine SAY osvc_totopx1 id 20116 of odlgipl PROMPT trans( vc_totopx1, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update redefine SAY os_pontil_20156 id 20156 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado // 2 redefine SAY os_opext2_5966 id 5966 COLOR cor_txtsay, cor_fundo of odlgipl // say Op Extr 2 redefine SAY os_pontil_5968 id 5968 COLOR cor_txtsay, cor_fundo of odlgipl // redefine SAY os_cmopx2_4102 id 4102 COLOR cor_txtsay, cor_fundo of odlgipl // redefine SAY osvc_totopx2 id 20117 of odlgipl PROMPT trans( vc_totopx2, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update redefine SAY os_pontil_20157 id 20157 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado // 3 redefine SAY os_opext3_5971 id 5971 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_5973 id 5973 COLOR cor_txtsay, cor_fundo of odlgipl // redefine SAY os_cmopx3_4108 id 4108 COLOR cor_txtsay, cor_fundo of odlgipl // redefine SAY osvc_totopx3 id 20118 of odlgipl PROMPT trans( vc_totopx3, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update redefine SAY os_pontil_20158 id 20158 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado // AMORTIZAÇAO DO FERRAMENTAL 1,2 e 3 redefine SAY os_amortz_5890 id 5890 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_hrfabr_5892 id 5892 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_5895 id 5895 COLOR cor_txtsay, cor_fundo of odlgipl // pontilh redefine SAY os_loteam_5896 id 5896 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_20159 id 20159 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totfer1 id 20119 of odlgipl PROMPT trans( vC_TotFer1, '@rez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // 2 redefine SAY os_amort2_4087 id 4087 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_hrfab2_4088 id 4088 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_ponti2_4090 id 4090 COLOR cor_txtsay, cor_fundo of odlgipl // pontilh redefine SAY os_lotea2_4091 id 4091 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_20160 id 20160 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totfer2 id 20120 of odlgipl PROMPT trans( vC_TotFer2, '@ez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // 3 redefine SAY os_amort3_4093 id 4093 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_hrfab3_4094 id 4094 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_ponti3_4096 id 4096 COLOR cor_txtsay, cor_fundo of odlgipl // pontilh redefine SAY os_lotea3_4097 id 4097 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_20161 id 20161 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totfer3 id 20121 of odlgipl PROMPT trans( vC_TotFer3, '@ez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // TRAT.SUPERFICIAL redefine SAY os_tratam_5610 id 5610 COLOR cor_AZULE, cor_fundo of odlgipl font ofntbold redefine SAY os_forntt_5631 id 5631 COLOR cor_txtsay, cor_fundo of odlgipl // say fornec. redefine SAY os_pontil_20162 id 20162 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_tottsup id 20122 of odlgipl PROMPT trans( vc_tottsup, '@ez 999,999,999.99' ) COLOR cor_azul, cor_fundo update // JATEAR redefine SAY os_jatear_5670 id 5670 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_5675 id 5675 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_cmjate_4109 id 4109 COLOR cor_txtsay, cor_fundo of odlgipl // say custo/mil redefine SAY os_pontil_20163 id 20163 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totjato id 20123 of odlgipl PROMPT AllTrim( trans( vc_totjato, '@ez 999,999,999.99' ) ) COLOR cor_azul, cor_fundo update // COMPONENTES DE TERCEIROS redefine SAY os_comp3s_4029 id 4029 COLOR cor_txtsay, cor_fundo of odlgipl // say componentes de terceiros redefine SAY os_pontil_4034 id 4034 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_cmcp3s_4110 id 4110 COLOR cor_txtsay, cor_fundo of odlgipl // say componentes de terceiros redefine SAY os_pontil_20168 id 20168 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totcp3s id 20124 of odlgipl PROMPT AllTrim( trans( vc_totcp3s, '@ez 999,999,999.99' ) ) COLOR cor_azul, cor_fundo update // USINAR redefine SAY os_usinar_4073 id 4073 COLOR cor_txtsay, cor_fundo of odlgipl // say usinar redefine SAY os_pontil_4074 id 4074 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_cmusin_4111 id 4111 COLOR cor_txtsay, cor_fundo of odlgipl // say custo/mil redefine SAY os_pontil_20164 id 20164 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totusin id 20125 of odlgipl PROMPT AllTrim( trans( vc_totusin, '@ez 999,999,999.99' ) ) COLOR cor_azul, cor_fundo update // SOLDAR redefine SAY os_soldar_4076 id 4076 COLOR cor_txtsay, cor_fundo of odlgipl // say soldar redefine SAY os_pontil_4077 id 4077 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_cmsold_4112 id 4112 COLOR cor_txtsay, cor_fundo of odlgipl // say custo/mil redefine SAY os_pontil_20165 id 20165 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totsold id 20126 of odlgipl PROMPT AllTrim( trans( vc_totsold, '@ez 999,999,999.99' ) ) COLOR cor_azul, cor_fundo update // ROSCAR redefine SAY os_roscar_4081 id 4081 COLOR cor_txtsay, cor_fundo of odlgipl // say roscar redefine SAY os_pontil_4082 id 4082 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_cmrosc_4113 id 4113 COLOR cor_txtsay, cor_fundo of odlgipl // say custo/mil redefine SAY os_pontil_20166 id 20166 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totrosc id 20127 of odlgipl PROMPT AllTrim( trans( vc_totrosc, '@ez 999,999,999.99' ) ) COLOR cor_azul, cor_fundo update // PINTAR redefine SAY os_pintar_5640 id 5640 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_pontil_5645 id 5645 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY os_cmpint_4114 id 4114 COLOR cor_txtsay, cor_fundo of odlgipl // say custo/mil redefine SAY os_pontil_20167 id 20167 COLOR cor_txtsay, cor_fundo of odlgipl // pontilhado redefine SAY osvc_totpint id 20128 of odlgipl PROMPT AllTrim( trans( vc_totpint, '@ez 999,999,999.99' ) ) COLOR cor_azul, cor_fundo update // QUADRO DGF redefine SAY os_frmdgf_5716 id 5716 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY os_txdgf_5717 id 5717 COLOR cor_txtsay, cor_fundo of odlgipl // say Desp Ger.Fab redefine SAY osvc_tottxdgf id 5719 of odlgipl PROMPT AllTrim( trans( vc_tottxdgf, '@e 999,999,999.99' ) ) COLOR cor_azul, cor_fundo update // TOTALIZAÇÕES // CUSTO INDUSTRIAL redefine SAY oscustotpla id 20133 COLOR cor_bran, cor_verd of odlgipl oscustotpla:lwantclick := .T. oscustotpla:blclicked := {|| oscustotpla:refresh(), msginfo( " Concluir: mostrar os demais custos industriais " ) } redefine SAY osvcustotpla id 20130 of odlgipl PROMPT AllTrim( trans( vcustotpla, '@ez 999,999,999.9999' ) ) COLOR cor_azul, cor_fundo update // TAXAS // VALOR // SAY // VALOR DE VENDA 1 2 3 4 5 redefine SAY ostotvdpla id 20135 COLOR cor_bran, cor_verm of odlgipl // ostotvdpla:lWantClick := .t. // ostotvdpla:bLClicked := { || ostotvdpla:refresh(), msginfo( " concluir: mostrar os demais preços de venda " ) } redefine SAY ostotvdpl2 id 20129 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY ostotvdpl3 id 20169 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY ostotvdpl4 id 20170 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY ostotvdpl5 id 20171 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY ostottaxv id 20134 COLOR cor_txtsay, cor_fundo of odlgipl redefine SAY osvc_tottaxv id 20131 of odlgipl PROMPT AllTrim( trans( vtotvdpla - vcustotpla, '@ez 999,999,999.9999' ) ) COLOR cor_azul, cor_fundo update redefine SAY osvtotvdpla id 20132 of odlgipl PROMPT AllTrim( trans( vTotVdPla, '@ez 999,999,999.9999' ) ) COLOR cor_azul, cor_fundo update redefine SAY osvtotvdpl2 id 20136 of odlgipl PROMPT AllTrim( trans( vTotVdPl2, '@ez 999,999,999.9999' ) ) COLOR cor_azul, cor_fundo update redefine SAY osvtotvdpl3 id 20137 of odlgipl PROMPT AllTrim( trans( vTotVdPl3, '@ez 999,999,999.9999' ) ) COLOR cor_azul, cor_fundo update redefine SAY osvtotvdpl4 id 20138 of odlgipl PROMPT AllTrim( trans( vTotVdPl4, '@ez 999,999,999.9999' ) ) COLOR cor_azul, cor_fundo update redefine SAY osvtotvdpl5 id 20139 of odlgipl PROMPT AllTrim( trans( vTotVdPl5, '@ez 999,999,999.9999' ) ) COLOR cor_azul, cor_fundo update // OBSERVAÇÕES redefine SAY os_frmobs_6000 id 6000 COLOR cor_txtsay, cor_fundo of odlgipl // say quadro OBSERVAÇOES redefine SAY os_observ_6010 id 6010 COLOR cor_txtsay, cor_fundo of odlgipl // say Observações // RESPONSABILIDADES E DATAS redefine SAY os_frresp_7000 id 7000 COLOR cor_txtsay, cor_fundo of odlgipl // say quadro dos responsaveis e datas redefine SAY os_solici_7100 id 7100 COLOR cor_txtsay, cor_fundo of odlgipl // say solicitado por: redefine SAY os_analis_7200 id 7200 COLOR cor_txtsay, cor_fundo of odlgipl // say analisado por: redefine SAY os_dtregs_7300 id 7300 COLOR cor_txtsay, cor_fundo of odlgipl // say "registrado em:" redefine SAY os_validd_7400 id 7400 COLOR cor_txtsay, cor_fundo of odlgipl // say validade: redefine SAY os_aprova_7500 id 7500 COLOR cor_txtsay, cor_fundo of odlgipl // say aprovado por: redefine SAY os_dtapro_7600 id 7600 COLOR cor_txtsay, cor_fundo of odlgipl // say data Aprov.: RETU NIL // *************************** STAT FUNC fchecatudo( modoin ) // *************************** LOCAL n_ordem := ( Planilha )->( dbOrderInfo( 5 ) ) LOCAL registro := ( Planilha )->( RecNo() ) LOCAL l_ret := .F. IF ! maximo() RETU .F. ENDIF IF Empty( vnridplan ) msgalert( 'Informe o número da planilha!' ) ogetvnridplan:setfocus() RETU .F. ENDIF IF Empty( vcliente ) msgalert( 'Informe o nome do cliente!' ) ogetvcliente:setfocus() RETU .F. ENDIF IF Empty( vsituaesc ) alerta( 'É obrigatório informar a situação atual desta panilha!' ) ocbx_situacao_603:setfocus() RETU .F. ENDIF IF Empty( vdtregsit ) alerta( 'É obrigatório informar a data de registro da situação desta panilha!' ) ogetvdtregsit:setfocus() ENDIF // ******************************************************* // VERIFICA SE EXISTE OUTRA PLANILHA COM: * // CLIENTE, DESENHO, DESMESTRE, ITEM E DESCRICAO IGUAIS * IF ! fchkrepet( modoin ) RETU .F. ENDIF // ******************************************************* /* if empty(vidpcfabr) if ! msgyesno( 'Não foi informado o codigo utilizado pela "FABRICANTE" para a peça!'+CRLF+'Deseja continuar sem este dado?','Responda à pergunta abaixo!') ogetvidpcfabr:setfocus() retu .f. endif endif if empty(vidpcclie) if ! msgyesno( 'Não foi informado o codigo utilizado pelo "Cliente" para a peça!'+CRLF+'Deseja continuar sem este dado?','Responda à pergunta abaixo!') ogetvidpcclie:setfocus() retu .f. endif endif */ IF Empty( vcliente ) alerta( 'Informe o nome/razão social do cliente!' ) ogetvcliente:setfocus() RETU .F. ENDIF IF Empty( vquantpedd ) alerta( 'Informe a quantidade de peças do produto!' ) ogetvquantpedd:setfocus() RETU .F. ENDIF IF Empty( vquantped2 ) .OR. ; Empty( vquantped3 ) .OR. ; Empty( vquantped4 ) .OR. ; Empty( vquantped5 ) alerta( 'Informe as quantidades alternativas do pedido!' ) ogetvquantpedd:setfocus() RETU .F. ENDIF IF Empty( vmaterial ) alerta( 'Informe o nome da matéria-prima!' ) ogetvmaterial:setfocus() RETU .F. ENDIF IF vtipomola = 0 alerta( 'Selecione o tipo de produto!' ) obtcompressao:setfocus() RETU .F. ENDIF IF Empty( vtiposecao ) .AND. vtipomola # 4 alerta( 'Informe o formato da seção transversal do arame!' ) obtcircular:setfocus() RETU .F. ENDIF IF AllTrim( Upper( vtiposecao ) ) == Upper( 'CIRCULAR' ) .AND. Empty( vd_arame ) alerta( 'Informe o diâmetro do arame !' ) ogetvd_arame:setfocus() RETU .F. ENDIF IF AllTrim( Upper( vtiposecao ) ) == Upper( 'RETANGULAR' ) .AND. ( Empty( vldaxial ) .OR. Empty( vldradial ) ) alerta( 'Informe as dimensões do arame !' ) ogetvldaxial:setfocus() RETU .F. ENDIF IF vd_arame <= 1 .AND. vcelula == '5100' alerta( 'Para o diâmetro informado utilize a célula 5000' ) ogetvcelula:setfocus() RETU .F. ENDIF IF vd_arame > 1 .AND. vcelula == '5000' alerta( 'Para o diãmetro informado utilize a célula 5100' ) ogetvcelula:setfocus() RETU .F. ENDIF IF vd_arame <= 4 .AND. vcelula == '3100' alerta( 'Para o diâmetro informado utilize a célula 3000' ) ogetvcelula:setfocus() RETU .F. ENDIF IF vd_arame > 4 .AND. vcelula == '3000' alerta( 'Para o diãmetro informado utilize a célula 3100' ) ogetvcelula:setfocus() RETU .F. ENDIF IF vtipomola # 4 .AND. ( vd_intern2 <= 0 .OR. ; vd_medio2 <= 0 .OR. ; vd_extern2 <= 0 ) vd_intern2 := vd_medio2 := vd_extern2 := 0 ogetvd_intern2:refresh() ogetvd_medio2:refresh() ogetvd_extern2:refresh() alerta( 'Informe um dos diâmetros da peça! (interno,externo ou médio)' ) ogetvd_medio2:setfocus() RETU .T. ENDIF IF AllTrim( Str( vtipomola ) ) $ '123' .AND. Empty( vmassa ) alerta( 'Estão faltando dados para obtenção do custo da Matéria-Prima! - VERIFIQUE!!' ) ogetvmaterial:setfocus() RETU .F. ENDIF IF vfabfornmp .AND. vcustosec < 0 alerta( 'Estão faltando dados para obtenção do custo da Matéria-Prima! - VERIFIQUE!!' ) ogetvmaterial:setfocus() RETU .F. ENDIF IF vsituacao == Upper( 'A' ) .AND. Empty( vdtaprova ) alerta( 'Informe a data da aprovação do orçamento' ) os_numorcam_4099:enable() ogetvdocorcam:enable() os_aprova_7500:enable() os_dtapro_7600:enable() ogetvdtaprova:enable() ogetvaprovador:enable() ogetvaprovador:setfocus() RETU .F. ENDIF IF vsituacao == Upper( 'A' ) .AND. Empty( vdocorcam ) os_numorcam_4099:enable() ogetvdocorcam:enable() os_aprova_7500:enable() os_dtapro_7600:enable() alerta( 'Informe a identificação do documento da aprovação deste orçamento' ) ogetvdocorcam:setfocus() RETU .F. ENDIF // TAXAS MARKUP IF vtxdespad < 0 alerta( 'A taxa DESP.ADMIN. não pode ser MENOR DO QUE ZERO! (i.é.: negativa)' ) ogetvtxdespad:setfocus() RETU .F. ENDIF IF vtxpiscof < 0 alerta( 'A taxa PIS/COFINS não pode ser MENOR DO QUE ZERO! (i.é.: negativa)' ) ogetvtxpiscof:setfocus() RETU .F. ENDIF IF vtxicms < 0 alerta( 'A taxa ICMS não pode ser MENOR DO QUE ZERO! (i.é.: negativa)' ) ogetvtxicms:setfocus() RETU .F. ENDIF IF vtxlucro < 0 alerta( 'A taxa LUCRO não pode ser MENOR DO QUE ZERO! (i.é.: negativa)' ) ogetvtxlucro:setfocus() RETU .F. ENDIF IF vtxcsll < 0 alerta( 'A taxa CSLL não pode ser MENOR DO QUE ZERO! (i.é.: negativa)' ) ogetvtxcsll:setfocus() RETU .F. ENDIF IF vtxirpj < 0 alerta( 'A taxa IRPJ não pode ser MENOR DO QUE ZERO! (i.é.: negativa)' ) ogetvtxirpj:setfocus() RETU .F. ENDIF IF vtxtransp < 0 alerta( 'A taxa TRANSPORTE não pode ser MENOR DO QUE ZERO! (i.é.: negativa)' ) ogetvtxtransp:setfocus() RETU .F. ENDIF IF vtxdgf < 0 alerta( 'A taxa DGF não pode ser MENOR DO QUE ZERO! (i.é.: negativa)' ) ogetvtxdgf:setfocus() RETU .F. ENDIF // OPERAÇÃO EXTRA 1 2 E 3 IF vc_totopx1 > 0 .AND. Empty( vc_desopx1 ) alerta( 'Informe a descrição da operação extra 1!' ) ogetvc_desopx1:setfocus() RETU .F. ENDIF IF Empty( vc_totopx1 ) .AND. !Empty( vc_desopx1 ) alerta( 'Informe o custo/milheiro para a operação extra 1 ou exclua sua descrição!' ) ogetvc_totopx1:setfocus() RETU .F. ENDIF IF vc_totopx2 > 0 .AND. Empty( vc_desopx2 ) alerta( 'Informe a descrição da operação extra 2!' ) ogetvc_desopx2:setfocus() RETU .F. ENDIF IF Empty( vc_totopx2 ) .AND. !Empty( vc_desopx2 ) alerta( 'Informe o custo/milheiro para a operação extra 2 ou exclua sua descrição!' ) ogetvc_totopx2:setfocus() RETU .F. ENDIF IF vc_totopx3 > 0 .AND. Empty( vc_desopx3 ) alerta( 'Informe a descrição da operação extra 3!' ) ogetvc_desopx3:setfocus() RETU .F. ENDIF IF Empty( vc_totopx3 ) .AND. !Empty( vc_desopx3 ) alerta( 'Informe o custo/milheiro para a operação extra 3 ou exclua sua descrição!' ) ogetvc_totopx3:setfocus() RETU .F. ENDIF // CONCLUIR VERIFICAÇÕES // Obs.: Os dados de embalagem foram verificados na propria rotina precalc() RETU .T. // ******************** STAT FUNC fmudagets() // GETS PARA TIPO DE PRODUTO - COMPRESSAO TRACAO TORCAO ARTEFATO // ******************** /* If GetKeyState( VK_ESCAPE ).or.; GetKeyState( VK_UP ).or.; GetKeyState( VK_LBUTTON ) if vtipomola == 2 obtcompressao:aitems[2]:setfocus() retu .t. elseif vtipomola == 3 obtcompressao:aitems[3]:setfocus() retu .t. elseif vtipomola == 4 obtcompressao:aitems[4]:setfocus() retu .t. endif obtcompressao:aitems[1]:setfocus() retu .t. endif */ // fresetparcial('','') // ******************************************************** // ** ATENÇÃO : NÃO MODIFICAR A SEQUENCIA DAS LINHAS ABAIXO // ******************************************************** fzeramatp( 'fmudagets' ) os_respmp_4010:enable() // say fornecimento cliente fabricante os_matpri_2030:enable() // say Mat.Prima ogetvmaterial:enable() // 2031 ogetvmaterial:refresh() obtfabfornmp:SetColor( cor_azule, cor_fundog ) obtfabfornmp:refresh() obtclifornmp:SetColor( cor_azule, cor_fundog ) obtclifornmp:refresh() obtretangular:SetColor( cor_azule, cor_fundog ) obtretangular:refresh() obtcircular:SetColor( cor_azule, cor_fundog ) obtcircular:refresh() IF AllTrim( Str( vtipomola ) ) $ '123' // SE FOR COMPRESSÃO TRAÇÃO OU TORÇÃO obtcircular:enable() obtretangular:enable() os_forsec_2020:enable()// say SEÇÃO DO ARAME os_haste1_2100:enable() // say haste1 ogetvhaste1:enable() // 2101 get haste1 os_haste2_2110:enable() // say haste2 ogetvhaste2:enable() // 2111 get haste2 os_dimmed_2070:enable() // say diam. médio ogetvd_medio2:enable() // 2071 get diam. medio os_dimint_2080:enable() // say diam. interno ogetvd_intern2:enable() // 2081 get diam. interno os_dimext_2090:enable() // say diam externo ogetvd_extern2:enable() // 2091 get diam externoo os_artfdim_4122:disable()// say dimensoes do artef ogetvarteftdim:disable() // 4123 get dimens. artf os_artfvol_4116:disable()// say volume artf ogetvarteftvol:disable() // 4117 get volume artf os_artfmas_4118:disable()// say say massa do artef ogetvarteftmas:disable() // 4119 get massa do artef IF vtipomola == 1 // compressão obtcompressao:SetColor( cor_verm, cor_verdf ) obttracao:SetColor( cor_azule, cor_fundog ) obttorcao:SetColor( cor_azule, cor_fundog ) obtartefato:SetColor( cor_azule, cor_fundog ) ELSEIF vtipomola == 2 obtcompressao:SetColor( cor_azule, cor_fundog ) obttracao:SetColor( cor_verm, cor_verdf ) obttorcao:SetColor( cor_azule, cor_fundog ) obtartefato:SetColor( cor_azule, cor_fundog ) ELSEIF vtipomola == 3 obtcompressao:SetColor( cor_azule, cor_fundog ) obttracao:SetColor( cor_azule, cor_fundog ) obttorcao:SetColor( cor_verm, cor_verdf ) obtartefato:SetColor( cor_azule, cor_fundog ) ENDIF IF vtipomola == 1 vctpm := ' COMPRESSÃO ' ELSEIF vtipomola == 2 vctpm := ' TRAÇÃO ' ELSEIF vtipomola == 3 vctpm := ' TORÇÃO ' ENDIF ELSEIF vtipomola == 4 // SE FOR ARTEFATO vd_arame := 0 vespiras := 0 vldaxial := 0 vldradial := 0 vespiras := 0 vd_medio2 := 0 vd_intern2 := 0 vd_extern2 := 0 vhaste1 := 0 vhaste2 := 0 os_forsec_2020:disable()// say SEÇÃO DO ARAME obtcircular:disable() // obtretangular:disable() os_dimara_2040:disable() // say diam.arame ogetvd_arame:disable() // 2041 get diam arame p/seçao circular (vd_arame) os_nespic_2050:disable() // say num. espiras circ ogetvespirasc:disable() // 2051 get num. espiras circ os_ladaxi_2042:disable() // say lado axial ogetvldaxial:disable() // 2043 get ld axial os_ladrad_2052:disable() // say ld radial ogetvldradial:disable() // 2053 get ld radial os_nespiR_2060:disable() // say num esp para secao retang ogetvespirasR:disable() // 2061 get num esp para secao retang os_dimmed_2070:disable() // say diam. médio ogetvd_medio2:disable() // 2071 get diam. medio os_dimint_2080:disable() // say diam. interno ogetvd_intern2:disable() // 2081 get diam. interno os_dimext_2090:disable() // say diam externo ogetvd_extern2:disable() // 2091 get diam externoo os_haste1_2100:disable() // say haste1 ogetvhaste1:disable() // 2101 get haste1 os_haste2_2110:disable() // say haste2 ogetvhaste2:disable() // 2111 get haste2 ossv_pesomilha:enable() // 4158 say peso do milheiro osv_pesomilha:enable() // 4159 peso do milheiro (vmassa) os_artfdim_4122:enable()// say dimensoes do artef ogetvarteftdim:enable() // 4123 get dimens. artf os_artfvol_4116:enable()// say volume artf ogetvarteftvol:enable() // 4117 get volume artf os_artfmas_4118:enable()// say say massa do artef ogetvarteftmas:enable() // 4119 get massa do artef obtcompressao:SetColor( cor_azule, cor_fundog ) obttracao:SetColor( cor_azule, cor_fundog ) obttorcao:SetColor( cor_azule, cor_fundog ) obtartefato:SetColor( cor_verm, cor_verdf ) vctpm := ' ARTEFATO ' ELSE vctpm := ' - ' ENDIF oq_tipomol_4128:hide() oq_fabrcli_4129:show() oq_circret_4130:hide() obtfabfornmp:setfocus() odlgipl:update() //??? RETU NIL // ********************** STAT FUNC fmudagetsmp() // ********************** vtiposecesc := 0 vlotminmp := 0 vcustosec := 0 vforneced := Space( 30 ) vcustosuc := 0 vaprovsuc := 0 vmaterial := Space( 40 ) vfabfornmp := nil obtretangular:SetColor( cor_azule, cor_fundog ) obtcircular:SetColor( cor_azule, cor_fundog ) IF vtipoforesc == 1 // FABRICANTE FORNECE MAT.PRIMA vfabfornmp := .T. osvc_matprim:enable() // 4028 os_vc_matprim:enable() // 4057 oslotminmp:enable() // 4005 say lote min. ogetvlotminmp:enable() // 4009 get lote min (vlotminmp) os_fornmp_2120:enable() // say fornecedor da m.p os_forsel_2121:enable() // say nome do fornecedor (vforneced) os_cusmat_2130:enable() // say custo do kg da mat p os_vcusmp_2131:enable() // valor do custo do kk da mp 9 (vcustosec) os_presuc_4002:enable() // say custo do kg da sucata ogetvcustosuc :enable() // 4036 get custo do kg da sucata os_aprsuc_4003:enable() // say reaprov. sucata ogetvaprovsuc:enable() // 4037 get aproveita// da sucata obtfabfornmp:SetColor( cor_verm, cor_verdf ) obtclifornmp:SetColor( cor_azule, cor_fundog ) vcfabcli := ' FABRICANTE ' ELSEIF vtipoforesc == 2 // CLIENTE FORNECE M.PRIMA vfabfornmp := .F. osvc_matprim:disable() // 4028 os_vc_matprim:disable() // 4057 oslotminmp:disable() // 4005 say lote min. ogetvlotminmp:disable() // 4009 get lote min (vlotminmp) os_fornmp_2120:disable() // say fornecedor da m.p os_forsel_2121:disable() // say nome do fornecedor (vforneced) os_cusmat_2130:disable() // say custo do kg da mat p os_vcusmp_2131:disable() // valor do custo do kk da mp 9 (vcustosec) os_presuc_4002:disable() // say custo do kg da sucata ogetvcustosuc:disable() // 4036 get custo do kg da sucata os_aprsuc_4003:disable() // say reaprov. sucata ogetvaprovsuc:disable() // 4037get aprov. da sucata obtfabfornmp:SetColor( cor_azule, cor_fundog ) obtclifornmp:SetColor( cor_verm, cor_verdf ) vcfabcli := ' CLIENTE ' ENDIF IF vtipomola == 4 oq_tipomol_4128:hide() oq_fabrcli_4129:hide() oq_circret_4130:hide() ogetvmaterial:setfocus() ELSEIF AllTrim( Str( vtipomola ) ) $ '123' obtretangular:setfocus() oq_tipomol_4128:hide() oq_fabrcli_4129:hide() oq_circret_4130:show() ELSE vtipomola := 0 vtipoforesc := 0 vtiposecesc := 0 vfabfornmp := nil obtcompressao:SetColor( cor_azule, cor_fundog ) obtcompressao:setfocus() obttracao:SetColor( cor_azule, cor_fundog ) obttracao:setfocus() obttorcao:SetColor( cor_azule, cor_fundog ) obttorcao:setfocus() obtartefato:SetColor( cor_azule, cor_fundog ) obtartefato:setfocus() obtfabfornmp:SetColor( cor_azule, cor_fundog ) obtfabfornmp:refresh() obtclifornmp:SetColor( cor_azule, cor_fundog ) obtclifornmp:refresh() oq_tipomol_4128:show() oq_fabrcli_4129:hide() oq_circret_4130:hide() ENDIF odlgipl:update() //??? RETU NIL // ********************** STAT FUNC fmudagetsec() // ********************** vmaterial := Space( 40 ) vtiposecao := Space( 10 ) vd_arame := 0 vespirasc := 0 vldaxial := 0 vldradial := 0 vespirasR := 0 vlotminmp := 0 vcustosec := 0 vforneced := Space( 30 ) vcustosuc := 0 vaprovsuc := 0 ogetvmaterial:refresh() ossv_pesomilha:enable() // 4158 say peso do milheiro osv_pesomilha:enable() // 4159 peso do milheiro (vmassa) IF vtiposecesc == 1 // CIRCULAR vtiposecao := Upper( PadR( 'CIRCULAR', 10 ) ) os_dimara_2040:enable() // say diam.arame ogetvd_arame:enable() // 2041 get diam arame p/seçao circular (vd_arame) os_nespic_2050:enable() // say num. espiras circ ogetvespirasc:enable() // 2051 get num. espiras circ os_ladaxi_2042:disable() // say lado axial ogetvldaxial:disable() // 2043 get ld axial os_ladrad_2052:disable() // say ld radial ogetvldradial:disable() // 2053 get ld radial os_nespiR_2060:disable() // say num esp para secao retang ogetvespirasR:disable() // 2061 get num esp para secao retang obtcircular:SetColor( cor_verm, cor_verdf ) obtretangular:SetColor( cor_azule, cor_fundog ) vccircret := ' CIRCULAR ' ELSEIF vtiposecesc == 2 vtiposecao := Upper( PadR( 'RETANGULAR', 10 ) ) os_dimara_2040:disable() // say diam.arame ogetvd_arame:disable() // 2041 get diam arame p/seçao circular (vd_arame) os_nespic_2050:disable() // say num. espiras circ ogetvespirasc:disable() // 2051 get num. espiras circ os_ladaxi_2042:enable() // say lado axial ogetvldaxial:enable() // 2043 get ld axial os_ladrad_2052:enable() // say ld radial ogetvldradial:enable() // 2053 get ld radial os_nespiR_2060:enable() // say num esp para secao retang ogetvespirasR:enable() // 2061 get num esp para secao retang obtcircular:SetColor( cor_azule, cor_fundog ) obtretangular:SetColor( cor_verm, cor_verdf ) vccircret := ' RETANGULAR ' ENDIF IF vtipoforesc == 1 .OR. vtipoforesc == 2 ogetvmaterial:setfocus() oq_tipomol_4128:hide() oq_fabrcli_4129:hide() oq_circret_4130:hide() ELSE vtipoforesc := 0 vtiposecesc := 0 vfabfornmp := nil obtfabfornmp:SetColor( cor_azule, cor_fundog ) obtclifornmp:SetColor( cor_azule, cor_fundog ) obtcircular:SetColor( cor_azule, cor_fundog ) obtretangular:SetColor( cor_azule, cor_fundog ) oq_tipomol_4128:hide() oq_fabrcli_4129:show() oq_circret_4130:hide() obtfabfornmp:setfocus() ENDIF odlgipl:update() // MOTIVO? SE FOR O CASO, REFRESQUE O OBJETO. RETU .T. // *************************************** STAT FUNC fchkdims( dimesp, valinfo, cmodo ) // calcula os outros diâmetros ao ser informado um deles // *************************************** LOCAL vmax, vmed, vmin IF GetKeyState( VK_ESCAPE ) .OR. ; GetKeyState( VK_UP ) .OR. ; GetKeyState( VK_LBUTTON ) IF AllTrim( Upper( vtiposecao ) ) == Upper( 'CIRCULAR' ) ogetvespirasC:setfocus() ELSEIF AllTrim( Upper( vtiposecao ) ) == Upper( 'RETANGULAR' ) ogetvespirasR:setfocus() ENDIF RETU .T. ENDIF // Combinações válidas: // lado axial e dmedio // lado axial e dexterno // lado axial e dinterno // Formulas decorrentes: // dmedio e dinterno -> lado axial= dm-di -> dm = lado axial+di -> di=dm- lado axial // dmedio e dexterno -> lado axial= de-dm -> de = lado axial+dm -> dm=de- lado axial // dinterno e dexterno -> lado axial= de-di/2 -> de = lado axial+di/2 -> di =2.(de- lado axial) // // Obrigatorio: Dexterno > Dmedio > Dinterno // Combinaçoes validas: // diam arame e dmedio // diam arame e dexterno // diam arame e dinterno // Formulas decorrentes: // dmedio e dinterno -> d = dm-di -> dm=d+di -> di=dm-d // dmedio e dexterno -> d = de-dm -> de=d+dm -> dm=de-d // dinterno e dexterno -> d = de-di/2 -> de=d+di/2 -> di =2.(de-d) /* if valinfo <= 0 if dimesp == 'interno' vd_intern2 := 0 ogetvd_intern2:refresh() elseif dimesp == 'medio' vd_medio2 := 0 ogetvd_medio2:refresh() elseif dimesp == 'externo' vd_extern2 := 0 ogetvd_extern2:refresh() endif retu .t. endif */ IF AllTrim( Upper( vtiposecao ) ) == Upper( 'CIRCULAR' ) IF Empty( vd_arame ) alerta( 'Informe o diâmetro do arame!' ) ogetvd_arame:setfocus() RETU .F. ENDIF IF dimesp == 'interno' vd_interno := vd_intern2 vd_extern2 := vd_externo := vd_interno + ( 2 * vd_arame ) vd_medio2 := vd_medio := vd_interno + vd_arame IF vd_medio < ( if( cmodo == 'revisao', vwmola, cfg_w_mola ) * vd_arame ) IF ! frespwmola( cmodo ) vd_interno := 0 vd_extern2 := vd_externo := 0 ogetvd_extern2:refresh() vd_medio2 := vd_medio := 0 ogetvd_medio2:refresh() RETU .F. ENDIF ENDIF ELSEIF dimesp == 'medio' vd_medio := vd_medio2 vd_externo := 0 vd_interno := 0 IF vd_medio < ( if( cmodo == 'revisao', vwmola, cfg_w_mola ) * vd_arame ) IF ! frespwmola( cmodo ) vd_medio := 0 vd_extern2 := vd_externo := 0 ogetvd_extern2:refresh() vd_intern2 := vd_interno := 0 ogetvd_intern2:refresh() RETU .F. ENDIF ENDIF vd_extern2 := vd_externo := vd_medio + vd_arame vd_intern2 := vd_interno := vd_medio - vd_arame ELSEIF dimesp == 'externo' vd_externo := vd_extern2 vd_intern2 := vd_interno := vd_externo - ( 2 * vd_arame ) vd_medio2 := vd_medio := vd_externo - vd_arame IF vd_medio < ( if( cmodo == 'revisao', vwmola, cfg_w_mola ) * vd_arame ) IF ! frespwmola( cmodo ) vd_externo := 0 vd_intern2 := vd_interno := 0 ogetvd_intern2:refresh() vd_medio2 := vd_medio := 0 ogetvd_medio2:refresh() RETU .F. ENDIF ENDIF ELSE msgalert( 'Informe um dos três diâmetros solicitados!' ) RETU .F. ENDIF ELSEIF AllTrim( Upper( vtiposecao ) ) == Upper( 'RETANGULAR' ) IF Empty( vldaxial ) msgalert( 'Informe as dimensões dos lados axial e radial da seção retângular do arame!' ) ogetvldaxial:setfocus() RETU .F. ENDIF IF dimesp == 'interno' vd_interno := vd_intern2 vd_extern2 := vd_externo := vd_interno + ( 2 * vldaxial ) vd_medio2 := vd_medio := vd_interno + vldaxial IF vd_medio < ( if( cmodo == 'revisao', vwmola, cfg_w_mola ) * vldaxial ) IF ! frespwmola( cmodo ) vd_interno := 0 vd_extern2 := vd_externo := 0 ogetvd_extern2:refresh() vd_medio2 := vd_medio := 0 ogetvd_medio2:refresh() RETU .F. ENDIF ENDIF ELSEIF dimesp == 'medio' vd_medio := vd_medio2 vd_externo := 0 vd_interno := 0 IF vd_medio < ( if( cmodo == 'revisao', vwmola, cfg_w_mola ) * vldaxial ) IF ! frespwmola( cmodo ) vd_medio := 0 vd_extern2 := vd_externo := 0 ogetvd_extern2:refresh() vd_intern2 := vd_interno := 0 ogetvd_intern2:refresh() RETU .F. ENDIF ENDIF vd_extern2 := vd_externo := vd_medio + vldaxial vd_intern2 := vd_interno := vd_medio - vldaxial ELSEIF dimesp == 'externo' vd_externo := vd_extern2 vd_intern2 := vd_interno := vd_externo - ( 2 * vldaxial ) vd_medio2 := vd_medio := vd_externo - vldaxial IF vd_medio < ( if( cmodo == 'revisao', vwmola, cfg_w_mola ) * vldaxial ) IF ! frespwmola( cmodo ) vd_externo := 0 vd_intern2 := vd_interno := 0 ogetvd_intern2:refresh() vd_medio2 := vd_medio := 0 ogetvd_medio2:refresh() RETU .F. ENDIF ENDIF ENDIF ELSE alerta( 'Informe o tipo de seção! ( CIRCULAR OU RETANGULAR )' ) obtcircular:setfocus() RETU .F. ENDIF // muda as cores dos gets disabled ogetvd_medio2:ldiscolors := .F. ogetvd_medio2:nclrpanedis := cor_fundosg ogetvd_medio2:nclrtextdis := cor_textog settextcolor( ogetvd_medio2:hdc, ogetvd_medio2:nclrtextdis ) nclrbtcdxt := ogetvd_medio2:nclrtextdis ogetvd_extern2:ldiscolors := .F. ogetvd_extern2:nclrpanedis := cor_fundosg ogetvd_extern2:nclrtextdis := cor_textog settextcolor( ogetvd_extern2:hdc, ogetvd_extern2:nclrtextdis ) nclrbtcdxt := ogetvd_extern2:nclrtextdis ogetvd_intern2:ldiscolors := .F. ogetvd_intern2:nclrpanedis := cor_fundosg ogetvd_intern2:nclrtextdis := cor_textog settextcolor( ogetvd_intern2:hdc, ogetvd_intern2:nclrtextdis ) nclrbtcdxt := ogetvd_intern2:nclrtextdis ogetvd_extern2:refresh() ogetvd_intern2:refresh() ogetvd_medio2:refresh() ogetvhaste1:setfocus() IF fcalcmassa() RETU .T. ENDIF RETU .F. // ************************** STAT FUNC frespwmola( cmodo ) // ************************** LOCAL lret := .F. LOCAL cfrase, cfras1, cfras2, cfras3, cfras4 cfras1 := ' "W" (Índice da mola) atualmente configurado para: ' + ; if( cmodo == 'revisao', AllTrim( Str( vwmola ) ), AllTrim( Str( cfg_w_mola ) ) ) + CRLF + ; ' não pode ser atendido para as dimensões informadas: ' IF AllTrim( Upper( vtiposecao ) ) == Upper( 'CIRCULAR' ) cfras2 := ' "DIÂMETRO DO ARAME" ' ELSEIF AllTrim( Upper( vtiposecao ) ) == Upper( 'RETANGULAR' ) cfras2 := ' "LADO RADIAL" ' ELSE cfras2 := ' ' ENDIF IF cmodo == 'revisao' cfras3 := ' ( w atual= ' + AllTrim( Str( vwmola ) ) + ' )' ELSE cfras3 := ' ( w atual= ' + AllTrim( Str( cfg_w_mola ) ) + ' )' ENDIF cfras4 := CRLF + 'Deseja continuar ASSIM MESMO?' cfrase := cfras1 + cfras2 + cfras3 + CRLF + cfras4 IF msgnoyes( cfrase, 'Reponda a pergunta abaixo!' ) lret := .T. ELSE lret := .F. ENDIF ogetvd_extern2:refresh() ogetvd_intern2:refresh() ogetvd_medio2:refresh() RETU lret // ******************* STAT FUNC fcalcmassa // ******************* IF Empty( vpespecif ) .OR. ; ( AllTrim( Upper( vtiposecao ) ) == Upper( 'CIRCULAR' ) .AND. Empty( vd_arame ) ) .OR. ; ( AllTrim( Upper( vtiposecao ) ) == Upper( 'RETANGULAR' ) .AND. ( Empty( vldaxial ) .OR. ; Empty( vldradial ) ) ) alerta( 'Faltam dados físicos da materia-prima! (peso específico e/ou dimensões do material) ' ) RETU .F. ENDIF vdesenvol := ( pi() * vd_medio * vespiras ) + vhaste1 + vhaste2 IF AllTrim( Upper( vtiposecao ) ) == Upper( 'CIRCULAR' ) varea := pi() * ( vd_arame ^ 2 ) / 4 ELSEIF AllTrim( Upper( vtiposecao ) ) == Upper( 'RETANGULAR' ) varea := vldaxial * vldradial ENDIF vvolume := vdesenvol * varea vmassa := ( vvolume * vpespecif / 10 ^ 6 ) / ( 1 - ( vpercperdpp / 100 ) ) // .95 para gramas e com refugo de 5% // say trans(vdesenvol, '@ez 9,999,999.99') + ' mm' // say trans(varea , '@ez 9,999,999.99') + ' mm2' // say trans(vvolume , '@ez 9,999,999.99') + ' mm3' // say trans(vmassa , '@ez 9,999,999.99') + ' g' RETU .T. // ************************************* STAT FUNC fresetparcial( r_origem, vsec ) // ************************************* r_origem := Lower( r_origem ) IF r_origem == 'material' IF Empty( vmatprimini ) vmatprimini := vmaterial RETU .T. ENDIF IF vmaterial == vmatprimini RETU .T. ENDIF vmatprimini := vmaterial ENDIF IF r_origem == 'arame' IF vsec == Lower( 'circular' ) vldradial := 0 vldaxial := 0 vespirasr := 0 ELSEIF vsec == Lower( 'retangular' ) vd_arame := 0 vespirasc := 0 ENDIF ENDIF IF r_origem # 'arame' varteftdim := Space( 30 ) varteftvol := 0 varteftmas := 0 voldartfmas := 0 voldartfvol := 0 IF r_origem # 'material' vtiposecao := Space( 10 ) vtiposecesc := 0 voldsecao := '' ENDIF vd_arame := 0 vldradial := 0 vldaxial := 0 vespiras := 0 vd_extern2 := 0 vd_medio2 := 0 vd_intern2 := 0 vd_externo := 0 vd_medio := 0 vd_interno := 0 vhaste1 := 0 vhaste2 := 0 varteftdim := Space( 30 ) varteftvol := 0 varteftmas := 0 ENDIF vpespecif := 0 vdesenvol := 0 vvolume := 0 vmassa := 0 varea := 0 vcustosec := 0 vforneced := Space( 30 ) v_pesopedd := 0 vc_matprim := 0 vlotminmp := 0 ogetvlotminmp:refresh() os_forsel_2121:refresh() os_vcusmp_2131:refresh() // custo do material por kilo na seleç ogetvldradial:refresh() ogetvldaxial:refresh() ogetvd_arame:refresh() ogetvespirasr:refresh() ogetvespirasc:refresh() ogetvd_extern2:refresh() ogetvd_medio2:refresh() ogetvd_intern2:refresh() ogetvhaste1:refresh() ogetvhaste2:refresh() ogetvmaterial:refresh() ogetvarteftdim:refresh() ogetvarteftvol:refresh() ogetvarteftmas:refresh() odlgipl:update() RETU .T. // ************************* STAT FUNC fchkrepet( c_mod ) // ************************* LOCAL n_ordem := ( Planilha )->( dbOrderInfo( 5 ) ) LOCAL nregistro := ( Planilha )->( RecNo() ) LOCAL l_ret := .F. vcliente := PadR( AllTrim( vcliente ), 30 ) vdesenho := PadR( AllTrim( vdesenho ), 30 ) vdesmestre := PadR( AllTrim( vdesmestre ), 30 ) vdescricao := PadR( AllTrim( vdescricao ), 40 ) vitem := StrZero( Val( vitem ), 10, 0 ) IF c_mod == 'revisao' RETU .T. ENDIF IF Empty( vcliente ) .OR. ; Empty( vdesenho ) .OR. ; Empty( vdesmestre ) RETU .T. ENDIF ( Planilha )->( dbSetOrder( 'PCLDSDMI' ) ) IF ( Planilha )->( dbSeek( vcliente + vdesenho + vdesmestre + vitem ) ) .AND. ( Planilha )->( RecNo() ) != nregistro IF msgnoyes( 'A planilha de nº ' + ; trans( ( Planilha )->nridplan, '@r 9999/99-99' ) + ; ' do mesmo cliente utiliza mesmo nº de desenho, mesmo nº de des.mestre e mesmo nº deítem! ' + CRLF + ; 'Deseja continuar com este registro ?', ; 'Responda a pergunta abaixo' ) l_ret := .T. ELSE l_ret := .F. ENDIF ELSE l_ret := .T. ENDIF ( Planilha )->( dbSetOrder( n_ordem ) ) ( Planilha )->( dbGoTop() ) ( Planilha )->( dbGoto( nregistro ) ) RETU l_ret // ************************************ STAT FUNC fvalidcel( vmodus, odlgantes ) // ************************************ LOCAL vceltemp := vcelula PRIVA i, z IF vmodus == 'redadoscel' voldcelula := Space( 4 ) ENDIF IF Val( vcelula ) <= 0 msgalert( 'A informação da célula de fabricação é obrigatória!', 'Atenção!' ) voldcelula := Space( 4 ) IF vmodus # 'revisao' resetcel() ENDIF ogetvcelula:refresh() ogetvcelula:setfocus() odlgipl:update() RETU .F. ELSE IF vmodus == 'inclusao' resetcel() vcelula := vceltemp ENDIF ENDIF IF fchkdtobrig() xx := .F. idtecla := 0 vcelula := PadL( AllTrim( Str( Val( vcelula ) ) ), 4, '0' ) IF Empty( voldcelula ) voldcelula := vcelula ENDIF IF vcelula # voldcelula .AND. vmodus # 'revisao' resetcel( vmodus ) odlgipl:update() ENDIF IF vmodus == 'revisao' .AND. vcelula # ( Planilha )->celula IF simnao( 'Voce está modificando a célula de fabricação previamente registrada!' + CRLF + ; 'Se continuar: As operações registradas anteriormente serão apagadas!' + CRLF + ; 'Deseja continuar assim mesmo?' ) resetcel( 'trocacel' ) FOR i = 1 TO 30 z := StrZero( i, 2 ) w := StrZero( i, 2 ) + 'i' voperacao&z := voperacao&w := Space( 20 ) NEXT getsplop( @odlgipl, 'trocacel' ) // desativa todos os gets da celula odlgipl:update() voldcelula := vcelula ELSE dadoscel() vcelula := ( Planilha )->celula voldcelula := Space( 4 ) ogetvcelula:refresh() ogetvcelula:setfocus() odlgipl:update() RETU .F. ENDIF ELSEIF vmodus == 'revisao' .AND. vcelula = ( Planilha )->celula dadoscel() voldcelula := Space( 4 ) // 11.03 ogetvcelula:refresh() ogetvcelula:setfocus() odlgipl:update() ENDIF voldcelula := vcelula IF conferin( 'celulas', 'celulas', vcelula, 4, 'celula', Upper( 'getspla' ), vmodus ) // conferin : Confere se a celula ja esta cadastrada // se sim : registra as operaçoes da célula // se nÃo : solicita cadastro e captura das operaçoes if( l_testando, msgwait( 'testar 5100 com diam > 1 ',, 1 ), ) IF vd_arame <= 1 .AND. vcelula == '5100' msgalert( 'Para o diâmetro informado utilize a célula 5000', 'Atenção' ) vcelula := '5000' voldcelula := Space( 4 ) resetcel() ogetvcelula:refresh() ogetvcelula:setfocus() odlgantes:update() RETU .F. ELSEIF vd_arame > 1 .AND. vcelula == '5000' msgalert( 'Para o diãmetro informado utilize a célula 5100', 'Atenção' ) vcelula := '5100' voldcelula := Space( 4 ) resetcel() ogetvcelula:refresh() ogetvcelula:setfocus() odlgantes:update() RETU .F. ELSEIF vd_arame <= 4 .AND. vcelula == '3100' msgalert( 'Para o diâmetro informado utilize a célula 3000', 'Atenção' ) vcelula := '5100' voldcelula := Space( 4 ) resetcel() ogetvcelula:refresh() ogetvcelula:setfocus() odlgantes:update() RETU .F. ELSEIF vd_arame > 4 .AND. vcelula == '3000' msgalert( 'Para o diãmetro informado utilize a célula 3100', 'Atenção' ) vcelula := '3100' voldcelula := Space( 4 ) resetcel() ogetvcelula:refresh() ogetvcelula:setfocus() odlgantes:update() RETU .F. ENDIF // Custo Mat.Prima por milheiro = Massa da mola x custo da mat.prima x 1000pçs IF ! Empty( vlotminmp ) IF v_pesopedd < vlotminmp vc_maTprim := ( vcustosec * vlotminmp / vquantpedd ) * 1000 ELSEIF v_pesopedd >= vlotminmp // Custo Mat.Prima por milheiro = Massa da mola x custo da mat.prima x 1000pçs // como o calculo da massa está em grama deve-se dividi-la por 1000 para transforma-la em kg vc_matprim := ( vmassa / 1000 ) * vcustosec * 1000 ENDIF ELSE // Custo Mat.Prima por milheiro = Massa da mola x custo da mat.prima x 1000pçs // como o calculo da massa está em grama deve-se dividi-la por 1000 para transforma-la em kg vc_matprim := ( vmassa / 1000 ) * vcustosec * 1000 ENDIF // Peso total do pedido = qtd peças total do pedido x peso da mola v_pesopedd := ( vquantpedd * 1000 ) * ( vmassa / 1000 ) // Variações da quantidade original caso não tenham sido informadas as quatro quantidades IF Empty( vquantped2 ) .OR. ; Empty( vquantped3 ) .OR. ; Empty( vquantped4 ) .OR. ; Empty( vquantped5 ) vcalcqtd := vquantpedd * 1000 vk := 10 ^ ( Len( AllTrim( Str( Int( vcalcqtd ) ) ) ) - 1 ) FOR i = 2 TO 5 z = AllTrim( Str( i ) ) vquantped&z := ( ( Int( vcalcqtd / vk ) * vk ) + ( ( i - 1 ) * vk ) ) / 1000 v_pesoped&z := ( vquantped&z * 1000 ) * ( vmassa / 1000 ) NEXT ELSE v_pesoped2 := ( vquantped2 * 1000 ) * ( vmassa / 1000 ) v_pesoped3 := ( vquantped3 * 1000 ) * ( vmassa / 1000 ) v_pesoped4 := ( vquantped4 * 1000 ) * ( vmassa / 1000 ) v_pesoped5 := ( vquantped5 * 1000 ) * ( vmassa / 1000 ) ENDIF os_tpadra_4201:refresh() os_hrmqen_4301:refresh() os_hrmqre_4401:refresh() os_hrmaes_4501:refresh() ogetvpadraoenr:refresh() ogetvpadraoestm:refresh() ogetvhrmaqerl:refresh() ogetvhrmaqest:refresh() getcelul( vmodus, odlgipl ) // ativa os gets das operações da célula escolhida precalc() voldcelula := vcelula odlgipl:gonextctrl( ogetvcelula:hwnd ) RETU .T. // vai para a captura dos dados da planilha referente a celula selecionada ELSE vcelula := Space( 4 ) ogetvcelula:refresh() ogetvcelula:setfocus() odlgipl:update() RETU .F. ENDIF ENDIF IF vmodus # 'revisao' vcelula := Space( 4 ) ENDIF voldcelula := Space( 4 ) ogetvcelula:refresh() ogetvcelula:setfocus() odlgipl:update() RETU .F. /* ****************** stat func fmkpplan ****************** if empty(vtaxamkp) retu .f. endif vtotvdpla := vCusTotPla * vtaxamkp // @ 24,61 say trans(vtaxamkp,'@ke 9.999') color 'gr+/b' // @ 24,67 say vtotvdpla picture '@e 99,999.99' color 'r+/b' // maximo() // CONCLUIR retu .t. */ // ********************* STAT FUNC fsopratestes // ********************* // *************************************************** // * PREDEFINIÇÃO DE VARIAVEIS PARA TESTE AUTOMáTICO // mudar parametro para .t. se desejar utilizar esta // função. // *************************************************** msgwait( 'dados só para testes',, 1 ) vfabfornmp := .T. vtipomola := 1 vtiposecao := PadR( 'CIRCULAR', 10 ) vtiposecesc := 1 vtipoforesc := 1 vwmola := 4 vdtregsit := Date() vsituacao := 'G' // AGUARDANDO APROV vdocorcam := 'orç.: ' + vnridplan // nº documento do orçamento // so deve ser registrados em revisoes vcliente := PadR( '3 F DO BRASIL', 30 ) vdesenho := PadR( '123456789-ABC', 30 ) vitem := 'ITEM-10-AB' vdesmestre := PadR( '123456789-ABC-DES MESTR', 30 ) vdescricao := PadR( 'MOLA DO FUSCA', 40 ) vidpcfabr := '123456' vidpcclie := '12345678890123456789012345' vquantpedd := 10 vquantped2 := 20 vquantped3 := 30 vquantped4 := 40 vquantped5 := 50 vvolumeano := 100 vseltipemb := 1 // posição invisivel vseltipembi := 1 // posição invisivel tempor. vtipoembl := Upper( 'P' ) vmaterial := PadR( 'DIN 17223 CLASSE B', 40 ) vmatprimini := vmaterial vlotminmp := 0 vdeveolear := 'S' vdevetrata := 'S' vpespecif := 7850 vd_arame := .5 // 1 vd_medio2 := vd_medio := 20 vd_extern2 := vd_externo := 20.5 vd_intern2 := vd_interno := 19.5 vespiras := 10 // 20 vhaste1 := 4 // 10 vhaste2 := 6 // 20 vforneced := PadR( 'BELGO MINEIRA', 30 ) vcustosec := 13.4 vdesenvol := ( pi() * vd_medio * vespiras ) + vhaste1 + vhaste2 varea := pi() * ( vd_arame ^ 2 ) / 4 vvolume := vdesenvol * varea vmassa := ( vvolume * vpespecif / 10 ^ 6 ) / ( 1 - ( vpercperdpp / 100 ) ) // .95 para gramas e com refugo de 5% v_pesopedd := ( vquantpedd * 1000 ) * ( vmassa / 1000 ) v_pesoped2 := ( vquantped2 * 1000 ) * ( vmassa / 1000 ) v_pesoped3 := ( vquantped3 * 1000 ) * ( vmassa / 1000 ) v_pesoped4 := ( vquantped4 * 1000 ) * ( vmassa / 1000 ) v_pesoped5 := ( vquantped5 * 1000 ) * ( vmassa / 1000 ) vcelula := '1000' vpercperdpp := 5 vanalista := 'EDC' vsolicita := 'EDMAN D.C.' vc_matprim := 13.8777 odlgipl:update() ogetvcelula:setfocus() RETU .T. // ********************** STAT FUNC fchkdtobrig() // ********************** // CHECA SE OS DADOS OBRIGATORIOS PARA POSSIBILITAR A REALIZAÇÃO // DOS CÁLCULOS FORAM INFORMADOS. IF Empty( vquantpedd ) msgalert( 'Informe a quantidade total de peças solicitadas!', 'Atenção!' ) ogetvquantpedd:setfocus() RETU .F. ENDIF IF vfabfornmp .AND. AllTrim( Str( vtipomola ) ) $ '123' IF Empty( vmassa ) .OR. Empty( vcustosec ) msgalert( 'Informe todos os dados da matéria-prima e/ou dimensões da mola!', 'Atenção!' ) ogetvmaterial:setfocus() RETU .F. ENDIF ELSEIF vfabfornmp .AND. vtipomola == 4 IF varteftmas <= 0 .OR. varteftvol <= 0 msgalert( 'Informe todos os dados de massa (peso) ou volume do ARTEFATO!', 'Atenção!' ) RETU .F. ENDIF ENDIF IF !vfabfornmp .AND. AllTrim( Str( vtipomola ) ) $ '123' .AND. Empty( vmassa ) msgalert( 'Informe todos os dados da matéria-prima e/ou dimensões da mola!', 'Atenção!' ) ogetvmaterial:setfocus() RETU .F. ENDIF RETU .T. // ********************** STAT FUNC fddanterior() // * RETORNA OS DADOS DA CELULA REGISTRADOS ORIGINALMENTE // ********************** IF simnao( 'Deseja retornar aos dados registrados das "OPERAÇÕES DESTA CÉLULA" antes das modificações?' ) vcelula := ( Planilha )->celula voldcelula := Space( 4 ) resetcel( 'redadoscel' ) FOR i = 1 TO 30 z := StrZero( i, 2 ) w := StrZero( i, 2 ) + 'i' voperacao&z := voperacao&w := Space( 20 ) NEXT dadoscel() // captura dados originais de célula getsplop( @odlgipl, 'redadoscel' ) // desativa todos os gets da celula voldcelula := Space( 4 ) odlgipl:update() ENDIF RETU .T. // ********************* STAT FUNC mudoucusto() // ********************* IF ( AllTrim( Upper( vtiposecao ) ) == Upper( 'CIRCULAR' ) .AND. ; vd_arame = ( Planilha )->d_arame .AND. ; vmaterial = ( Planilha )->material .AND. ; vforneced = ( Planilha )->forneced .AND. ; vcustosec # ( Planilha )->custosec ); .OR. ; ( AllTrim( Upper( vtiposecao ) ) == Upper( 'RETANGULAR' ) .AND. ; vldradial = ( Planilha )->ldradial .AND. ; vldaxial = ( Planilha )->ldaxial .AND. ; vmaterial = ( Planilha )->material .AND. ; vforneced = ( Planilha )->forneced .AND. ; vcustosec # ( Planilha )->custosec ) IF simnao( 'O custo atual desta matéria-prima para a dimensão informada foi posteriormente "REAJUSTADO" !' + CRLF + CRLF + ; 'Deseja "MANTER" o custo oferecido antes desta revisão? ' + CRLF + CRLF + ; 'Custo mais recente..........: R$/kg ' + AllTrim( trans( vcustosec, '@ez 99,999.99' ) ) + CRLF + CRLF + ; 'Custo Antes desta revisão...: R$/kg ' + AllTrim( trans( ( Planilha )->custosec, '@ez 99,999.99' ) ) ) vcustosec := ( Planilha )->custosec os_vcusmp_2131:refresh() RETU .F. ELSE // caso contrario o vcustosec já está ajustado os_vcusmp_2131:SetColor( cor_vermt, cor_verdf ) os_vcusmp_2131:setfont( ofntbold ) os_vcusmp_2131:refresh() RETU .T. ENDIF ENDIF RETU .F. // FIM Regards, saludos. Quote Link to comment Share on other sites More sharing options...
edmandc Posted September 20, 2021 Author Report Share Posted September 20, 2021 Vou verificar e retorno. Obrigado a todos . Quote Link to comment Share on other sites More sharing options...
edmandc Posted September 22, 2021 Author Report Share Posted September 22, 2021 Parece que só com a liberação da memória com HB_GCALL( .F. ) não tem aparecido o erro. Como ele era intermitente ... vou fazer mais testes. De qualquer forma agradeço imensamente pela ajuda. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 22, 2021 Report Share Posted September 22, 2021 Oremos... Em todo caso, tens as dicas que dei... É possível fazer um módulo bem mais enxuto. Use sempre o SYSREFRESH() no WHILEs... abs. Jmsilva 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.