Compartir a través de


Obtener una colección de facturas

Se aplica a: Centro de asociados | Centro de asociados operado por 21Vianet | Centro de asociados para la Nube de Microsoft para el Gobierno de los EE. UU.

Cómo recuperar una colección de facturas del socio.

Prerrequisitos

C#

Para obtener una colección de todas las facturas disponibles, use la propiedad Invoices para obtener una interfaz para las operaciones de facturación y, a continuación, llame al método Get o GetAsync para recuperar la colección.

Para obtener una colección paginada de facturas, llame primero al método BuildIndexedQuery y pásele el tamaño de página para crear un objeto IQuery . A continuación, use la propiedad Invoices para obtener una interfaz para las operaciones de facturación y, a continuación, pase el objeto IQuery al método Query o QueryAsync para enviar la solicitud y obtener la primera página.

A continuación, use la propiedad Enumerators para obtener una interfaz para la colección de enumeradores de colección de recursos admitidos y, a continuación, llame a Invoices.Create para crear un enumerador que permita recorrer la colección de facturas. Por último, use el enumerador para recuperar y trabajar con cada página de facturas, como se muestra en el siguiente ejemplo de código. Cada llamada al método Next envía una solicitud para la siguiente página de facturas en función del tamaño de página.

// IAggregatePartner partnerOperations;
// int invoicePageSize;

// Is this an unpaged or paged request?
bool isUnpaged = (this.invoicePageSize <= 0);

// If the scenario is unpaged, get all the invoices, otherwise get the first page.
var invoicesPage = (isUnpaged)
                 ? partnerOperations.Invoices.Get()
                 : partnerOperations.Invoices.Query(QueryFactory.Instance.BuildIndexedQuery(this.invoicePageSize));

// Create an invoice enumerator for traversing the invoice pages.
var invoicesEnumerator = partnerOperations.Enumerators.Invoices.Create(invoicesPage);
int lineCounter = 1;

while (invoicesEnumerator.HasValue)
{
    // Print the current invoice results page.
    var invoices = invoicesEnumerator.Current.Items;

    foreach (var i in invoices)
    {
        Console.WriteLine(String.Format("{0,3}. {1}  {2}  {3,16:C2}",
            lineCounter++,
            i.Id,
            i.InvoiceDate.ToString("yyyy&#39;-&#39;MM&#39;-&#39;dd&#39;T&#39;HH&#39;:&#39;mm&#39;:&#39;ss&#39;Z&#39;"),
            i.TotalCharges));
    }

    Console.WriteLine();
    Console.Write("Press any key to retrieve the next invoices page");
    Console.ReadKey();

    // Get the next page of invoices.
    invoicesEnumerator.Next();
}

Para ver un ejemplo ligeramente diferente, consulte Ejemplo: Aplicación de prueba de consola. Proyecto: Ejemplos del SDK del Centro de partners Clase: GetPagedInvoices.cs

Nota:

La misma API se utiliza para todas las compras comerciales modernas, así como para las licencias de 145p y Office. El tamaño y el desplazamiento solo se tienen en cuenta para las facturas heredadas. Para todas las compras comerciales modernas, se ignorará el tamaño de página y el desplazamiento.

Solicitud REST

Sintaxis de la solicitud

Método Solicitud de URI
OBTENER {baseURL}/v1/invoices?size={size}&offset={offset} HTTP/1.1
OBTENER {baseURL}/v1/invoices?size={size}&offset={offset}&filter={"LeftFilter":{"Field":{field},"Value":{value},"Operator":{operator}},"RightFilter":{"Field":{field},"Value":{value},"Operator":{operator}},"Operator":{operator}} HTTP/1.1

Parámetros de URI

Utilice los siguientes parámetros de consulta al crear la solicitud.

Nombre Tipo Obligatorio Descripción
tamaño Int No El número de recursos de factura que se van a devolver en la respuesta. Este parámetro es opcional.
compensar Int No El índice de base cero de la primera factura que se devuelve.
filtro cuerda / cadena No Criterios de filtro personalizados basados en texto para reducir los recursos de la factura en la respuesta. Utilice esta condición para evitar el error de tiempo de espera. Vea cómo usar la condición de filtro

Cómo usar la condición de filtro

Un ejemplo de la condición de filtro:

/v1/invoices?size=10&offset=0&filter={"LeftFilter":{"Field":"InvoiceDate","Value":"01/01/2023","Operator":"greater_than_or_equals"},"RightFilter":{"Field":"InvoiceDate","Value":"12/31/2023","Operator":"less_than_or_equals"},"Operator":"and"}

Para filtrar los datos de forma eficaz, comprenda los tres componentes principales de los criterios de filtro:

  • Filtro izquierdo: Especifique el campo, el valor y el operador del lado izquierdo de la expresión de filtro para establecer la condición inicial.
  • Campo: Atributo que se utilizará para filtrar
  • Valor: Valor del atributo

Por ejemplo, "LeftFilter": {"Field":"InvoiceDate","Value":"01/01/2023","Operator":"greater_than_or_equals"} filtra las facturas a partir del 1 de enero de 2023.

  • Filtro derecho: Defina el campo, el valor y el operador del lado derecho de la expresión de filtro para completar la condición.

Por ejemplo, "RightFilter":{"Field":"InvoiceDate","Value":"12/31/2023","Operator":"less_than_or_equals"} filtra las facturas a más tardar el 31 de diciembre de 2023.

  • Operador: Conecte los filtros izquierdo y derecho con un operador lógico. Utilice "y" u "o" para combinar los criterios.

Por ejemplo, "Operator": "and" se asegura de que el filtro incluya facturas que cumplan ambas condiciones.

Para un solo filtro, escriba el nombre de campo, el valor y el operador sin necesidad de las construcciones "LeftFilter" o "RightFilter".

Este enfoque le ayuda a filtrar sus datos de forma precisa y eficiente.

Cabeceras de solicitud

Para más información, consulte Encabezados REST del Centro de partners.

Cuerpo de la solicitud

Ninguno

Ejemplo de solicitud

GET https://api.partnercenter.microsoft.com/v1/invoices?size=200&offset=0 HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: e88d014d-ab70-41de-90a0-f7fd1797267d
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US
MS-PartnerCenter-Application: Partner Center .NET SDK Samples
Host: api.partnercenter.microsoft.com

Importante

A partir de junio de 2023, la versión 3.4.0 más reciente del SDK de .NET del Centro de Socios ahora está archivada. Puede descargar la versión del SDK de GitHub, junto con un archivo léame que contiene información útil.

Se recomienda a los partners seguir usando las API REST del Centro de partners.

Respuesta REST

Si se realiza correctamente, el cuerpo de la respuesta contiene la colección de recursos de factura .

Códigos de éxito y de error de la respuesta

Cada respuesta incluye un código de estado HTTP que indica éxito o error y otra información de depuración. Use una herramienta de seguimiento de red para leer este código, tipo de error y otros parámetros. Para obtener la lista completa, consulta Códigos de error de REST del Centro de socios.

Ejemplo de respuesta

HTTP/1.1 200 OK
Content-Length: 256
Content-Type: application/json; charset=utf-8
MS-CorrelationId: bbbb1111-cc22-3333-44dd-555555eeeeee
MS-RequestId: a45e6643-1caf-4429-8f90-07c03d85bc2b
Date: Thu, 24 Mar 2016 05:21:01 GMT
{
    "totalCount": 2,
    "items": [
        {
            "id": "D02005YFHI",
            "invoiceDate": "2017-01-21T00:00:00Z",
            "totalCharges": 24606.35,
            "paidAmount": 1000,
            "currencyCode": "GBP",
            "currencySymbol": "£",
            "pdfDownloadLink": "/invoices/D02005YFHI/documents/statement",
            "taxReceipts": [
                {
                    "id": "123456",
                    "taxReceiptPdfDownloadLink": "/invoices/D02005YFHI/receipts/123456/documents/statement"
                }
            ],
            "invoiceDetails": [
                {
                    "invoiceLineItemType": "billing_line_items",
                    "billingProvider": "office",
                    "links": {
                        "self": {
                            "uri": "/invoices/Recurring-D02005YFHI/lineitems/Office/BillingLineItems",
                            "method": "GET",
                            "headers": []
                        }
                    },
                    "attributes": {
                        "objectType": "InvoiceDetail"
                    }
                }
            ],
            "documentType": "invoice",
            "invoiceType": "Recurring",
            "links": {
                "self": {
                    "uri": "/invoices/Recurring-D02005YFHI",
                    "method": "GET",
                    "headers": []
                }
            },
            "attributes": {
                "objectType": "Invoice"
            }
        },
        {
            "id": "G000024130",
            "invoiceDate": "2018-02-08T01:22:47.603895Z",
            "totalCharges": 586366,
            "paidAmount": 0,
            "currencyCode": "CHF",
            "currencySymbol": "CHF",
            "pdfDownloadLink": "/invoices/G000024130/documents/statement",
            "taxReceipts": [
                {
                    "id": "234567",
                    "taxReceiptPdfDownloadLink": "/invoices/G000024130/receipts/234567/documents/statement"
                }
            ],
            "invoiceDetails": [
                {
                    "invoiceLineItemType": "billing_line_items",
                    "billingProvider": "one_time",
                    "links": {
                        "self": {
                            "uri": "/invoices/OneTime-G000024130/lineitems/OneTime/BillingLineItems",
                            "method": "GET",
                            "headers": []
                        }
                    },
                    "attributes": {
                        "objectType": "InvoiceDetail"
                    }
                }
            ],
            "amendments": [
                {
                    "id": "G000024131",
                    "invoiceDate": "2018-02-08T18:44:37.5381456Z",
                    "totalCharges": 107661.12,
                    "paidAmount": 0,
                    "currencyCode": "CHF",
                    "currencySymbol": "CHF",
                    "invoiceDetails": [
                        {
                            "invoiceLineItemType": "billing_line_items",
                            "billingProvider": "one_time",
                            "attributes": {
                                "objectType": "InvoiceDetail"
                            }
                        }
                    ],
                    "documentType": "adjustment_note",
                    "amendsOf": "G000024130",
                    "invoiceType": "OneTime",
                    "attributes": {
                        "objectType": "Invoice"
                    }
                }
            ],
            "documentType": "void_note",
            "invoiceType": "OneTime",
            "links": {
                "self": {
                    "uri": "/invoices/OneTime-G000024130",
                    "method": "GET",
                    "headers": []
                }
            },
            "attributes": {
                "objectType": "Invoice"
            }
        }
    ],
    "links": {
        "self": {
            "uri": "/invoices?size=2&offset=0",
            "method": "GET",
            "headers": []
        },
        "next": {
            "uri": "/invoices?size=2&offset=2",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "objectType": "Collection"
    }
}