Función VirtualXML_Pagos20AddPagoDoctoRelacionado VirtualXML
Agrega información del CFDI de ingreso que es pagado en un comprobante fiscal digital versión 4.0 de tipo "P"ago.

Esta función se debe utilizar después de llamar a la función VirtualXML_Pagos20AddPago(). Un CFDI de pago puede contener información de uno o varios CFDI de ingresos, aplicados sobre un solo pago, no obstante, un CFDI de pagos puede contener varios pagos que a su vez amparen uno o mas CFDIs pagados total o parcialmente.

Por cada documento que se relacione se debe hacer una llamada a esta función.

Namespace:
 VirtualXML®
Aplicación: CFDI ver. 4.0
Sintaxis

public static void VirtualXML_Pagos20AddPagoDoctoRelacionado(
int p,
string idDocumento,
string Serie,
string Folio,
string MonedadDR,
string EquivalenciaDR,
string NumParcialidad,
string ImpSaldoAnt,
string ImpPagado,
string ImpSaldoInsoluto,
string ObjetoImpDR

)

Parametros

p
Tipo: System  Int32
Identificador en memoria devuelto por la función VirtualXML_New()

IdDocumento
Tipo: System  String
Atributo requerido para expresar el identificador del documento relacionado con el pago. Este dato puede ser un Folio Fiscal de la Factura Electrónica o bien el número de operación de un documento digital.

Serie
Tipo: System  String
Atributo opcional para precisar la serie del comprobante para control interno del contribuyente, acepta una cadena de caracteres.

Folio
Tipo: System  String
Atributo opcional para precisar el folio del comprobante para control interno del contribuyente, acepta una cadena de caracteres.

MonedaDR
Tipo: System  String
Atributo requerido para identificar la clave de la moneda utilizada en los importes del documento relacionado, cuando se usa moneda nacional o el documento relacionado no especifica la moneda se registra MXN. Los importes registrados en los atributos “ImpSaldoAnt”, “ImpPagado” e “ImpSaldoInsoluto” de éste nodo, deben corresponder a esta moneda. Conforme con la especificación ISO 4217.

EquivalenciaDR
Tipo: System  String
Atributo condicional para expresar el tipo de cambio conforme con la moneda registrada en el documento relacionado. Es requerido cuando la moneda del documento relacionado es distinta de la moneda de pago. Se debe registrar el número de unidades de la moneda señalada en el documento relacionado que equivalen a una unidad de la moneda del pago. Por ejemplo: El documento relacionado se registra en USD El pago se realiza por 100 EUR. Este atributo se registra como 1.114700 USD/EUR. El importe pagado equivale a 100 EUR * 1.114700 USD/EUR = 111.47 USD.
NumParcialidad
Tipo: System  String
Atributo condicional para expresar el número de parcialidad que corresponde al pago. Es requerido cuando MetodoDePagoDR contiene: “PPD” Pago en parcialidades o diferido.
ImpSaldoAnt
Tipo: System  String
Atributo condicional para expresar el monto del saldo insoluto de la parcialidad anterior. Es requerido cuando MetodoDePagoDR contiene: “PPD” Pago en parcialidades o diferido.En el caso de que sea la primer parcialidad este campo debe contener el importe total del documento relacionado.

ImpPagado
Tipo: System  String
Atributo condicional para expresar el importe pagado para el documento relacionado. Es obligatorio cuando exista más de un documento relacionado o cuando existe un documento relacionado y el TipoCambioDR tiene un valor.
ImpSaldoInsoluto
Tipo: System  String
Atributo condicional para expresar la diferencia entre el importe del saldo anterior y el monto del pago. Es requerido cuando MetodoDePagoDR contiene: “PPD” Pago en parcialidades o diferido.
ObjetoImpDR
Tipo: System  String
Atributo requerido para expresar si el pago del documento relacionado es objeto o no de impuesto. Revise el catálogo c_ObjetoImp publicado por el SAT para conocer los valores posibles de este parámetro. 
Ejemplo:

private void GeneraDocto(String version)
{
// Creamos un comprobante 
    int hXml = VirtualXML_New("3.3");

// Llenado del documento
VirtualXML_SetComprobanteInfo_cfdi33( hXml, "P", "1", "%cb_date", "", "", "0", "","XXX", "", "0", "P", "", "53050", "");

    // Datos del emisor 

    // Datos del receptor 

    // Concepto, un comprobante de pago solo lleva un concepto fijo:
VirtualXML_AddConcepto_cfdi33( hXml, "84111506", "", "1", "ACT", "", "PAGO", "0", "0", "");

    // Asignamos el complemento de pagos:
    VirtualXML_SetPagos10( hXml );

// Agregamos un pago con cheque
VirtualXML_Pagos10SetPago( hXml, "2017-05-31T12:00:00", "02", "MXN", "", "1160.00", "652", "BSM970519DU8", "", "002180065145757870", "CFA950629CAA", "002180065145895321", "", "", "", "" );
// Agregamos un documento relacionado al pago anterior
VirtualXML_Pagos10AddPagoDoctoRelacionado( hXml, "FF93C8BE-AF7B-4FC5-8854-6DAE18CFB5B4", "A", "434", "MXN", "", "PPD", "1", "1160.00", "1160.00", "0.00" );

// Agregamos un pago con efectivo
VirtualXML_Pagos10SetPago( hXml, "2017-05-28T12:00:00", "01", "MXN", "", "5800.00", "", "", "", "", "", "", "", "", "", "" );
// Agregamos dos documentos relacionados al pago anterior
VirtualXML_Pagos10AddPagoDoctoRelacionado( hXml, "FDBA380A-9732-4FB5-A6CB-5FB4BD831697", "A", "1354", "MXN", "", "PPD", "2", "2320.00", "1160.00", "1160.00" );
VirtualXML_Pagos10AddPagoDoctoRelacionado( hXml, "BE1D4B47-E167-47A3-8049-70D4D43BCBE8", "C", "2549", "MXN", "", "PPD", "1", "11600.00", "4640.00", "6960.00" );

// Agregamos un pago con SPEI
VirtualXML_Pagos10SetPago( hXml, "2017-05-14T16:29:31", "03", "MXN", "", "2320.00", "BNET01001705190001524424", "BSM970519DU8", "002180065145757870", "CFA950629CAA", "002180065145895321", "01",
"MIIF+TCCA+GgAwIBAgIUMzAwMDEwMDAwMDAzMDAw.....Agregar aqui el certificado del complemento SPEI....",
"||1|02062017|02062017|172956|40002|BBVA BANCOMER....Agregar aqui la cadena del complemento SPEI...",
"RyOPIIajuWTAr3G80+UM/MmW+7u/Te3U+ofJxmZAdTRegHAbtYR2m918iHMFZXsynw+OQM5q+QnrYPTKQhkl3.... Agegar aqui el sello del complemento SPEI ....
" );
// Agregamos un documento relacionado al pago anterior
VirtualXML_Pagos10AddPagoDoctoRelacionado( hXml, "D8E18C2F-2859-4927-A0F0-EA3E93642DDC", "A", "1254", "MXN", "", "PPD", "6", "2320.00", "2320.00", "0.00" );

// Procesamiento del documento
 
    // .... 

    // Lectura de resultados 
    // .... 

    // Liberacion de memoria
VirtualXML_Free(hXml);
}
Veáse También