// Nome do titulo Janela // title name window // nom du titre fenêtre
NextTitle("Farei uma Pergunta ")
// Confirm
n_resultado is int = Confirm("Voce vai querer Continuar","Proxima Linha","Mais Uma")
SWITCH n_resultado
CASE Yes:
Info("ok")
CASE No:
Info("nao")
CASE Cancel:
Info("Cancela")
END
//Site com WebService Sefaz RS // Site with webservcie sefaz RS // Site avec WebService Sefaz RS https://nfe.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx
//Inserir o Soap // Insert Soap // Insérer Savon //
s_envelop_soap is string=[
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Header>
<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
<cUF>#cUF#</cUF>
<versaoDados>3.10</versaoDados>
</nfeCabecMsg>
</soap12:Header>
<soap12:Body>
<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
<consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10">
<tpAmb>2</tpAmb>
<cUF>43</cUF>
<xServ>STATUS</xServ>
</consStatServ>
</nfeDadosMsg>
</soap12:Body>
</soap12:Envelope>
]
s_uf is string="43"
s_envelop_soap=Replace(s_envelop_soap,"#cUF#",s_uf)
s_envelop_soap=Replace(s_envelop_soap,CR,"")
// colocar o webservice // put the web service // mettre le service web//
s_webservice_consulta is string="https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx"
//Criar webservice ok // create webservice ok // créer webservice ok
b_webservice_ok is boolean=False
b_webservice_ok=HTTPRequest(s_webservice_consulta,"","",s_envelop_soap,"text/xml","","")
IF b_webservice_ok=True THEN //verificar se webservice_ok esta ok // check ok ok this webservice // vérifier ok ok ce webservcie
s_retorno is string=HTTPGetResult(httpResult) //pegar retorno httpgetresult // return catch// retour captures
EDT_retorno=s_retorno
EDT_cStat=pesquisa_tag_nfe_wdk("cStat",s_retorno)
EDT_xMotivo=pesquisa_tag_nfe_wdk("xMotivo",s_retorno)
END
//Vamos TEstar
PROCEDURE pesquisa_tag_nfe_wdk(_tag,_retorno_xml)
_texto_inicial is string="<"+_tag+">"
_texto_final is string="</"+_tag+">"
nPosicaoInicial is int=0
nPosicaoFinal is int=0
nPosicaoInicial = PositionOccurrence(_retorno_xml,_texto_inicial,firstRank,FromBeginning) + Length(_texto_inicial)
nPosicaoFinal = PositionOccurrence(_retorno_xml,_texto_final,firstRank,FromBeginning)
IF nPosicaoFinal>nPosicaoInicial THEN
RESULT Middle(_retorno_xml,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
ELSE
RESULT ""
END
A maioria das impressoras têm margens físicas de vários milímetros, e por vezes mais de um centímetro.Por exemplo, se a margem de impressão deixada é de 4 mm, fisicamente unidades da impressora não pode imprimir na região de papel 0-4 mm, mesmo com uma chamada de funçãoiMargincom zero de a margem esquerda, o início da impressão será de 4 mm a partir da borda esquerda. PDF tem uma moldura vermelha corresponde exatamente com as margens físicas da impressora padrão configurado ao executar o código: Quando programada edição destina-se apenas para a produção de um documento de PDF, pode ser vantajoso utilizar toda a superfície das páginas.Um truque de conseguir isso é simplesmente selecionar antes de editar a impressora do sistema "Microsoft XPS Document Writer."Na verdade, o piloto de impressora "virtual" para a vantagem de não ter de margem, ou o formato até mesmo definir.Podemos criar um documento sem margens ou com um tamanho de papel que não é aceite por uma impressora padrão.O seguinte código idêntico ao anterior, com a excepção de a escolha do controlador, torna possível representar os resultados:
La
majeure partie des imprimantes disposent de marges physiques de
quelques millimètres, et parfois de plus d'un centimètre. Par exemple si
la marge gauche d'une imprimante est de 4 mm, physiquement les
mécanismes d'entraînement de l'imprimante ne peuvent imprimer dans la
zone de 0 à 4 mm du papier, même avec un appel de la fonction iMarge avec zéro pour la marge gauche, le début de l'impression sera à 4 mm du bord gauche.
Il est possible de se représenter les marges physiques d'une imprimante avec le code suivant :
iMarge(0,0,0,0) iDestination(iPDFGénérique,"c:\temp\imp_marge.pdf") iCadre(0,0,iLargeurPage,iHauteurPage,1,0,RougeClair,iContinu) iImprimeZone("Le cadre tient compte de la marge physique de l'imprimante",0,10,iLargeurPage(),iHauteurPage(),iHaut+iCentreH) iFinImprime()
LanceAppliAssociée("c:\temp\imp_marge.pdf")
Le
PDF obtenu aura un cadre rouge correspondant exactement aux marges
physiques de l'imprimante configurée par défaut lors de l'exécution du
code :
Lorsqu'une
édition programmée est destinée uniquement à la production d'un
document PDF, il peut être intéressant d'utiliser toute la surface des
pages. Une astuce pour y parvenir consiste tout simplement à
sélectionner avant l'édition l'imprimante système "Microsoft XPS
Document Writer". En effet, ce pilote "virtuel" d'imprimante à
l'avantage de n'avoir aucun marge, ni même de format imposé. On peut
donc créer un document sans aucune marge, ou avec un format de papier
qui ne serait pas accepté par une imprimante standard. Le code suivant
identique au précédent, à l'exception du choix du pilote, permet de se
représenter le résultat :
iConfigure("Microsoft XPS Document Writer") iMarge(0,0,0,0) iDestination(iPDF,"c:\temp\imp_sans_marge.pdf") iCadre(0,0,iLargeurPage,iHauteurPage,1,0,RougeClair,iContinu) iImprimeZone("Aucune marge le cadre est bien placé en 0x0 du document",0,10,iLargeurPage(),iHauteurPage(),iHaut+iCentreH) iFinImprime()
Le PDF obtenu a bien le cadre sur les bords du document :
Un
cas pratique dans lequel ce pilote est utile : découper un PDF de N
pages en N PDF d'une seule page. Sans utiliser ce pilote, le contenu des
pages obtenues est décalé suivant les marges physiques de l'imprimante
en cours. Exemple d'un code de découpage d'un PDF, conservant
strictement la position des données du document PDF d'origine :
//("xml","/nfeProc/protNFe/infProt/chNFe")
//("xml","/nfeProc/NFe/infNFe/ide/nNF")
//fazer a pesquisa e mostrar // do research and show // faire des recherches et spectacle
//vou fazer uma procedure interna pesquisa tag // i will make an internal tag search procedure
// je vais faire une procédure tag de recherche interne
INTERNAL PROCEDURE pesquisa(_recebe_tag,_recebe_arquivo_xml)
//vou criar string texto inicial e final //i will create string start and ent text
//je vais créer début de chaîne et le texte final
_texto_inicial is string="<"+_recebe_tag+">"
_texto_final is string="</"+_recebe_tag+">"
//criar uma posicao inicial e final //create an initital and final position //créer une position initiale et finale
_posicao_inicial is int=0
_posicao_final is int=0
//vou pegar a posição inicial // i´ll get the startion position //je vais prendre la position de départ
_posicao_inicial=PositionOccurrence(_recebe_arquivo_xml,_texto_inicial,firstRank,FromBeginning)+Length(_texto_inicial)
//vou pegar a posição final // i´ll get the final position // je vais prendre la position finale
_posicao_final=PositionOccurrence(_recebe_arquivo_xml,_texto_final,firstRank,FromBeginning)
//vou verificar se posição final maior inicial // i will check if initial higher end position // je vais vérifieir si la position iniale de haut de gamme
IF _posicao_final>_posicao_inicial THEN
//vou pegar o conteudo da tag // i´ll take the content of the tag //je vais prendrer le contenu de la balise
RESULT Middle(_recebe_arquivo_xml,_posicao_inicial,_posicao_final-_posicao_inicial)
ELSE
RESULT ""
END