npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

saksh-wallet

v3.0.1

Published

A Node.js library for managing user wallets, including functionalities for crediting, debiting, and converting currencies, as well as retrieving balances and transaction reports.

Downloads

651

Readme

saksh-wallet

saksh-wallet is a Node.js library for managing user wallets, including functionalities for crediting, debiting, and converting currencies, as well as retrieving balances and transaction reports.

Installation

Install the package via npm:

npm install saksh-wallet

Features

saksh-wallet Package Features

User Management

  • Set Admin: Designate a user as an admin.
  • Set Limit: Configure wallet limits.
  • Get Balance: Retrieve the balance of a user in a specific currency.
  • Get Balance Summary: Obtain a summary of a user's balance.

Transaction Management

  • Credit: Add funds to a user's wallet.
  • Debit: Deduct funds from a user's wallet.
  • Transfer Funds: Transfer funds between users.
  • Get Transaction Report: Generate a report of a user's transactions.
  • Reverse Transaction: Reverse a specific transaction.
  • Reverse Multiple Transactions: Reverse multiple transactions at once.

Budget Management

  • Set Budget: Define a budget for a user.
  • Adjust Budget: Modify an existing budget.
  • Check Budget: Verify if a budget allows for a specific amount.
  • Get Budget Status: Retrieve the status of a user's budget.

Recurring Payments

  • Create Recurring Payment: Set up a recurring payment.
  • Update Recurring Payment: Modify an existing recurring payment.
  • Delete Recurring Payment: Remove a recurring payment.
  • Process Due Payments: Process all due recurring payments.

Standard Reporting

  • Get Monthly Transaction Report: Generate a monthly transaction report.
  • Get Daily Transaction Report: Generate a daily transaction report.
  • Get Yearly Transaction Report: Generate a yearly transaction report.
  • Get Transactions by Category: Retrieve transactions by category.
  • Get Spending Summary: Obtain a summary of spending over a period.
  • Get Transaction Count: Count the number of transactions.
  • Get Average Transaction Amount: Calculate the average transaction amount.
  • Get Largest Transaction: Identify the largest transaction.
  • Get Smallest Transaction: Identify the smallest transaction.
  • Get Transactions by Payment Method: Retrieve transactions by payment method.
  • Get Balance by Currency: Obtain the balance by currency.
  • Get All Users Balance by Currency: Retrieve the balance of all users by currency.
  • Get All Users Balance by Category: Retrieve the balance of all users by category.
  • Get All Users Balance at Date: Retrieve the balance of all users at a specific date.

AI-Enhanced Reporting

  • Set Gemini AI Key: Configure the Gemini AI key and initialize OpenAI.
  • Generate Report Summary: Create a summary of transactions using AI.
  • Handle User Query: Generate and execute a MongoDB query based on a user's query using AI.
  • Generate Comprehensive Report: Produce a detailed report based on a prompt and user ID using AI.

You can download saksh-wallet [ https://www.npmjs.com/package/saksh-wallet ] class and use in your node js package

npm i saksh-wallet

here is a complete use of this class. how to use the SakshWallet class, including user management, transaction management, budget management, recurring payments, standard reporting, and AI-enhanced reporting functionalities.

Full Example

const SakshWallet = require('saksh-wallet');
const wallet = new SakshWallet();

async function fullExample() {
    // User Management
    const adminUserId = 'admin123';
    await wallet.sakshSetAdmin(adminUserId);
    console.log('Admin set successfully.');

    const userId = 'user123';
    await wallet.sakshSetLimit(false);
    console.log('Limit set successfully.');

    const balance = await wallet.sakshGetBalance(userId, 'USD');
    console.log('User Balance:', balance);

    const balanceSummary = await wallet.sakshGetBalanceSummary(userId);
    console.log('Balance Summary:', balanceSummary);

    // Transaction Management
    const creditTransaction = await wallet.sakshCredit(userId, 100, 'USD', 'Salary', 'ref123', 'Income');
    console.log('Credit Transaction:', creditTransaction);

    const debitTransaction = await wallet.sakshDebit(userId, 50, 'USD', 'Grocery Shopping', 'ref124', 'Expense');
    console.log('Debit Transaction:', debitTransaction);

    const transferTransaction = await wallet.sakshTransferFunds(userId, 'user456', 20, 'USD', 'Gift', 'ref125', 'Transfer');
    console.log('Transfer Transaction:', transferTransaction);

    const transactionReport = await wallet.sakshGetTransactionReport(userId);
    console.log('Transaction Report:', transactionReport);

    const reversedTransaction = await wallet.sakshReverseTransaction(creditTransaction._id, null);
    console.log('Reversed Transaction:', reversedTransaction);

    const reversedMultipleTransactions = await wallet.sakshReverseMultipleTransactions([debitTransaction._id, transferTransaction._id]);
    console.log('Reversed Multiple Transactions:', reversedMultipleTransactions);

    // Budget Management
    const budget = await wallet.sakshSetBudget(userId, 'Food', 500, 'Monthly');
    console.log('Budget Set:', budget);

    const adjustedBudget = await wallet.sakshAdjustBudget(userId, 'Food', 600);
    console.log('Budget Adjusted:', adjustedBudget);

    const isBudgetAllowed = await wallet.sakshCheckBudget(userId, 'Food', 50);
    console.log('Is Budget Allowed:', isBudgetAllowed);

    const budgetStatus = await wallet.sakshGetBudgetStatus(userId, 'Food');
    console.log('Budget Status:', budgetStatus);

    // Recurring Payments
    const recurringPayment = await wallet.sakshCreateRecurringPayment(userId, 'user456', 100, 'USD', 'Subscription', 'ref126', 'Monthly');
    console.log('Recurring Payment Created:', recurringPayment);

    const updatedRecurringPayment = await wallet.sakshUpdateRecurringPayment(recurringPayment._id, { amount: 120 });
    console.log('Recurring Payment Updated:', updatedRecurringPayment);

    const deletedRecurringPayment = await wallet.sakshDeleteRecurringPayment(recurringPayment._id);
    console.log('Recurring Payment Deleted:', deletedRecurringPayment);

    await wallet.sakshProcessDuePayments();
    console.log('Due Payments Processed.');

    // Standard Reporting
    const monthlyReport = await wallet.sakshGetMonthlyTransactionReport(userId, 2024, 8);
    console.log('Monthly Transaction Report:', monthlyReport);

    const dailyReport = await wallet.sakshGetDailyTransactionReport(userId, new Date('2024-08-15'));
    console.log('Daily Transaction Report:', dailyReport);

    const yearlyReport = await wallet.sakshGetYearlyTransactionReport(userId, 2024);
    console.log('Yearly Transaction Report:', yearlyReport);

    const transactionsByCategory = await wallet.sakshGetTransactionsByCategory(userId, 'Food');
    console.log('Transactions by Category:', transactionsByCategory);

    const spendingSummary = await wallet.sakshGetSpendingSummary(userId, new Date('2024-08-01'), new Date('2024-08-31'));
    console.log('Spending Summary:', spendingSummary);

    const transactionCount = await wallet.sakshGetTransactionCount(userId);
    console.log('Transaction Count:', transactionCount);

    const averageTransactionAmount = await wallet.sakshGetAverageTransactionAmount(userId, new Date('2024-08-01'), new Date('2024-08-31'));
    console.log('Average Transaction Amount:', averageTransactionAmount);

    const largestTransaction = await wallet.sakshGetLargestTransaction(userId);
    console.log('Largest Transaction:', largestTransaction);

    const smallestTransaction = await wallet.sakshGetSmallestTransaction(userId);
    console.log('Smallest Transaction:', smallestTransaction);

    const transactionsByPaymentMethod = await wallet.sakshGetTransactionsByPaymentMethod(userId, 'Credit Card');
    console.log('Transactions by Payment Method:', transactionsByPaymentMethod);

    const balanceByCurrency = await wallet.sakshGetBalanceByCurrency(userId);
    console.log('Balance by Currency:', balanceByCurrency);

    const allUsersBalanceByCurrency = await wallet.sakshGetAllUsersBalanceByCurrency();
    console.log('All Users Balance by Currency:', allUsersBalanceByCurrency);

    const allUsersBalanceByCategory = await wallet.sakshGetAllUsersBalanceByCategory();
    console.log('All Users Balance by Category:', allUsersBalanceByCategory);

    const allUsersBalanceAtDate = await wallet.sakshGetAllUsersBalanceAtDate(new Date('2024-08-31'));
    console.log('All Users Balance at Date:', allUsersBalanceAtDate);

    // AI Reporting
    const geminiAIKey = 'your-gemini-ai-key';
    const aiModel = 'text-davinci-003';
    const maxTokens = 150;
    await wallet.sakshGeminiAIKey(geminiAIKey, aiModel, maxTokens);
    console.log('AI key set successfully.');

    const aiReportSummary = await wallet.sakshGenerateReportSummary(transactionsByCategory);
    console.log('AI Report Summary:', aiReportSummary);

    const userQueryResult = await wallet.sakshHandleUserQuery('Show me all transactions for user123 in August 2024');
    console.log('User Query Result:', userQueryResult);

    const aiReport = await wallet.sakshGenerateReport('Generate a monthly transaction report for user123 for August 2024', userId);
    console.log('AI Generated Report:', aiReport);
}

fullExample().catch(console.error);

Explanation

  • User Management:

    • Set an admin user.
    • Set a limit for the wallet.
    • Get the balance and balance summary for a user.
  • Transaction Management:

    • Credit and debit transactions.
    • Transfer funds between users.
    • Get a transaction report.
    • Reverse transactions.
  • Budget Management:

    • Set and adjust budgets.
    • Check if a budget allows for a specific amount.
    • Get the status of a budget.
  • Recurring Payments:

    • Create, update, and delete recurring payments.
    • Process due payments.
  • Standard Reporting:

    • Generate various types of transaction reports (monthly, daily, yearly).
    • Get transactions by category, spending summary, transaction count, average transaction amount, largest and smallest transactions, transactions by payment method, balance by currency, and all users' balance by currency and category.
  • AI Reporting:

    • Set the Gemini AI key.
    • Generate a report summary using AI.
    • Handle user queries using AI.
    • Generate comprehensive reports using AI.

This example covers all the methods provided by the SakshWallet class, demonstrating how to use each functionality. Let me know if you need any further adjustments or additional information!

handle recuring payment

create a file worker.js and paste following code and run


const cron = require('node-cron');
const mongoose = require('mongoose');
const SakshWallet = require('saksh-wallet');

// Connect to MongoDB
mongoose.connect('mongodb://localhost:27017/sakshwallet', {
useNewUrlParser: true,
useUnifiedTopology: true
});

const wallet = new SakshWallet();

// Schedule the cron job to run every minute
cron.schedule('* * * * *', async () => {
await wallet.sakshProcessDuePayments();
});

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

SUPPORT

susheel2339 @ gmail.com