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";
}