Jump to content
Fivewin Brasil

luiz53

Membros
  • Posts

    397
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by luiz53

  1. ALGUÉM PODERIA ME DA UMA IDEIA DE COMO INTEGRAR . um Cliente terceirizou a venda de HORTIFRUTI e preciso enviar a venda diária nesse padrões. Não tenho ideia de como fazer . Alguém já fez algo parecido ??? Endereço Servlet: ! http://mysaas.com.br:8085/????????????????????/ServletPedidos !! Parâmetros: ! IMPORTANTE: Parâmetros devem ser enviados via POST. IMPORTANTE: Vamos receber as VENDAS como PEDIDO DE VENDA para processar os dados e posteriormente converter em venda. ! estado_destino -> CP, SP, MG, RJ, ES ou XX para testes. ! pedidos -> JSON com todos os pedidos e itens seguindo o formato. (exemplo com duas vendas, primeiro com dois itens e segundo com três itens) !! [ { “pedido”: “123456” Referência do cliente "data":"2015-06-18", "cnpj":"47427653002401", "itens":[ { “codigo_cliente":"377377", "descricao":"NOME DO PRODUTO PARA REFERENCIA", “quantidade":"50.000", "valor_total":"5000.00" }, { “codigo_cliente":"372476", "descricao":"NOME DO PRODUTO PARA REFERENCIA", “quantidade":"1.000", "valor_total":"48.00" } ] }, !! { “pedido”: “123457” Referência do cliente "data":"201“-06-18", "cnpj":"47427653003564", "itens":[ { “codigo_cliente":"372476", "descricao":"NOME DO PRODUTO PARA REFERENCIA", “quantidade":"2.000", "valor_total":"96.00" }, { “codigo_cliente":"372489", "descricao":"NOME DO PRODUTO PARA REFERENCIA", "quantidade":"2.000", "valor_total":"60.00" }, { “codigo_cliente":"325", "descricao":"NOME DO PRODUTO PARA REFERENCIA", "quantidade":"2.000", "valor_total":"120.00" } ] } ]
  2. é que EU CRIEI uma classe para cada tabela Herdando a TDOLPHIN . e isso nao era possivel com TMARIADB e o indiano nao quis mexer nisso.. POR EXEMPLO : CLASS PRODUTOS FROM TDOLPHIN METHOD NEW() METHOD END() ENDCLASS METHOD NEW() RETURN SELF METHOD END RETURN SUPER:END()
  3. Ahhh Entendi... eu Cheguei testar ela mas me deparei com alguns problema e voltei pra TDOLPHIN... NÃO lembro o que foi... mas tive que desistir dela... obrigado pela atenção...
  4. Rodrigo nao estou entendendo.. como esta a definição das libs QUE ESTA USANDO... libmysql.lib OU Libmariadb.LIB ??? vc esta usando a TDOLPHIN ?????
  5. usando a TDOLPHIN ???? poderia mostrar como usa ??
  6. Entendi... eu nunca tentei usar a LIBMARIADB se conseguir algo me fala ..
  7. USO MARIADB e uso TDOLPHIN ... MAS USO O LIBMYSQL Funciona normal... usando a LIBMYSQL.DLL
  8. static oLib #define DC_CALL_CDECL 0x0010 #define DC_CALL_STD 0x0020 *********************************************************** function main() *********************************************************** local sessao := HB_RandomInt(1,999999) local cret local aRet // usar este comando apenas no inicio do programa Ativa_DllSat() ******************************************* //consultar Status ******************************************* cRet := GER_ConsultarStatusOperacional(sessao,'00000000') cRet := GetStringFromPointer(cRet) aRet := HB_ATokens(cRet,"|") xbrowse( aRet) ******************************************* //para vender ******************************************* cRet := ger_EnviarDadosVenda(sessao,'00000000',xml) cRet := GetStringFromPointer(cRet) aRet := HB_ATokens(cRet,"|") xbrowse( aRet) ******************************************* //para cancelar ******************************************* cRet := ger_CancelarUltimaVenda(sessao,'00000000',cChaveCFe,xml) cRet := GetStringFromPointer(cRet) aRet := HB_ATokens(cRet,"|") ******************************************* // usar este comando apenas no final do programa Desativa_DllSat() return nil ******************************************************************************* function Ativa_DllSat() ******************************************************************************* if hb_isnil(oLib) oLib := DllLoad( "GERSAT.DLL" ) endif return !hb_isnil(oLib) ******************************************************************************* function Desativa_DllSat() ******************************************************************************* if !hb_isnil(oLib) DllUNLoad( oLib ) endif return nil //------------------------------------------------------------------------------------------------------------ //- EPSON - GERTEC //------------------------------------------------------------------------------------------------------------ ************************************************************************************************************** function GER_ConsultarStatusOperacional( numeroSessao,codigoDeAtivacao ) ************************************************************************************************************** LOCAL nResult nResult := DllCall(oLib , ; // DC_CALL_STD , ; // "ConsultarStatusOperacional" , ; // numeroSessao , ; // codigoDeAtivacao ) // return nResult ************************************************************************************************************** function GER_EnviarDadosVenda(numeroSessao,codigoDeAtivacao,dados) ************************************************************************************************************** LOCAL nResult nResult := DllCall(oLib , ; // DC_CALL_STD , ; // "EnviarDadosVenda" , ; // numeroSessao , ; // codigoDeAtivacao , ; // dados ) // return nResult ************************************************************************************************************** FUNCTION GER_CancelarUltimaVenda(numeroSessao,codigoDeAtivacao,chave,dadoscancel) ************************************************************************************************************** LOCAL nResult nResult := DllCall(oLib , ; // DC_CALL_STD , ; // "CancelarUltimaVenda" , ; // numeroSessao , ; // codigoDeAtivacao , ; // chave , ; // dadoscancel ) // return nResult ************************************************************************************************************** FUNCTION GER_ConsultarNumeroSessao(numeroSessao,codigoDeAtivacao,sessao_a_ser_consultada) ************************************************************************************************************** LOCAL nResult nResult := DllCall(oLib , ; // DC_CALL_STD , ; // "ConsultarNumeroSessao" , ; // numeroSessao , ; // codigoDeAtivacao , ; // sessao_a_ser_consultada ) // return nResult ************************************************************************************************************** FUNCTION GER_ExtrairLogs(numeroSessao,codigoDeAtivacao) ************************************************************************************************************** LOCAL nResult nResult := DllCall(oLib , ; // DC_CALL_STD , ; // "ExtrairLogs" , ; // numeroSessao , ; // codigoDeAtivacao ) // return nResult ************************************************************************************************************** FUNCTION GER_TesteFimAFim(numeroSessao,codigoDeAtivacao,dados) ************************************************************************************************************** LOCAL nResult nResult := DllCall(oLib , ; // DC_CALL_STD , ; // "TesteFimAFim" , ; // numeroSessao , ; // codigoDeAtivacao , ; // dados ) // return nResult ******************************************************************************* FUNCTION GetStringFromPointer(lpString) ******************************************************************************* local szBuffer := "" If IsBadStringPtrByLong(lpString, 1024) <> 0 msgalert("Attempt to read bad string pointer: " + lpString) return "" Endif szBuffer := REPLICATE( Chr(0), 3072000) ConvCStringToVBString(szBuffer, lpString) return szBuffer
  9. No manual da EPSON esta especificado .... MAS consegui resolver o PROBLEMA DA DLL da epson... segue abaixo a solução... PARECE que esta funcionando corretamente agora...
  10. Caramba.... Não tem logica uma DLL não funcionar COM HARBOUR... VAMOS VER SE CONSIGO ALGO DIRETO COM A EPSON....
  11. Alguem conseguiu utilizar esses SAT USANDO A DLL GERSAT.DLL ???? esta travando no ConsultaStatusOperacional. ******************************************************************************* function Ativa_DllSat() ******************************************************************************* if hb_isnil(oLib) oLib := LoadLib32( "GERSAT.DLL" ) endif return (oLib > 0) DLL32 FUNCTION GER_ConsultarStatusOperacional(numeroSessao AS _INT,codigoDeAtivacao AS STRING) ; AS _INT PASCAL FROM "ConsultarStatusOperacional" LIB oLib
  12. 1 - João Santos - Email: joao@pleno.com.br 2 - Luiz Fernando - Email: empresoft@globo.com 3 - Alexandre Serafini - alexandre@polirep.com.br 4 - Nárlem - narlem@nagas.com.br 5 - Gilmer - gilmer@fivewin.com.br 6 - Alexandre Pereira - alexandre@declatecnologia.com.br 7- Evandro G. de Paula - imortal@skillnet.com.br 8 - Vailton Renato - contato@vailton.com.br 9 - Rubens Martins - rumarti@gmail.com 10- Cleber Conde - cleber@krcsistemas.com.br 11 - Decker - Carlos E. Decker 12 - Vagner Wirts - vwirts@ig.com.br 13 - Antenor Trufelli Filho - trufelli@uol.com.br 14 - José Carlos R Leoner - Guaruhos - SP - josecarlos@vimatec.com.br 15 - Luis Antonio da Paixao - Sao Sebastiao do Paraiso - Minas Gerais - luispaixao13@hotmail.com 16 - Valdir - Jundiaí - valdir@fivesolution.com.br 17 - Luiz Antonio de Oliveira - Santa fe do Sul - SP luizantoniooliveira@hotmail.com - LUIZ53 18 - Giovanny Vecchi - Santa Fé do Sul - SP -
  13. Nao evandro , mas o restante da pra usar do mesmo modo !!! METHOD SKIP METHOD Eof() METHOD FCount() INLINE ::nFCount METHOD FieldLen( cnField ) METHOD FieldDec( cnField ) METHOD FieldName( nNum ) METHOD FieldPos( cFieldName ) METHOD FieldGet( cnField ) METHOD FieldType( cnField ) METHOD FieldMySqlType( cnField ) METHOD FieldPut( cnField, uValue ) METHOD FieldToNum( )
  14. EU USO A TDOLPHIN.;; COM HARBOUR E FUNCIONA MUITO BEM ELA POSSUI O FILLARRAY,,,, oQuery := TDolphinQry():New("select modulo,produto,qtdade from slbdpmop where modulo = "+HbValue2Sql(VGET[3]) , oser ) ACOMPOS := oQuery:FillArray() oQuery:end()
  15. Nao sei o numero de serie do meu fivewin
  16. alguém jah fez algo... sabe como fazer ? Messager luizantoniooliveira@hotmail.com Skype luizantoniooliveira Xhb 1.0 / FW 9.07 / WorkShop / HbMake / Xmate / Clipper 5.3b / Blinker 5.1 / LLibg www.omega-store.com.br
  17. acredito... essa folhamatic eh uma m... muda para o contmatic Messager luizantoniooliveira@hotmail.com Skype luizantoniooliveira Xhb 1.0 / FW 9.07 / WorkShop / HbMake / Xmate / Clipper 5.3b / Blinker 5.1 / LLibg www.omega-store.com.br
  18. FIZ ALGUMAS ALTERAÇÕES * o Retorno do Valor digitado retorna na própria matriz... * Alterei pra Buttonbmp. * Alinhamento a direita quando numérico. * Tamanho da Fonte ***************** FUNCTION TESTE() ***************** LOCAL aCampos := {} // Também, crie a matriz como Privada Aadd(aCampos,{"Código do Produto " , space(5) , ,}) // Adicione os campos a serem solicitados dessa forma: Aadd(aCampos,{"Descrição Produto " , space(40) , ,}) // Adicione os campos a serem solicitados dessa forma: Aadd(aCampos,{"Preço do Produto " , 0 , ,}) // Adicione os campos a serem solicitados dessa forma: if !oaDialog(@aCampos) // Se Cancelar a digitação, o sistema retornará (.F.) Return(.F.) // O parâmetro cTitu é o título da janela (opcional) endif xbrowse(acampos) RETURN NIL ******************************************************************************************** Function oaDialog(aCampos,cTitu,cCor) // Cria Janela para Preenchimento de Variáveis // ******************************************************************************************** // Parâm. : Matriz de Campos, Título da Janela, Cor da Janela // Exemplo: Private DtFabri, DtValid // No programa que chama essa função, crie as variáveis como Privadas para ter o conteúdo delas retornado // Private aCampos := {} // Também, crie a matriz como Privada // Aadd(aCampos,{"Data da Fabricação", "DtFabri", mmDate , "@D"}) // Adicione os campos a serem solicitados dessa forma: // Aadd(aCampos,{"Data de Validade", "DtValid", CTOD(""), }) // - "Título do Campo", "Nome do Campo", "Conteúdo do Campo", "Picture" // if !oaDialog(aCampos) // Se Cancelar a digitação, o sistema retornará (.F.) // Return(.F.) // O parâmetro cTitu é o título da janela (opcional) // endif LOCAL NCOLS := LEN(ACAMPOS) LOCAL LOK :=.F. LOCAL COR_TELA := NIL //RGB(245,244,220) LOCAL ODLG LOCAL BOK[2] LOCAL NROW LOCAL NWIDHT LOCAL NHEIGHT LOCAL CPICTURE LOCAL I LOCAL OFONTSAY,OFONTGET,OFONTBIG LOCAL lRight LOCAL OGET[NCOLS] LOCAL OSAY[NCOLS] DEFAULT cTitu := "Informe os Dados Solicitados " DEFAULT cCor := RGB(245,244,220) // Beje DEFINE FONT OFONTSAY NAME "TIMES NEW ROMAN" SIZE 0,-14 DEFINE FONT OFONTBIG NAME "TIMES NEW ROMAN" SIZE 0,-20 BOLD DEFINE FONT OFONTGET NAME "TIMES NEW ROMAN" SIZE 0,-14 BOLD //RGB(245,244,220) DEFINE DIALOG oDlg FROM 0,0 TO nCols*29+140,500 TITLE "Preencha os campos" FONT oFontSay COLOR CLR_BLACK,COR_TELA OF ODLG PIXEL TRANSPARENT @ 005,005 SAY cTitu SIZE 200,13 FONT oFontBig COLOR CLR_BLUE,COR_TELA OF oDlg Pixel FOR i := 1 TO nCols nRow := (i*14)+20 nWidht := Len(iif(ValType(aCampos[i,2])="C",aCampos[i,2],Space(8))) * 3.8 + 10 // 5 nHeight := 13 cPicture := aCampos[i,3] lRight := .F. if cPicture==nil if ValType(aCampos[i,2])="C" cPicture := '@!' elseif ValType(aCampos[i,2])="N" cPicture := '@E 999,999.99' lRight := .T. elseif ValType(aCampos[i,2])="D" cPicture := '@D' else cPicture := '' endif endif // nRow ,nCol, bText , oWnd, cPicture, oFont ,lCentered, lRight, lBorder , lPixels , nClrText , nClrBack,nWidth, nHeight, lDesign, lUpdate, lShaded, lBox, lRaised,lAdjust, lTransparent, cVarName ) OSAY := TSay():New(nRow+2, 010, ASetGet(aCampos,i,1), oDlg, , oFontSay, , , , .T. , CLR_BLACK, COR_TELA, 60 , 10 , , , , , , , .T. , ) // nRow , nCol, bSetGet , oWnd, nWidth , nHeight, cPict , bValid, nClrFore , nClrBack , oFont , lDesign , oCursor, lPixel , cMsg, lUpdate, bWhen, lCenter, lRight, bChanged, lReadOnly,lPassword, lNoBorder, nHelpId, lSpinner,bUp, bDown, bMin, bMax, bAction, cBmpName, cVarName, cCueText ) OGET := TGet():New(nRow , 074 , ASetGet(aCampos,i,2), oDlg, nWidht , nHeight, cPicture, , CLR_BLACK, CLR_WHITE, oFontGet , , , .T. , , , , , lRight, , , , , , , , , , , , , , ) NEXT @ (i*14)+30,070 Buttonbmp bOk[1] PROMPT "&Continua" BITMAP "ENTRA" OF ODLG SIZE 49,17 ACTION (lOk:=.T., oDlg:End()) Pixel TEXTRIGHT @ (i*14)+30,131 Buttonbmp bOk[2] PROMPT "Cance&la" BITMAP "CANCE" OF ODLG SIZE 49,17 ACTION oDlg:End() Pixel TEXTRIGHT bOk[1]:CTOOLTIP := "Confirma os dados informados." bOk[2]:CTOOLTIP := "Cancela a digitação." @ 19,005 GROUP TO (i*14)+24,245 TRANSPARENT OF oDlg Pixel @ (i*14)+24,005 GROUP TO (i*14)+50,245 TRANSPARENT OF oDlg Pixel ACTIVATE DIALOG oDlg CENTERED RESIZE16 ON PAINT GradientFill( hDC, 0, 0, oDlg:nHeight, oDlg:nWidth, { { 0.50, COR_TELA, cCor } } ) Return( lOk ) *********************************** Static Function ASetGet(aArray,i,n) *********************************** Return bSETGET(aArray[n]) Messager luizantoniooliveira@hotmail.com Skype luizantoniooliveira Xhb 1.0 / FW 9.07 / WorkShop / HbMake / Xmate / Clipper 5.3b / Blinker 5.1 / LLibg www.omega-store.com.br
  19. Na questao da Função de Validação como poderia passar paramentros em Aadd(aCampos,{"Data da Fabricação", "DtFabri", mmDate ,"@D", "MinhaFuncao(var,min,max,'atencao erro') "} citação:Legal para ficar mais porreta seria bom passar nos parametros as funcoes q valida os campos. ex: Aadd(aCampos,{"Data da Fabricação", "DtFabri", mmDate , "@D", "MinhaFuncao()"}) .... //TGet():New(nRow,,nCol, bSETGET(aVariaveis), oDlg, nWidht, nHeight, cPicture, {MinhaFuncao}, nClrFore , nClrBack, oFontGet, lDesignl, oCursor, lPixel, cMsg, lUpdate, {When}, lCenter, lRight) FWH1205 / FWPPC1002 / xHarbour / BCC582 / RDD CDX id=quote>id=quote>Messager luizantoniooliveira@hotmail.com Skype luizantoniooliveira Xhb 1.0 / FW 9.07 / WorkShop / HbMake / Xmate / Clipper 5.3b / Blinker 5.1 / LLibg www.omega-store.com.br
  20. Difícil giovanny, acho que ninguém sabe informar não... Messager luizantoniooliveira@hotmail.com Skype luizantoniooliveira Xhb 1.0 / FW 9.07 / WorkShop / HbMake / Xmate / Clipper 5.3b / Blinker 5.1 / LLibg www.omega-store.com.br
  21. luis estou usando a Tads... e estou muito contente tenho certeza que não ira se arrepender de usa-la. Messager luizantoniooliveira@hotmail.com Skype luizantoniooliveira Xhb 1.0 / FW 9.07 / WorkShop / HbMake / Xmate / Clipper 5.3b / Blinker 5.1 / LLibg www.omega-store.com.br
  22. Giovanny valeu pela ajuda com a TADS eu estava ferrado pois meus clientes estavam ficando com tabelas maiores de 4GB agora com dicionario de dados... ficaram muito mais rápido... e estou podendo usar os comandos SQL com ADS .... Valew............... Messager luizantoniooliveira@hotmail.com Skype luizantoniooliveira Xhb 1.0 / FW 9.07 / WorkShop / HbMake / Xmate / Clipper 5.3b / Blinker 5.1 / LLibg www.omega-store.com.br
  23. Giovanny valeu pela ajuda com a TADS eu estava ferrado pois meus clientes estavam ficando com tabelas maiores de 4GB agora com dicionario de dados... ficaram muito mais rápido... e estou podendo usar os comandos SQL com ADS .... Valew............... Messager luizantoniooliveira@hotmail.com Skype luizantoniooliveira Xhb 1.0 / FW 9.07 / WorkShop / HbMake / Xmate / Clipper 5.3b / Blinker 5.1 / LLibg www.omega-store.com.br
  24. Eu passei por tudo isso. Fiz o PAF/ECF 1.10, SPED DE ICMS , SPED DE PIS E COFINS TEF DEDICADO, integração ESCRITA CONTMATIC,FOLHAMATIC,CUCA e juro eu também pensei em desistir. certa vez conversei com o VAILTON sobre essa cooperativa que o Gilmer citou... realmente seria uma boa ideia... Ainda bem, que aqui somos em 3 Programadores... o Luiz, o Antonio e o Oliveira... Messager luizantoniooliveira@hotmail.com Skype luizantoniooliveira Xhb 1.0 / FW 9.07 / WorkShop / HbMake / Xmate / Clipper 5.3b / Blinker 5.1 / LLibg www.omega-store.com.br
  25. Muitos empresários e desenvolvedores de softwares de gestão empresarial estão preocupados com as publicações periódicas a respeito da segunda geração da Nota Fiscal Eletrônica, conhecida como NF-e 2G. Algumas publicações são excessivamente técnicas e outras, menos profundas, pintam cenários sombrios e complexos. A chamada NF-e 2G é um aprimoramento da NF-e que vem sendo implementado desde 2010. No início, permitia que práticas da nota em papel fossem simuladas na NF-e, como, por exemplo, valores totais com pequenas diferenças da somatória dos itens, valor de frete global na nota, valor de desconto global na nota, observações contendo informações de permissão de crédito de ICMS/ IPI de empresas enquadradas no Simples Nacional, dados da DI em notas de importação colocados no campo observação e várias de cunho operacional, como prazo de cancelamento, carta de correção, etc. É necessário lembrar que o objetivo da NF-e é, entre outros, modernizar o Fisco e trazer a fiscalização para antes do fato gerador (que é a saída e circulação da mercadoria). Por isso, o rigor para a autorização de uma NF-e está aumentando. Aos poucos, as brechas estão sendo fechadas e as validações na NF-e 2G se tornam mais rigorosas. Dessa forma, a administração tributária antecipa a fiscalização do emitente e do destinatário. Outro aspecto relevante para a administração tributária, e previsto na NF-e 2G, é o controle do que acontece depois da saída da mercadoria. Após a emissão do documento fiscal ocorrem diversos eventos que têm consequências relevantes para este documento fiscal. Antes, na nota fiscal tradicional, as informações estavam vinculadas ao suporte físico, não havendo nenhuma dificuldade de identificar qual seria o documento fiscal original, pois só existe um original no documento fixado no papel. Esse modelo de registro de eventos é impraticável com a NF-e. O arquivo eletrônico da NF-e (o XML) pode ser copiado e, mesmo que tivesse agregado novas informações, poderíamos ficar com diversos exemplares da mesma NF-e com registros totalmente diferentes em razão da dificuldade de identificar qual seria a NF-e original, pois todas as cópias do XML seriam válidas. A ausência de registro e controle dos eventos de interesse da administração tributária também ocorre com a nota fiscal tradicional, não sendo uma deficiência exclusiva da NF-e. Antes do advento da NF-e não existia qualquer possibilidade de verificar a regularidade da operação. No máximo era possível consultar a situação cadastral do “suposto†emitente no Sintegra (Sistema Integrado de Informações sobre Operações Interestaduais com Mercadorias e Serviços). A NF-e 2G formaliza e define esses novos eventos. Para ter controle dos eventos de seu interesse, a administração tributária adotou um repositório central onde ficam armazenadas as NF-e existentes, para registro de todos os eventos que tenham alguma relevância, sendo uns de autoria exclusiva do Fisco, outros do emitente e ainda outros do destinatário: Eventos do emitente: - Registros de saída - Carta de Correção - Roubo de Carga - Cancelamento Eventos do destinatário: - Confirmação de recebimento - Desconhecimento da operação - Devolução de mercadoria - Registro de passagem; - Confirmação de Internalização na Suframa - Saída para exportação - Restituição ICMS sobre Combustíveis - Ocorrência em Fiscalização de Trânsito - Cancelamento pelo Fisco - Reversão do cancelamento - Visto da NF-e - Carta de Correção pelo Fisco - NF-e referenciada pelo Fisco - Registro de Veículos - Rastreamento RFID - Outros Alguns desses eventos já estão implementados e podem ser percebidos pelos contribuintes, tais como a Carta de Correção Eletrônica (CC-e), já em produção, e o cancelamento, que substituirá plenamente a forma atual a partir de 1° de dezembro de 2012. Os demais eventos serão implementados gradativamente num futuro próximo. Atualmente, há um projeto-piloto em andamento na Secretária da Fazenda do Rio Grande do Sul (Procergs), com o apoio e a participação de representantes das áreas fiscal e de tecnologia de algumas grandes empresas, como Petrobrás, Panarello, AGCO do Brasil, Lojas Renner, Gerdau, entre outras. A infraestrutura para armazenar e apresentar esses novos eventos registrados já está em funcionamento e ao consultar a situação da NF-e no portal da Secretaria da Fazenda já é possível ver todos os eventos registrados para aquela NF-e. Gradativamente, a NF-e 2G está mudando o poder de fiscalização da administração tributária e, por consequência, a forma com que as empresas encaram a emissão de uma nota fiscal. Os empresários e desenvolvedores de softwares não podem ficar alheios a esses acontecimentos, revisando e ajustando suas práticas para atender às novas exigências e evitar surpresas com o Big Brother Fiscal. Carlos Duena, diretor de Produtos da Vinco Soluções Tecnológicas Messager luizantoniooliveira@hotmail.com Skype luizantoniooliveira Xhb 1.0 / FW 9.07 / WorkShop / HbMake / Xmate / Clipper 5.3b / Blinker 5.1 / LLibg www.omega-store.com.br
×
×
  • Create New...