Jump to content
Fivewin Brasil

VASCON

Membros
  • Posts

    233
  • Joined

  • Last visited

Everything posted by VASCON

  1. Marllon Figueiredo Tirei o exemplo abaixo da publicação MAPA FISCAL (empresa IOB), boletim: 01/2006, página 4 01/12 COMPRA 120 800,00 96.000,00 + SALDOS 120 800,00 96.000,00 08/12 COMPRA 80 805,00 64.400,00 + SALDOS 200 802,00 160.400,00 16/12 COMPRA 100 810,00 81.000,00 + SALDOS 300 804,67 241.400,00 23/12 COMPRA 100 815,00 81.500,00 + SALDOS 400 807,25 322.900,00 30/12 VENDA 300- 807,25 242.175,00 - SALDOS 100 807,25 80.725,00 Se eu digitar as QUANTIDADES e VALORES de entrada, e a QUANTIDADE de baixa no meu sistema, vai dar exatamente o resultado acima. Eu não disse que as SAÃDAS tem reflexo no calculo do custo médio, mas sim o que segue abaixo: o reflexo do CUSTO MÉDIO será determinante na multiplicação pela quantidade de saídas, porque o valor encontrado vai diminir o saldo do estoque. Abs. NILSON Outra coisa, voce continua com as SAIDAS na cabeça... SAIDAS NÃO TEM REFLEXO NO CALCULO DO CUSTO MEDIO...!
  2. jef2_tim Na linha de raciocinio que voce colocou abaixo, você não está considerando as saidas: custo medio = ( estoqueatual * customedioatual ) + (qnatidadereposta*valordecustodacompra) / (estoqueatual+quantidaderesposta) Tenha sempre em mente a necessidade de dois controles: a)CONTROLE DE SALDOS (valor atualizado) b)CONTROLE DE QUANTIDADE (quantidade atualizada) isto porque o CUSTO MÉDIO nada mais é que a divisão de "a" por "b" o reflexo do CUSTO MÉDIO será determinante na multiplicação pela quantidade de saídas, porque o valor encontrado vai diminir o saldo do estoque. NILSON
  3. PAULO / MARLLON Tive que refazer um calculo de 5 (cinco) anos do estoque de uma empresa, com 14 unidades. (+ ou - 800.000 registros). O programador anterior tinha feito de forma errada, e a demonstração do estoque precisava ser apresentado a um Perito para posterior homologação do Juiz. Estudei muito essa questão. Vamos lá: Existem os seguintes métodos de avaliação de estoque: a) Custo médio ponderado PEPS ou FIFO(Primeiro a Entrar, Primeiro s Sair) c) UEPS (Ultimo a Entrar, Primeiro a Sair) No Brasil não é admitida a utilização do médoto UEPS Além dessas, existem ainda outras formas, mas não vale a pena comentar. Todos os impostos recuperáveis (ICMS, IPI) têm que ser excluido do valor da aquisição. Você deve considerar que a conta não pode ser feita de forma direta como no exemplo que voce mostrou: ( (300 X 1,80) + (500 X 1,77) + (200 X 1,50) ) / 1000) = R$ 1,715 Passo 1)compor o saldo atual dessa primeira movimentação: 300 x 1,80 = 540,00 (entradas) Passo 2)compor o saldo atual da segunda movimentação: 500 x 1,77 = 885,00 (entradas) 300,00 + 500,00 = 800 (saldo quantidade) 540,00 + 885,00 = 1.425,00 (saldo valor) 1.425,00 / 800,00 = 1,78 (custo médio) Passo 3) compor o saldo atual da terceira movimentação: 200 x 1,50 + 300,00 (entradas) 800 + 200 = 1.000 (saldo quantidade) 1.425,00 + 300,00 = 1.725,00 (saldo valor) 1.725,00 / 1.000,00 = 1,72 (custo médio) O que determina o valor do custo médio das saidas, é o custo médio apurado no saldo anterior. Tenho alguns clientes que usam esse controle de estoque, sem qualquer problema. NILSON
  4. NÃO SEI SE A EXPLICAÇÃO ESTà MUITO CLARA. APANHEI UM BOCADO PARA DESCOBRIR A FORMA DE FAZER. MINHA ROTINA ESTA FUNCIONANDO CORRETAMENTE FORMA DE CALCULAR CUSTO MÉDIO MENSAL SALDO ANTERIOR: QTDADE x CUSTO MÉDIO = TOTAL (segredo: custo médio é resultado da divisão do total pela qtdade) ENTRADAS: QTDADE x CUSTO UNITÃRIO = TOTAL SAÃDAS: QTDADE x CUSTO MÉDIO = TOTAL (segredo: custo médio nas saídas é o mesmo valor do saldo anterior) SALDO ATUAL: SALDO ANTERIOR + ENTRADAS - SAIDAS QTDADE ATUAL: QTDADE ANTERIOR + QTDADE ENTRADAS - QTDADE SAIDAS CUSTO MÉDIO: SALDO ATUAL / QTDADE ATUAL EXEMPLO: SALDO ANTERIOR: 300 x 804,67 = 241.400,00 ENTRADAS: 100 x 815,00 = 81.500,00 + TOTALIZANDO 400 x 807,25 = 322.900,00 SAIDAS: 300 x 807,25 = 242.175,00 - TOTALIZANDO 100 x 807,25 = 80.725,00 PROGRAMANDO: IF AB=0 (se estou iniciando o periodo solicitado) SOMA1:=SALQ01 (SOMA1 carrega saldo anterior) MEANT:=VALMEA (MEANT carrega média anterior) SOMA3:=0 SOMA4:=0 ENDIF IF AB=1 (após o primeiro registro do periodo solicitado) SOMA1:=SOMA3 (SOMA1: carrega saldo atual do registro anterior) MEANT:=SOMA4 (MEANT: carrega qtdade média atual do registro anterior) ENDIF SAIQTD:=QTDSAI IF QTDENT>=MASO (se quantidade de entrada > 1 VALENT=ROUND(QTDENT*PRUNIT,2) (Valor de entrada = quantidade de entrada x preço unitário) SOMA8:=VALENT ENDIF IF QTDSAI>=MASO (se quantidade de saida > 1) VALMED=ROUND(MEANT/SOMA1,2) (Valor médio = saldo anterior / qtdade média anterior) IF SAIQTD=SOMA1 VALSAI=MEANT ELSE VALSAI=ROUND(QTDSAI*VALMED,2) (valor saida = qtdade saida x valor médio) ENDIF MDEVAL:=VALMED ENDIF VALQUANT=SOMA1+QTDENT-QTDSAI (qtdade atual = qtdade anterior + qtdade entrada - qtdade saida) SOMA3:=VALQUANT VALTOT=MEANT+VALENT-VALSAI (valor atual = saldo anterior + valor de entrada - valor de saida ..... Lembrete: existem outros médotos de se calcular estoque NILSON
  5. OLà PESSOAL! Para migrar para o xHarbour: a)Qual a versão do compilador a utilizar: 0.99.?? b)Estou acostumado a editar os PRG´s com o EditPlus2. Muda alguma coisa? Ou tenho que usar algum desses outros: MED, Verce, xDev, xMate c)Tenho que usar o WorkShop, ou dá para continuar no @say? d)Se tiver que mudar, qual o melhor: Pelles ou Workshop? e)Qual a diferença entre os Link Editores: BCC ou bLinker f)Em termos de programação, tem alguma mudança substancial? Abraços NILSON
  6. OLà PESSOAL! Para migrar para o xHarbour: a)Qual a versão do compilador a utilizar: 0.99.?? b)Estou acostumado a editar os PRG´s com o EditPlus2. Muda alguma coisa? Ou tenho que usar algum desses outros: MED, Verce, xDev, xMate c)Tenho que usar o WorkShop, ou dá para continuar no @say? d)Se tiver que mudar, qual o melhor: Pelles ou Workshop? e)Qual a diferença entre os Link Editores: BCC ou bLinker f)Em termos de programação, tem alguma mudança substancial? Abraços NILSON
  7. JOÃO, lá vai **------------------ Exclusao de Registros ------------------------------------------------------- STATIC FUNCTION DEFIN() mNUM := PRINCATA IF MsgYesNo("Voce realmente deseja Excluir este Registro !","Favor, confirme") IF PRINCATA = mNUM IF RECLOCK(4) ------------> Estou travando o registro DELETE COMMIT UNLOCK -----------------> Estou destravando o registro ENDIF IF EOF() SKIP(-1) ENDIF oBrw1:UpStable() oBrw1:Refresh() oBrw1:SetFocus() RETURN .T. ENDIF ELSE RETURN NIL ENDIF NILSON
  8. Pessoal, continuando a novela. Hoje com calma fui analisar o Banco de Dados. Não houve perda de nenhum registro, no entanto, todos os registros, desde o primeiro, estão marcados com 'DEL', como se tivesse uma rotina (DO WHILE) para matar todos os registros daquele banco de dados. Na execução do programa, para se deletar um registro, o programa chama a informação na tela, mostra para os dados para o operador, pergunta se ele realmente quer excluir aquele registro, e só então é feita a exclusão. E mesmo assim fica registrado: senha, nome, data e hora do operador. Diante disso, estou chegando a conclusão que isso foi provocado por virus na máquina. Pergunto: já ocorreu com alguém perda de DBF por virus? NILSON
  9. PESSOAL, Problema de programação tenho certeza que não é, pois esse problema começou a ocorrer depois de um longo tempo de uso, e de forma eventual. Não tenho problema de corrupção de indices. O que me relataram agora à tarde, é que estavam usando o programa e simplesmente fechou tudo e apareceu a tela do principal do Windows. (coisa que nunca tinha acontecido antes.) **Como faço para controlar abertura de arquivos********** FUNCTION NETUSE(ARQUIVO,LIAS,MODO,SEGUNDOS) LOCAL PSEMPRE PSEMPRE=(SEGUNDOS=0) DO WHILE (PSEMPRE .OR. SEGUNDOS>0) IF MODO USE(ARQUIVO) ALIAS(LIAS) EXCLUSIVE NEW ELSE USE(ARQUIVO) ALIAS(LIAS) SHARED NEW ENDIF IF .NOT. NETERR() RETURN(.T.) ENDIF SEGUNDOS=SEGUNDOS-1 INKEY(1) ENDDO RETURN(.F.) FUNCTION RECLOCK(SEGUNDOS) LOCAL SEMPRE IF RLOCK() RETURN(.T.) ENDIF SEMPRE=(SEGUNDOS=0) DO WHILE (SEMPRE .OR. SEGUNDOS>0) IF RLOCK() RETURN(.T.) ENDIF INKEY(0.5) SEGUNDOS=SEGUNDOS-0.5 ENDDO RETURN(.F.) *******Como faço abertura de arquivo**************** IF mSENHA = SENHA IF NETUSE("BORC01","CORB01",.T.,10) VALE1:=.T. GOTO TOP VALE2:=.F. VALE3:=.F. ELSE MsgAlert("Arquivo não Disponivel!", "Aguarde!") ENDIF ENDIF ******Como faço gravação dos registros ********** IF AB = 1 IF VALE1=.T. SELECT CORB01 ENDIF IF VALE2=.T. SELECT CORB02 ENDIF IF VALE3=.T. SELECT CORB03 ENDIF APPEND BLANK IF RECLOCK(4) REPLACE LERA WITH mLERA,NATI WITH mNATI,BRACO WITH mBRAC,PROCES WITH mPROC REPLACE BORDERO WITH mBORD,DOCTO WITH mDOCT,TONCE WITH mTONC REPLACE DAPA WITH mDAPA,LIQUIDO WITH mLIQUI,PRINCATA WITH mPRIT REPLACE PRICELA WITH mPRIC,CEPRI WITH mCEPR,FARI WITH mFARI,CODOP WITH mCODO REPLACE TEBA WITH mTEBA,POSTA WITH mPOST,ANCE WITH mANCE,VATAPRI WITH mVATA REPLACE TRIPA WITH mTRIP,PAVA WITH mPAVA,CELAPRI WITH mCELA,COD WITH mCODI REPLACE RESULT WITH mRESU,IOF WITH mIOF,ADLOR WITH mADLO REPLACE SERV WITH mSERV,INVEST WITH mINVE,LOCA WITH mLOCA REPLACE RESTA WITH mREST,SEBA WITH mSEBA,REMES WITH mREME,PONTO WITH mPONT UNLOCK SysRefresh() ENDIF SELECT CAPLI ENDIF IF BORDERO > mBORDE .OR. EOF() EXIT ENDIF IF .NOT. EOF() LOOP ENDIF ENDDO COMMIT MUDA01() RETURN(NIL) Grato NILSON
  10. Olá Pessoal! Tenho um programa em Fivewin rodando em rede há aproximadamente 2 anos e meio. O Servidor é Linux e as estações Windows XP. O Total de registros está na média de 350.000 registros, indexados em CDX. De repente, começou a haver perda de registro. Acredito que o problema não está no Fivewin, pois até então estava tudo normal. Poderia ser desestabilização de rede? Já aconteceu isso com alguém? Grato, Abraços, NILSON
  11. Olá Pessoal! Tenho um programa em Fivewin rodando em rede há aproximadamente 2 anos e meio. O Servidor é Linux e as estações Windows XP. O Total de registros está na média de 350.000 registros, indexados em CDX. De repente, começou a haver perda de registro. Acredito que o problema não está no Fivewin, pois até então estava tudo normal. Poderia ser desestabilização de rede? Já aconteceu isso com alguém? Grato, Abraços, NILSON
  12. Lá vai: nilsonvasconcellos@hotmail.com Abraço
  13. Olá Pessoal, Boa Noite. Tem como chamar o compactador BRAZIP dentro de um programa Fivewin. Grato, Abraços NILSON
  14. Olá Pessoal, Boa Noite. Tem como chamar o compactador BRAZIP dentro de um programa Fivewin. Grato, Abraços NILSON
  15. Olá Pessoal, Boa Noite. Tem como chamar o compactador BRAZIP dentro de um programa Fivewin. Grato, Abraços NILSON
  16. Olá Pessoal, bom dia! Alguém poderia me explicar qual a causa desse problema: ERRO DE APLICATIVO FIVEWIN FOI CAUSADO UMA FALHA DE PROTEÇÃO GERAL EM MODULO TELA.DWD EM 001045BB. ESCOLHA FECHAR. FIVEWIN SERà FECHADO. Abraços, Grato NILSON
  17. Olá Pessoal, bom dia! Alguém poderia me explicar qual a causa desse problema: ERRO DE APLICATIVO FIVEWIN FOI CAUSADO UMA FALHA DE PROTEÇÃO GERAL EM MODULO TELA.DWD EM 001045BB. ESCOLHA FECHAR. FIVEWIN SERà FECHADO. Abraços, Grato NILSON
  18. Olá Pessoal, bom dia! Alguém poderia me explicar qual a causa desse problema: ERRO DE APLICATIVO FIVEWIN FOI CAUSADO UMA FALHA DE PROTEÇÃO GERAL EM MODULO TELA.DWD EM 001045BB. ESCOLHA FECHAR. FIVEWIN SERà FECHADO. Abraços, Grato NILSON
  19. Lá vai: BLINKER CLIPPER SYMBOL OFF //BLINKER INCREMENTAL OFF // BLINKER EXECUTABLE COMPRESS // MAP A,S //fi tela out meunome.exe PACKCODE PACKDATA // If you use Mr. Debug for Windows product // search c:\mrdebug\lib\mrd4win.lib DEFBEGIN name FiveWin description 'Clipper for Windows library' exetype Windows 3.1 code moveable discardable preload data preload moveable stacksize 18500 heapsize 8192 segment 'PLANKTON_TEXT' nondiscardable segment 'EXTEND_TEXT' nondiscardable segment 'OM_TEXT' nondiscardable segment 'OSMEM_TEXT' nondiscardable segment 'SORTOF_TEXT' nondiscardable segment 'STACK_TEXT' nondiscardable DEFEND NOBELL FILE TELA,FUNCO,CARTC,COCOR,COPLA,CODEM,LACCR,ATUAL,TUADA FILE RECCOL,SEQUE,EMIBA,CANEL,AGEND,ENDAG FILE UTILI,TDOSP,MPAR LIB E:\USUARIOS\NILSON\FW20\LIB\FIVE LIB E:\USUARIOS\NILSON\FW20\LIB\FIVEC LIB E:\USUARIOS\NILSON\FW20\LIB\OBJECTS LIB E:\USUARIOS\NILSON\FW20\LIB\WINAPI LIB E:\USUARIOS\NILSON\CLIPPER5\LIB\CLIPPER LIB E:\USUARIOS\NILSON\CLIPPER5\LIB\EXTEND LIB E:\USUARIOS\NILSON\CLIPPER5\LIB\TERMINAL LIB E:\USUARIOS\NILSON\CLIPPER5\LIB\DBFCDX OUT TELA.EXE APROVEITANDO: este mês estarei adquirindo uma Ferrarri 2.7 Pergunto: tenho que mudar alguma coisa no LNK e RMK? Grato, abraço, NILSON
  20. AtnSoft - Antenor Grato pela atenção! Não uso o Verce. Quanto ao Ctrl+alt+del, mesmo reiniciando a máquina o problema continua. Não sei o que fazer. Abs NILSON
  21. OLà PESSOAL! Veja se vocês podem me dar uma dica do que pode estar ocorrendo: Estou montando um novo programa, que por enquanto é um décimo dos demais programas que tenho. No entanto, ao acrescentar um novo PRG's, a compilação é feita normalmente, mas na hora de chamar o "exe" aparece a seguinte mensagem: "Memória insuficiente para executar o aplicativo. Feche um ou mais aplicativos e tente novamente." Só que não tem nenhum aplicativo aberto. O que pode estar ocorrendo? NILSON
  22. OLà PESSOAL! Veja se vocês podem me dar uma dica do que pode estar ocorrendo: Estou montando um novo programa, que por enquanto é um décimo dos demais programas que tenho. No entanto, ao acrescentar um novo PRG's, a compilação é feita normalmente, mas na hora de chamar o "exe" aparece a seguinte mensagem: "Memória insuficiente para executar o aplicativo. Feche um ou mais aplicativos e tente novamente." Só que não tem nenhum aplicativo aberto. O que pode estar ocorrendo? NILSON
  23. OLà PESSOAL! Veja se vocês podem me dar uma dica do que pode estar ocorrendo: Estou montando um novo programa, que por enquanto é um décimo dos demais programas que tenho. No entanto, ao acrescentar um novo PRG's, a compilação é feita normalmente, mas na hora de chamar o "exe" aparece a seguinte mensagem: "Memória insuficiente para executar o aplicativo. Feche um ou mais aplicativos e tente novamente." Só que não tem nenhum aplicativo aberto. O que pode estar ocorrendo? NILSON
  24. Boa noite Pessoal! Nos rodapés de todos os meus listbox eu mostro nomes associados. A maneira como faço abaixo tem se mostrado muito eficiente mesmo em banco de dados muito grande, sem qualquer perda de tempo. Dentro dos campos do listbox chamo a função que mostrará o nome associado (no caso são duas: MSAC(NATI) e MCED(COD); uma mostra o nome do sacado e outra o nome do cedente. SELECT CAPLI SET ORDER TO 1 GOTO TOP DEFINE FONT oFont_cli NAME "MS SANS SERIF" SIZE 0,-15 DEFINE DIALOG oDlgFI from 9,6 to 36,100; TITLE 'Manutencao de Titulos'; COLOR CLR_BLACK, CLR_HGRAY oDlgFI:LHELPICON := .F. @00,00 LISTBOX oBrw0; FIELDS PRINCATA,; COD,; BORDERO,; INVEST,; DTOC(VATAPRI),; TRANSFORM(CEPRI,"@ZE 99,999,999.99"),; TRANSFORM(PRICELA,"@ZE 99,999,999.99"),; DTOC(TRIPA),; TRANSFORM(CELAPRI,"@ZE 99,999,999.99"),; MSAC(NATI),; MCED(COD); HEADERS "NUMERO",; "CEDENTE",; "BORDERO",; "COD.",; "VENCTO",; "DEBITO ",; "CREDITO ",; "PAGTO ",; "VALOR ",; " ",; " "; COLOR CLR_BLACK,Rgb(255,255,235); FIELDSIZES 70,80,80,50,80,95,95,80,95,1,1; FONT oFont_cli; OF oDlgFI; ON LEFT DBLCLICK INTOQ(); SIZE 375,170 oBrw0:ajustify:={.f.,.f.,.f.,.f.,.f.,.t.,.t.,.f.,.t.} oBrw0:bKeyDown := { | nKey | Ctrl_Teclas( nKey),; IF ( nKey = VK_RETURN,( INTOQ(),oBrw0:UpStable(),oBrw0:Refresh(),oBrw0:SetFocus() ), ; IF ( nKey = VK_DELETE,( DEFIN(),oBrw0:UpStable(),oBrw0:Refresh(),oBrw0:SetFocus() ), ; IF ( nKey = VK_HOME,( dbgotop(),oBrw0:UpStable(),oBrw0:Refresh(),oBrw0:SetFocus() ), ; IF ( nKey = VK_END,( dbgobottom(),oBrw0:UpStable(),oBrw0:Refresh(),oBrw0:SetFocus() ), ; IF ( nKey = VK_ESCAPE,oDlgFI:End() ,) ) ) ) ) } oBrw0:UpStable() oBrw0:Refresh() oBrw0:SetFocus() @13.0,01 SAY "SACADO/FORNECEDOR:" @13.0,12 SAY oPJPF VAR mPJPF OF oDlgFI SIZE 60,12 @13.0,20 SAY oSACD VAR mSACD OF oDlgFI SIZE 200,12 @13.9,01 SAY "CEDENTE:" @13.9,12 SAY oCEDC VAR mCEDC OF oDlgFI SIZE 200,12 ////COLOR CLR_BLACK, CLR_HGRAY; //************************************************************************************************************************** oBrw0:nClrBackHead := CLR_HBLUE // Cor do Fundo do Cabe‡alho oBrw0:nClrBackFocus := CLR_AZUL_BRANCO // Cor do Cursor Em Cima do Ötem oBrw0:nClrForeHead := CLR_BLANCO // Cor nos Headers - Cabe‡alhos //oBrw0:nClrPane := { || IIF( ( oBrw0:cAlias)->( OrdKeyNo()) %2 == 1 , CLR_LGREEN,CLR_LGRAY)} //************************************************************************************************************************** ... ... ... Static Func MSAC(cCha) IF CEPRI > PRICELA mPJPF:=NATI If FORN01->(DbSeek(cCha)) mSACD:=FORN01->TENDE else mSACD:=" " Endif oSACD:Refresh() oPJPF:Refresh() ENDIF IF PRICELA > CEPRI mPJPF:=NATI If NOMO->(DbSeek(cCha)) mSACD:=NOMO->TENDE else mSACD:=" " Endif oSACD:Refresh() oPJPF:Refresh() ENDIF Static Func MCED(cCha) IF PRICELA > CEPRI If CARTCOD->(DbSeek(cCha)) mCEDC:=CARTCOD->NOMECE else mCEDC:=" " Endif oCEDC:Refresh() ENDIF NILSON
  25. Olá Pessoal! Boa Noite! Tenho um abençoado de um digitador que com frequência faz o seguinte: a) abre o programa; minimiza na tela; c) esquece que o programa já esta aberto (minimizado), e abre novamente. (Que máquina que aguenta?) Ou seja, fica o mesmo executável duas vezes aberto. Existe uma forma de impedir a abertura do programa pela segunda vez ao mesmo tempo. NILSON
×
×
  • Create New...