@fuzzle/opencode-accountant 0.10.5 → 0.10.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +37 -19
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -17408,16 +17408,22 @@ function parseCSVPreview(content, skipRows = 0, delimiter = ",") {
17408
17408
  csvContent = lines.slice(skipRows).join(`
17409
17409
  `);
17410
17410
  }
17411
- const result = import_papaparse.default.parse(csvContent, {
17412
- header: true,
17413
- preview: 1,
17414
- skipEmptyLines: true,
17415
- delimiter
17416
- });
17417
- return {
17418
- fields: result.meta.fields,
17419
- firstRow: result.data[0]
17420
- };
17411
+ const origWarn = console.warn;
17412
+ console.warn = () => {};
17413
+ try {
17414
+ const result = import_papaparse.default.parse(csvContent, {
17415
+ header: true,
17416
+ preview: 1,
17417
+ skipEmptyLines: true,
17418
+ delimiter
17419
+ });
17420
+ return {
17421
+ fields: result.meta.fields,
17422
+ firstRow: result.data[0]
17423
+ };
17424
+ } finally {
17425
+ console.warn = origWarn;
17426
+ }
17421
17427
  }
17422
17428
  function extractLastRowField(content, skipRows, delimiter, fieldName) {
17423
17429
  let csvContent = content;
@@ -17427,11 +17433,18 @@ function extractLastRowField(content, skipRows, delimiter, fieldName) {
17427
17433
  csvContent = lines.slice(skipRows).join(`
17428
17434
  `);
17429
17435
  }
17430
- const result = import_papaparse.default.parse(csvContent, {
17431
- header: true,
17432
- skipEmptyLines: true,
17433
- delimiter
17434
- });
17436
+ const origWarn = console.warn;
17437
+ console.warn = () => {};
17438
+ let result;
17439
+ try {
17440
+ result = import_papaparse.default.parse(csvContent, {
17441
+ header: true,
17442
+ skipEmptyLines: true,
17443
+ delimiter
17444
+ });
17445
+ } finally {
17446
+ console.warn = origWarn;
17447
+ }
17435
17448
  if (result.data.length === 0)
17436
17449
  return;
17437
17450
  const lastRow = result.data[result.data.length - 1];
@@ -25006,11 +25019,16 @@ function escapeDescription(desc) {
25006
25019
  function formatQuantity(qty) {
25007
25020
  return qty.toFixed(6).replace(/\.?0+$/, "");
25008
25021
  }
25022
+ function formatPrice(price) {
25023
+ const full = price.toFixed(6).replace(/0+$/, "");
25024
+ const [integer2, decimal = ""] = full.split(".");
25025
+ return `${integer2}.${decimal.padEnd(2, "0")}`;
25026
+ }
25009
25027
  function generateBuyEntry(trade, logger) {
25010
25028
  const date5 = formatDate(trade.date);
25011
25029
  const description = escapeDescription(`Buy ${trade.symbol} - ${trade.name}`);
25012
25030
  const qty = formatQuantity(trade.quantity);
25013
- const price = trade.unitPrice.toFixed(2);
25031
+ const price = formatPrice(trade.unitPrice);
25014
25032
  const totalCost = trade.quantity * trade.unitPrice;
25015
25033
  const fees = trade.costs;
25016
25034
  const cashOut = totalCost + fees;
@@ -25043,12 +25061,12 @@ function generateSellEntry(trade, consumed, logger) {
25043
25061
  `;
25044
25062
  entry += ` ; swissquote:order:${trade.orderNum} isin:${trade.isin}
25045
25063
  `;
25046
- const lotDetails = consumed.map((c) => `${c.lot.date}: ${formatQuantity(c.quantity)}@${c.lot.costBasis.toFixed(2)}`).join(", ");
25064
+ const lotDetails = consumed.map((c) => `${c.lot.date}: ${formatQuantity(c.quantity)}@${formatPrice(c.lot.costBasis)}`).join(", ");
25047
25065
  entry += ` ; FIFO lots: ${lotDetails}
25048
25066
  `;
25049
25067
  for (const c of consumed) {
25050
25068
  const lotQty = formatQuantity(c.quantity);
25051
- const lotPrice = c.lot.costBasis.toFixed(2);
25069
+ const lotPrice = formatPrice(c.lot.costBasis);
25052
25070
  entry += ` assets:investments:stocks:${trade.symbol} -${lotQty} @ ${lotPrice} ${trade.currency}
25053
25071
  `;
25054
25072
  }
@@ -25122,7 +25140,7 @@ function generateWorthlessEntry(action, removedLots, logger) {
25122
25140
  `;
25123
25141
  for (const lot of removedLots) {
25124
25142
  const qty = formatQuantity(lot.quantity);
25125
- const price = lot.costBasis.toFixed(2);
25143
+ const price = formatPrice(lot.costBasis);
25126
25144
  entry += ` assets:investments:stocks:${action.symbol} -${qty} @ ${price} ${currency}
25127
25145
  `;
25128
25146
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fuzzle/opencode-accountant",
3
- "version": "0.10.5",
3
+ "version": "0.10.6",
4
4
  "description": "An OpenCode accounting agent, specialized in double-entry-bookkepping with hledger",
5
5
  "author": {
6
6
  "name": "ali bengali",