Per saber si una factura conté una línia de serveis amb una compta que comenci per 701:
Torna true si hi ha alguna compta 701, o false en cas contrari
Exemple: user:PortaCompta701(%AcctCode)
public string PortaCompta701(XPathNodeIterator DOC1AcctCode) { string resultat = "false"; if (DOC1AcctCode.MoveNext()) { XPathNavigator navegador = DOC1AcctCode.Current; XPathNodeIterator iterador = navegador.Select("//DataSource/DOC1/AcctCode[starts-with(text(),'701')]/.."); if (iterador.MoveNext()) resultat="true"; } return resultat; }
Per saber si una factura porta desglòs per factura o per operació:
Torna O (Operació) o F (Factura)
Exemple: user:obtenirTipusDesglos(%DocType,%OCRD_ResidenNum,%LicTradNum,%U_B1SYS_INV_TYPE)
// Obtenir el tipus de desglos (O=Operacio F=Factura) // Obligatoriament seran amb desglos les factures a clients extrangers o que tinguin un NIF que comenci amb N // i que no suguin factures simplificades o assentaments resum (F2 o F4) public string obtenirTipusDesglos(String docType,int OCRD_ResidenNum,String licTradNum, String U_B1SYS_INV_TYPE) { String resultat="F"; if ((OCRD_ResidenNum>2 | licTradNum.Substring(0,3)=="ESN") & U_B1SYS_INV_TYPE!="F2" & U_B1SYS_INV_TYPE!="F4") resultat="O"; return resultat; }
Per saber si un desglòs per operació es de tipus entrega o prestació de serveis a les factures de vendes (a les de compres es igual pero tenint en compte el grup 6):
Torna E (Entrega) o S (Prestació de serveis)
Exemple: user:obtenirEntregaOServei(%AcctCode)
public string obtenirEntregaOServei(XPathNodeIterator DOC1AcctCode) { string resultat="E"; int g70=0; string valor=""; if (DOC1AcctCode.MoveNext()) { XPathNavigator navegador = DOC1AcctCode.Current; XPathNodeIterator iterador = navegador.Select("//DataSource/DOC1/AcctCode"); while (iterador.MoveNext()) { valor=iterador.Current.Value; if (valor.StartsWith("70")) g70=g70+1; } if (g70==0) resultat="S"; } return resultat; }
Per confeccionar el concepte de les factures de vendes a partir de les comptes comptables (les de compres seríen igual però considerant el grup 6):
Torna el concepte que s’informarà al SII
Exemple: user:revisarConcepte(%AcctCode)
public string obtenirConcepte(XPathNodeIterator DOC1AcctCode) { string resultat=""; int g70=0; string valor=""; if (DOC1AcctCode.MoveNext()) { XPathNavigator navegador = DOC1AcctCode.Current; XPathNodeIterator iterador = navegador.Select("//DataSource/DOC1/AcctCode"); while (iterador.MoveNext()) { valor=iterador.Current.Value; if (valor.StartsWith("70")) g70=g70+1; } if (g70>0) resultat="Venta de mercancias"; else resultat="Prestación de servicios"; } return resultat; }
Per saber si una factura porta el grup d’impostos RNS:
Exemple: user:esRNS(%TAX1_TaxCode)
public string esRNS(XPathNodeIterator taxGroupNode) { if (taxGroupNode.MoveNext()) { if (taxGroupNode.Current.Value=="RNS") return "Y"; else return "N"; } else return "X"; }