CompassMotionAB / Findus-WebApp

Other
0 stars 0 forks source link

Partial Refund #18

Open Joaqim opened 2 years ago

Joaqim commented 2 years ago

Min metodik för delvis refund är, än så länge:

  1. Skapa Kreditfaktura för original
  2. Lägg endast till dem återbetalade produkterna i Kreditfakturan

Vad jag får från WooCommerce:

"refunds": [
  {
    "id": 22696,
    "reason": "refund shaker",
    "total": -9.99,
  }
]

Utifrån Refund ID nummer:et så kan jag extrapolera det till: (Som exempel: )

    "date_created": "2017-03-21T16:55:37",
    "date_created_gmt": "2017-03-21T19:55:37",
    "amount": "9.00",
    "reason": "",
    "refunded_by": 1,
    "refunded_payment": false,
    "meta_data": [],
    "line_items": [
      {
        "id": 314,
        "name": "Woo Album #2",
        "product_id": 87,
        "variation_id": 0,
        "quantity": -1,
        "tax_class": "",
        "subtotal": "-9.00",
        "subtotal_tax": "0.00",
        "total": "-9.00",
        "total_tax": "0.00",
        "taxes": [],
        "meta_data": [
          {
            "id": 2076,
            "key": "_refunded_item_id",
            "value": "311"
          }
        ],
        "sku": "",
        "price": -9
      }
    ],

Det löser SKU och eventuell Moms. (edited)

Joaqim commented 2 years ago
// Först hittar vi "Refunds" i Order:ar med status "Completed" då detta uppfyller kraven för vad vi kommer kalla 'partial refund'.
var partialOrders = orders.FindAll(order => order.refund?.Count != 0);

// Sedan kommer vi hämta komplett refund info utifrån refund id
foreach(var order in partialOrders) {
    var refundId = order.refound.id;
    var refundOrderItem = _wcOrderApi.Refund.Get(refundId);
    foreach(var item in refundOrderItems.line_times) {
        string articleNumber = item.sku;
        decimal total = item.total; // should be negative decimal value
    }
}
Joaqim commented 2 years ago

Requirements for Refundable Order & Invoice:

  1. "Invoice for Order must exist in Fortnox."
  2. "Invoice must not be Cancelled in Fortnox."
  3. "Invoice must be Booked in Fortnox."
  4. "Invoice cannot already have a Credit Invoice in Fortnox."