GithubHelp home page GithubHelp logo

bailabs / tailpos Goto Github PK

View Code? Open in Web Editor NEW
418.0 35.0 195.0 16.61 MB

TailPOS an Offline First Open Source POS for ERPNext

License: GNU General Public License v3.0

JavaScript 98.93% Java 0.48% Objective-C 0.41% Starlark 0.18%
erpnext android pos point-of-sale react-native mobile-app offline-first react mobx-react

tailpos's Introduction

TailPOS

TailPOS an Offline First Open Source POS for ERPNext

Get it on Google Play

Showcase

Showcase

Features

o Two-way Sync to ERPNext Two-way syncing to an ERPNext instance for a full suite of back-office functionalities.

o Offline-first Approach Continue to make sales and keep running the business even no internet or unstable.

o Mobile POS Uses the tablet for a lightweight setup. Built-in rear camera of the tablet can be used as a barcode scanner. Any bluetooth barcode scanner is compatible with tailpos

o Print receipts Print sales receipts for customers using any ESC/POS receipt printer.

o Multiple payment modes Can process credit card,mobile payments and cash.

o Discounts Program Can apply discount to an invoice or on specific items.

o Inventory Management Keep track of stock levels easily. Easy-to-use menu for item maintenance such as creating and updating item information.

o Sales Reports Can generate X and Z readings and attendant shift sales totals.

License

This project is released under the GPLv3 license, for more details, take a look at the LICENSE file in the source.


Quick Start

A quick demo of syncing the tailpos to a Frappe/Erpnext server

https://docs.tailpos.com/tailpos/syncing-to-frappe-erpnext

Login to demo server
server: https://demo.tailerp.com
username: [email protected]
password: @Bailabs
Making a new item.
  • Go To Item List.
  • Make a new Item.
  • Select your new Item to see its properties.

alt text

  • Select Item Price under Pricing. Make sure the In TailPOS checkbox is checked.

alt text

  • Don't forget to save your Item.
Setup TailPOS Sync Settings
  • Go to Settings > Sync
  • Fill the following
ERPNext Server: demo.tailerp.com
Username: [email protected]
Password: @Bailabs
Device ID: <>

Setting up device ID

  • Go to Device list.
  • Create a new Device
  • Input the Device Name and POS Profile
  • Fill out information need in the POS profile
Name: <>
Series: ACC-SINV-.YYYY.-

Accounting
Write Off Accounting: Write Off – D
Write Off Cost Center: Main – D

alt text

alt text

  • Select your new Device.
  • Device ID is displayed at the top-right corner near the Save button.

alt text

Syncing
  • Once your done, save your Sync Settings.
  • Press Force Sync.
  • Once Force Sync is successful, go to your Sales tab and fill up a sample transaction.
  • Confirm the transaction by looking at your Receipts tab.
  • Now go back to your Settings > Sync and Force Sync the receipt data to the server.
  • Verify by going to Receipts List in ERPNext and check the receipts if they are generated.

How To Compile TailPOS in your local machine

If you are interested contributing the tailpos, the following guide will give you instructions in compiling the tailpos.

First, you'll need nodejs and npm:

sudo apt install curl
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
nodejs -v
v8.4.0

Install development tools to build native addons:

sudo apt-get install gcc g++ make

Install the yarn package manager, run:

curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn

Then you can install react-native-cli using npm

sudo npm install -g react-native-cli

Now you need to install Java and Android

sudo apt-get install default-jre
sudo apt-get install default-jdk

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
  • Install Android
  • Install Android SDK requirements
cd ~
mkdir android-sdk
cd android-sdk
wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
sudo apt-get install unzip
unzip sdk-tools-linux-3859397.zip

We add the path of our Android SDK tools to .bashrc so that we have access to the Android tools.

cd ~
nano .bashrc

# Add these lines to the top of the file
export ANDROID_HOME=$HOME/android-sdk
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools

# CTRL+O (uppcase o) to save
# CTRL+X to exit

source ~/.bashrc
android update sdk --no-ui
# Answer 'y' to all prompts

sdkmanager "platforms;android-23" "build-tools;23.0.1" "add-ons;addon-google_apis-google-23"

Installing TailPOS

cd ~
mkdir Projects
cd Projects
git clone https://github.com/bailabs/tailpos.git
cd tailpos
yarn

Updating react-native-camera modules

  • remove buildscript section
  buildscript {
  repositories {
    jcenter()
    maven {
      url 'https://maven.google.com'
    }
  }

  dependencies {
    classpath 'com.android.tools.build:gradle:3.0.0'
  }
}
  • compileOnly to provided
  • implementation to compile
cd ~
nano Projects/tailpos/node_modules/react-native-camera/android/build.gradle

Updating react-native-maps modules

  • compileOnly to provided
  • implementation to compile
cd ~
nano Projects/tailpos/node_modules/react-native-maps/lib/android/build.gradle

Updating react-native-bluetooth-serial modules

  • remove @Override in line 23 (the second @Override)
cd ~
nano Projects/tailpos/node_modules/react-native-bluetooth-serial/android/src/main/java/com/rusel/RCTBluetoothSerial/RCTBluetoothSerialPackage.java

Updating react-native-device-info with support-v4 fix

ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:fontVariationSettings
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:ttcIndex

Set the following under build.gradle under react-native-device-info

android {
  compileSdkVersion 26
  buildToolsVersion "26.0.2"
  ...
}

dependencies {
  ...
  compile "com.google.android.gms:play-services-gcm:12.0.1"
  compile "com.android.support:support-v4:27.1.0"
}

Update react-native-localization

  • implementation to compile

Building TailPOS

cd ~
cd Projects/tailpos
react-native run-android

tailpos's People

Contributors

ccfiel avatar dependabot[bot] avatar dulhaver avatar helkyd avatar irayspace avatar jiloysss avatar nexusfidelity avatar puniaonline avatar zhiephie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tailpos's Issues

When Syncing should select the default Company

When you Sync with ERPNext it should check if default company exists and select.
It should also allow the user to select which company he wants to use on the System...

For example on mine i have 5 companies and when TailPos Syncs i don't know which company as i have to write on the company either wrong or non-existing company.

Duplicate categories

i create categories on erp site, and i sync, when i force sync its auto create same categories in my device but in erp site only have 1 categories

TailPOS when adding Category

Traceback (most recent call last):
File “/home/frappe/frappe-bench/apps/frappe/frappe/desk/form/save.py”, line 22, in savedocs
doc.save()
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 259, in save
return self._save(*args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 310, in _save
self.run_post_save_methods()
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 889, in run_post_save_methods
self.run_method(“on_update”)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 757, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 1026, in composer
return composed(self, method, *args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 1009, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 751, in
fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
File “/home/frappe/frappe-bench/apps/tailpos_sync/tailpos_sync/tailpos_sync/doctype/categories/categories.py”, line 89, in on_update
colorAndShape = json.loads(self.colorandshape)[0]
File “/usr/lib/python2.7/json/init.py”, line 339, in loads
return _default_decoder.decode(s)
File “/usr/lib/python2.7/json/decoder.py”, line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
TypeError: expected string or buffer

Traceback (most recent call last):
File “/home/frappe/frappe-bench/apps/frappe/frappe/app.py”, line 62, in application
response = frappe.handler.handle()
File “/home/frappe/frappe-bench/apps/frappe/frappe/handler.py”, line 22, in handle
data = execute_cmd(cmd)
File “/home/frappe/frappe-bench/apps/frappe/frappe/handler.py”, line 53, in execute_cmd
return frappe.call(method, **frappe.form_dict)
File “/home/frappe/frappe-bench/apps/frappe/frappe/init.py”, line 939, in call
return fn(*args, **newargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/desk/form/save.py”, line 22, in savedocs
doc.save()
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 259, in save
return self._save(*args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 310, in _save
self.run_post_save_methods()
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 889, in run_post_save_methods
self.run_method(“on_update”)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 757, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 1026, in composer
return composed(self, method, *args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 1009, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 751, in
fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
File “/home/frappe/frappe-bench/apps/tailpos_sync/tailpos_sync/tailpos_sync/doctype/categories/categories.py”, line 89, in on_update
colorAndShape = json.loads(self.colorandshape)[0]
File “/usr/lib/python2.7/json/init.py”, line 339, in loads
return _default_decoder.decode(s)
File “/usr/lib/python2.7/json/decoder.py”, line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
TypeError: expected string or buffer

Sign In & Sign UP

Please If this possible very appreciative

Because user already exist in ERPNext

image
image

currency conflicts

App can't sync with erpnext due to currency data conflicts

To Reproduce
Steps to reproduce the behavior:

  1. Go to Company>Currency and select your currency.
  2. Transact normally in sales.
  3. Go to Company>Currency and select another currency.
  4. Transact again in sales
  5. Sync

Expected behavior
Syncing will stall

IMG_20190517_114604

Company settings reset

Every time you Sync the Company settings on TailPOS changes ...
Should get the settings from the Company synced (ERPNext) so use does not have to type everytime...

Receipt Issue

Is it possible? every receipt link with sales invoice because i am try to delete all receipt from receipts module. it will not delete even not cancel or delete against sales invoice.

image

Table Change

Table change Not working , whenever click in table change TailPOS become Hang and no action happening

image

One Way Sync

products and categories when created in App are reflected on the Tailpos_Sync/Categories and in the "item list" but the products from the site are not getting synced into TailPos App
using following versions
ERPNext: v11.1.21 (master)
Frappe Framework: v11.1.22 (master)
TailPOS Sync: v1.3.4 (master))

Logo proposal

Hello, i am an open source graphic designer who loves contributing to the open source community. I like your projects idea and goal. I noticed you are without a logo for your project, would you like me to contribute one to your project?

Tax NaN.undefined

tax undefined when printing receipt

Steps to reproduce the behavior:

  1. Change tax to 0 in company settings
  2. 1st attempt transaction with receipt
  3. 2nd attempt transaction with receipt

Expected behavior
Tax will be "NaN.undefined" in transaction summary in 2nd attempt receipt

IMG_20190517_110700

TAX Issue

Whenever invoicing to customer TailPOS not showing TAX witch is in ERPNext POS profile

POS Profile In ERPNext
image

Accounts Ledger
image

App closing when Sync button is hit

I installed the app in Amazon Fire 10 inch tablet wherein everything is shown but as the sync button hit the app is closing automatically.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.