Stamp XML cfdi pay
This commit is contained in:
parent
6a724ac845
commit
fdbfbb2bc0
|
@ -150,7 +150,7 @@ class CFDI(object):
|
||||||
if datos['complementos']:
|
if datos['complementos']:
|
||||||
if 'ine' in datos['complementos']:
|
if 'ine' in datos['complementos']:
|
||||||
self._ine = True
|
self._ine = True
|
||||||
self._pagos = datos['complementos'].get('pagos', False)
|
self._pagos = bool(datos['complementos'].get('pagos', False))
|
||||||
|
|
||||||
if 'nomina' in datos:
|
if 'nomina' in datos:
|
||||||
self._is_nomina = True
|
self._is_nomina = True
|
||||||
|
@ -196,9 +196,15 @@ class CFDI(object):
|
||||||
attributes[name] = SAT['nomina']['xmlns']
|
attributes[name] = SAT['nomina']['xmlns']
|
||||||
schema_nomina = SAT['nomina']['schema']
|
schema_nomina = SAT['nomina']['schema']
|
||||||
|
|
||||||
|
schema_pagos = ''
|
||||||
|
if self._pagos:
|
||||||
|
name = 'xmlns:{}'.format(SAT['pagos']['prefix'])
|
||||||
|
attributes[name] = SAT['pagos']['xmlns']
|
||||||
|
schema_pagos = SAT['pagos']['schema']
|
||||||
|
|
||||||
attributes['xsi:schemaLocation'] = self._sat_cfdi['schema'] + \
|
attributes['xsi:schemaLocation'] = self._sat_cfdi['schema'] + \
|
||||||
schema_locales + schema_donativo + schema_ine + schema_edu + \
|
schema_locales + schema_donativo + schema_ine + schema_edu + \
|
||||||
schema_nomina
|
schema_nomina + schema_pagos
|
||||||
attributes.update(datos)
|
attributes.update(datos)
|
||||||
|
|
||||||
if not 'Version' in attributes:
|
if not 'Version' in attributes:
|
||||||
|
@ -426,22 +432,12 @@ class CFDI(object):
|
||||||
ET.SubElement(self._complemento, 'ine:INE', atributos)
|
ET.SubElement(self._complemento, 'ine:INE', atributos)
|
||||||
|
|
||||||
if 'pagos' in datos:
|
if 'pagos' in datos:
|
||||||
complemento = ET.SubElement(self._cfdi, '{}:Complemento'.format(self._pre))
|
|
||||||
pre = 'pago10'
|
|
||||||
datos = datos.pop('pagos')
|
datos = datos.pop('pagos')
|
||||||
relacionados = datos.pop('relacionados')
|
relacionados = datos.pop('relacionados')
|
||||||
|
pre = SAT['pagos']['prefix']
|
||||||
attributes = {}
|
attributes = {'Version': SAT['pagos']['version']}
|
||||||
attributes['xmlns:{}'.format(pre)] = \
|
|
||||||
'http://www.sat.gob.mx/Pagos'
|
|
||||||
attributes['xsi:schemaLocation'] = \
|
|
||||||
'http://www.sat.gob.mx/Pagos ' \
|
|
||||||
'http://www.sat.gob.mx/sitio_internet/cfd/Pagos/Pagos10.xsd'
|
|
||||||
attributes.update(datos)
|
|
||||||
|
|
||||||
pagos = ET.SubElement(
|
pagos = ET.SubElement(
|
||||||
complemento, '{}:Pagos'.format(pre), attributes)
|
self._complemento, '{}:Pagos'.format(pre), attributes)
|
||||||
|
|
||||||
node_pago = ET.SubElement(pagos, '{}:Pago'.format(pre), datos)
|
node_pago = ET.SubElement(pagos, '{}:Pago'.format(pre), datos)
|
||||||
for row in relacionados:
|
for row in relacionados:
|
||||||
ET.SubElement(node_pago, '{}:DoctoRelacionado'.format(pre), row)
|
ET.SubElement(node_pago, '{}:DoctoRelacionado'.format(pre), row)
|
||||||
|
|
|
@ -214,6 +214,8 @@ def get_doc(type_doc, id, rfc):
|
||||||
data, file_name = util.get_log('nomina')
|
data, file_name = util.get_log('nomina')
|
||||||
elif type_doc == 'nompdf':
|
elif type_doc == 'nompdf':
|
||||||
data, file_name = CfdiNomina.get_pdf(id, rfc)
|
data, file_name = CfdiNomina.get_pdf(id, rfc)
|
||||||
|
elif type_doc == 'xmlpago':
|
||||||
|
data, file_name = CfdiPagos.get_file_xml(id)
|
||||||
|
|
||||||
return data, file_name, content_type
|
return data, file_name, content_type
|
||||||
|
|
||||||
|
@ -5352,14 +5354,14 @@ class CfdiPagos(BaseModel):
|
||||||
data = {'ok': True, 'row': row, 'new': True}
|
data = {'ok': True, 'row': row, 'new': True}
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def _get_related_xml(self, id_mov):
|
def _get_related_xml(self, id_mov, currency):
|
||||||
filters = (FacturasPagos.movimiento==id_mov)
|
filters = (FacturasPagos.movimiento==id_mov)
|
||||||
related = tuple(FacturasPagos.select(
|
related = tuple(FacturasPagos.select(
|
||||||
Facturas.uuid.alias('IdDocumento'),
|
Facturas.uuid.alias('IdDocumento'),
|
||||||
Facturas.serie.alias('Serie'),
|
Facturas.serie.alias('Serie'),
|
||||||
Facturas.folio.alias('Folio'),
|
Facturas.folio.alias('Folio'),
|
||||||
Facturas.moneda.alias('MonedaDR'),
|
Facturas.moneda.alias('MonedaDR'),
|
||||||
Facturas.tipo_cambio.alias('TipoCambioDR'),
|
# ~ Facturas.tipo_cambio.alias('TipoCambioDR'),
|
||||||
Facturas.metodo_pago.alias('MetodoDePagoDR'),
|
Facturas.metodo_pago.alias('MetodoDePagoDR'),
|
||||||
FacturasPagos.numero.alias('NumParcialidad'),
|
FacturasPagos.numero.alias('NumParcialidad'),
|
||||||
FacturasPagos.saldo_anterior.alias('ImpSaldoAnt'),
|
FacturasPagos.saldo_anterior.alias('ImpSaldoAnt'),
|
||||||
|
@ -5370,10 +5372,11 @@ class CfdiPagos(BaseModel):
|
||||||
.dicts())
|
.dicts())
|
||||||
|
|
||||||
for r in related:
|
for r in related:
|
||||||
|
# ~ print('\n\nMONEDA', currency, r['MonedaDR'])
|
||||||
r['IdDocumento'] = str(r['IdDocumento'])
|
r['IdDocumento'] = str(r['IdDocumento'])
|
||||||
r['Folio'] = str(r['Folio'])
|
r['Folio'] = str(r['Folio'])
|
||||||
r['NumParcialidad'] = str(r['NumParcialidad'])
|
r['NumParcialidad'] = str(r['NumParcialidad'])
|
||||||
r['TipoCambioDR'] = FORMAT.format(r['TipoCambioDR'])
|
# ~ r['TipoCambioDR'] = FORMAT.format(r['TipoCambioDR'])
|
||||||
r['ImpSaldoAnt'] = FORMAT.format(r['ImpSaldoAnt'])
|
r['ImpSaldoAnt'] = FORMAT.format(r['ImpSaldoAnt'])
|
||||||
r['ImpPagado'] = FORMAT.format(r['ImpPagado'])
|
r['ImpPagado'] = FORMAT.format(r['ImpPagado'])
|
||||||
r['ImpSaldoInsoluto'] = FORMAT.format(r['ImpSaldoInsoluto'])
|
r['ImpSaldoInsoluto'] = FORMAT.format(r['ImpSaldoInsoluto'])
|
||||||
|
@ -5432,12 +5435,14 @@ class CfdiPagos(BaseModel):
|
||||||
impuestos = {}
|
impuestos = {}
|
||||||
|
|
||||||
mov = invoice.movimiento
|
mov = invoice.movimiento
|
||||||
|
currency = mov.cuenta.moneda.key
|
||||||
|
related_docs = self._get_related_xml(self, invoice.movimiento, currency)
|
||||||
pagos = {
|
pagos = {
|
||||||
'FechaPago': mov.fecha.isoformat()[:19],
|
'FechaPago': mov.fecha.isoformat()[:19],
|
||||||
'FormaDePagoP': mov.forma_pago.key,
|
'FormaDePagoP': mov.forma_pago.key,
|
||||||
'MonedaP': mov.cuenta.moneda.key,
|
'MonedaP': currency,
|
||||||
'Monto': FORMAT.format(mov.deposito),
|
'Monto': FORMAT.format(mov.deposito),
|
||||||
'relacionados': self._get_related_xml(self, invoice.movimiento),
|
'relacionados': related_docs,
|
||||||
}
|
}
|
||||||
|
|
||||||
complementos = {'pagos': pagos}
|
complementos = {'pagos': pagos}
|
||||||
|
@ -5466,9 +5471,30 @@ class CfdiPagos(BaseModel):
|
||||||
obj.xml = self._generate_xml(self, obj, auth)
|
obj.xml = self._generate_xml(self, obj, auth)
|
||||||
obj.estatus = 'Generada'
|
obj.estatus = 'Generada'
|
||||||
obj.save()
|
obj.save()
|
||||||
# ~ result = util.timbra_xml(obj.xml, auth)
|
msg = 'Factura timbrada correctamente'
|
||||||
data = {'ok': True, 'row': {}}
|
result = util.timbra_xml(obj.xml, auth)
|
||||||
return data
|
if result['ok']:
|
||||||
|
obj.xml = result['xml']
|
||||||
|
obj.uuid = result['uuid']
|
||||||
|
obj.fecha_timbrado = result['fecha']
|
||||||
|
obj.estatus = 'Timbrada'
|
||||||
|
obj.error = ''
|
||||||
|
row = {'uuid': obj.uuid, 'estatus': 'Timbrada'}
|
||||||
|
else:
|
||||||
|
msg = result['error']
|
||||||
|
obj.estatus = 'Error'
|
||||||
|
obj.error = msg
|
||||||
|
row = {'estatus': 'Error'}
|
||||||
|
|
||||||
|
obj.save()
|
||||||
|
|
||||||
|
result = {
|
||||||
|
'ok': result['ok'],
|
||||||
|
'msg': msg,
|
||||||
|
'id': obj.id,
|
||||||
|
'row': row,
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
|
||||||
def _get_related(self, values):
|
def _get_related(self, values):
|
||||||
id_mov = int(values['id_mov'])
|
id_mov = int(values['id_mov'])
|
||||||
|
@ -5488,6 +5514,13 @@ class CfdiPagos(BaseModel):
|
||||||
.where(filters).dicts())
|
.where(filters).dicts())
|
||||||
return {'ok': True, 'rows': rows}
|
return {'ok': True, 'rows': rows}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_file_xml(cls, id):
|
||||||
|
obj = CfdiPagos.get(CfdiPagos.id==id)
|
||||||
|
folio = str(obj.folio).zfill(6)
|
||||||
|
name = '{}{}_{}.xml'.format(obj.serie, folio, obj.socio.rfc)
|
||||||
|
return obj.xml, name
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_values(cls, values):
|
def get_values(cls, values):
|
||||||
opt = values.pop('opt')
|
opt = values.pop('opt')
|
||||||
|
|
|
@ -41,6 +41,7 @@ var bancos_controllers = {
|
||||||
|
|
||||||
$$('cmd_pay_stamp').attachEvent('onItemClick', cmd_pay_stamp_click)
|
$$('cmd_pay_stamp').attachEvent('onItemClick', cmd_pay_stamp_click)
|
||||||
$$('cmd_pay_cancel').attachEvent('onItemClick', cmd_pay_cancel_click)
|
$$('cmd_pay_cancel').attachEvent('onItemClick', cmd_pay_cancel_click)
|
||||||
|
$$('grid_cfdi_pay').attachEvent('onItemClick', grid_cfdi_pay_click)
|
||||||
|
|
||||||
set_year_month()
|
set_year_month()
|
||||||
}
|
}
|
||||||
|
@ -800,6 +801,7 @@ function update_grid_cfdi_pay(row){
|
||||||
}
|
}
|
||||||
|
|
||||||
function send_stamp_cfdi_pay(id_mov){
|
function send_stamp_cfdi_pay(id_mov){
|
||||||
|
var g = $$('grid_cfdi_pay')
|
||||||
var data = {'opt': 'stamp', 'id_mov': id_mov}
|
var data = {'opt': 'stamp', 'id_mov': id_mov}
|
||||||
|
|
||||||
webix.ajax().sync().post('cfdipay', data, {
|
webix.ajax().sync().post('cfdipay', data, {
|
||||||
|
@ -810,8 +812,10 @@ function send_stamp_cfdi_pay(id_mov){
|
||||||
success:function(text, data, XmlHttpRequest){
|
success:function(text, data, XmlHttpRequest){
|
||||||
result = data.json();
|
result = data.json();
|
||||||
if(result.ok){
|
if(result.ok){
|
||||||
msg = 'Factura timbrada correctamente'
|
g.updateItem(result.id, result.row)
|
||||||
msg_ok(msg)
|
msg_ok(result.msg)
|
||||||
|
}else{
|
||||||
|
msg_error(result.msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -870,3 +874,19 @@ function cmd_pay_stamp_click(){
|
||||||
|
|
||||||
function cmd_pay_cancel_click(){
|
function cmd_pay_cancel_click(){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function grid_cfdi_pay_click(id, e, node){
|
||||||
|
var row = this.getItem(id)
|
||||||
|
|
||||||
|
if(id.column == 'xml'){
|
||||||
|
location = '/doc/xmlpago/' + row.id
|
||||||
|
}
|
||||||
|
|
||||||
|
//~ }else if(id.column == 'pdf'){
|
||||||
|
//~ get_pdf(row.id)
|
||||||
|
//~ }else if(id.column == 'email'){
|
||||||
|
//~ enviar_correo(row)
|
||||||
|
//~ }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -114,7 +114,7 @@ var grid_cfdi_este_deposito_cols = [
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
var grid_cfdi_pago_cols = [
|
var grid_cfdi_pay_cols = [
|
||||||
{id: 'index', header: '#', adjust: 'data', css: 'right',
|
{id: 'index', header: '#', adjust: 'data', css: 'right',
|
||||||
footer: {content: 'countRows', colspan: 3, css: 'right'}},
|
footer: {content: 'countRows', colspan: 3, css: 'right'}},
|
||||||
{id: "id", header:"ID", hidden:true},
|
{id: "id", header:"ID", hidden:true},
|
||||||
|
@ -210,7 +210,7 @@ var grid_cfdi_pay = {
|
||||||
autoheight: true,
|
autoheight: true,
|
||||||
resizeColumn: true,
|
resizeColumn: true,
|
||||||
headermenu: true,
|
headermenu: true,
|
||||||
columns: grid_cfdi_pago_cols,
|
columns: grid_cfdi_pay_cols,
|
||||||
on:{
|
on:{
|
||||||
'data->onStoreUpdated':function(){
|
'data->onStoreUpdated':function(){
|
||||||
this.data.each(function(obj, i){
|
this.data.each(function(obj, i){
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
<xsl:include href="donat11.xslt"/>
|
<xsl:include href="donat11.xslt"/>
|
||||||
<xsl:include href="ine11.xslt"/>
|
<xsl:include href="ine11.xslt"/>
|
||||||
<xsl:include href="iedu.xslt"/>
|
<xsl:include href="iedu.xslt"/>
|
||||||
|
<xsl:include href="pagos10.xslt"/>
|
||||||
<!--
|
<!--
|
||||||
<xsl:include href="ecc11.xslt"/>
|
<xsl:include href="ecc11.xslt"/>
|
||||||
<xsl:include href="Divisas.xslt"/>
|
<xsl:include href="Divisas.xslt"/>
|
||||||
|
@ -30,7 +31,6 @@
|
||||||
<xsl:include href="obrasarteantiguedades.xslt"/>
|
<xsl:include href="obrasarteantiguedades.xslt"/>
|
||||||
<xsl:include href="ventavehiculos11.xslt"/>
|
<xsl:include href="ventavehiculos11.xslt"/>
|
||||||
<xsl:include href="terceros11.xslt"/>
|
<xsl:include href="terceros11.xslt"/>
|
||||||
<xsl:include href="Pagos10.xslt"/>
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,165 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:pago10="http://www.sat.gob.mx/Pagos">
|
||||||
|
|
||||||
|
<xsl:template match="pago10:Pagos">
|
||||||
|
<!--Manejador de Atributos Pagos-->
|
||||||
|
<xsl:call-template name="Requerido">
|
||||||
|
<xsl:with-param name="valor" select="./@Version" />
|
||||||
|
</xsl:call-template>
|
||||||
|
|
||||||
|
<!-- Iniciamos el manejo de los elementos hijo en la secuencia -->
|
||||||
|
<xsl:for-each select="./pago10:Pago">
|
||||||
|
<xsl:apply-templates select="."/>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="pago10:Pago">
|
||||||
|
<xsl:call-template name="Requerido">
|
||||||
|
<xsl:with-param name="valor" select="./@FechaPago" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Requerido">
|
||||||
|
<xsl:with-param name="valor" select="./@FormaDePagoP" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Requerido">
|
||||||
|
<xsl:with-param name="valor" select="./@MonedaP" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@TipoCambioP" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Requerido">
|
||||||
|
<xsl:with-param name="valor" select="./@Monto" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@NumOperacion" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@RfcEmisorCtaOrd" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@NomBancoOrdExt" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@CtaOrdenante" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@RfcEmisorCtaBen" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@CtaBeneficiario" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@TipoCadPago" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@CertPago" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@CadPago" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@SelloPago" />
|
||||||
|
</xsl:call-template>
|
||||||
|
|
||||||
|
<!-- Iniciamos el tratamiento de los atributos de pago10:DocumentoRelacionado-->
|
||||||
|
<xsl:for-each select="./pago10:DoctoRelacionado">
|
||||||
|
<xsl:apply-templates select="."/>
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:for-each select="./pago10:Impuestos">
|
||||||
|
<xsl:apply-templates select="."/>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="pago10:DoctoRelacionado">
|
||||||
|
|
||||||
|
<xsl:call-template name="Requerido">
|
||||||
|
<xsl:with-param name="valor" select="./@IdDocumento" />
|
||||||
|
</xsl:call-template>
|
||||||
|
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@Serie" />
|
||||||
|
</xsl:call-template>
|
||||||
|
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@Folio" />
|
||||||
|
</xsl:call-template>
|
||||||
|
|
||||||
|
<xsl:call-template name="Requerido">
|
||||||
|
<xsl:with-param name="valor" select="./@MonedaDR" />
|
||||||
|
</xsl:call-template>
|
||||||
|
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@TipoCambioDR" />
|
||||||
|
</xsl:call-template>
|
||||||
|
|
||||||
|
<xsl:call-template name="Requerido">
|
||||||
|
<xsl:with-param name="valor" select="./@MetodoDePagoDR" />
|
||||||
|
</xsl:call-template>
|
||||||
|
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@NumParcialidad" />
|
||||||
|
</xsl:call-template>
|
||||||
|
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@ImpSaldoAnt" />
|
||||||
|
</xsl:call-template>
|
||||||
|
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@ImpPagado" />
|
||||||
|
</xsl:call-template>
|
||||||
|
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@ImpSaldoInsoluto" />
|
||||||
|
</xsl:call-template>
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="pago10:Impuestos">
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@TotalImpuestosRetenidos" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Opcional">
|
||||||
|
<xsl:with-param name="valor" select="./@TotalImpuestosTrasladados" />
|
||||||
|
</xsl:call-template>
|
||||||
|
|
||||||
|
<xsl:apply-templates select="./pago10:Retenciones"/>
|
||||||
|
<xsl:apply-templates select="./pago10:Traslados"/>
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="pago10:Retenciones">
|
||||||
|
<xsl:for-each select="./pago10:Retencion">
|
||||||
|
<xsl:apply-templates select="."/>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="pago10:Traslados">
|
||||||
|
<xsl:for-each select="./pago10:Traslado">
|
||||||
|
<xsl:apply-templates select="."/>
|
||||||
|
</xsl:for-each>
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="pago10:Retencion">
|
||||||
|
<xsl:call-template name="Requerido">
|
||||||
|
<xsl:with-param name="valor" select="./@Impuesto" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Requerido">
|
||||||
|
<xsl:with-param name="valor" select="./@Importe" />
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="pago10:Traslado">
|
||||||
|
<xsl:call-template name="Requerido">
|
||||||
|
<xsl:with-param name="valor" select="./@Impuesto" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Requerido">
|
||||||
|
<xsl:with-param name="valor" select="./@TipoFactor" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Requerido">
|
||||||
|
<xsl:with-param name="valor" select="./@TasaOCuota" />
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:call-template name="Requerido">
|
||||||
|
<xsl:with-param name="valor" select="./@Importe" />
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
Loading…
Reference in New Issue