mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-04-02 14:24:27 -04:00
Merge branch 'master' into feature-case-sensitive-attribute-updates
This commit is contained in:
@@ -1,23 +1,56 @@
|
||||
node_modules
|
||||
tmp
|
||||
# Version control
|
||||
.git
|
||||
.gitignore
|
||||
|
||||
# Sensitive config (user may mount their own)
|
||||
app/Config/Email.php
|
||||
|
||||
# Build artifacts
|
||||
node_modules/
|
||||
dist/
|
||||
tmp/
|
||||
*.patch
|
||||
patches/
|
||||
|
||||
# IDE and editor files
|
||||
.idea/
|
||||
git-svn-diff.py
|
||||
*.bash
|
||||
.vscode/
|
||||
.swp
|
||||
*.swp
|
||||
.buildpath
|
||||
.project
|
||||
.settings/*
|
||||
.git
|
||||
dist/
|
||||
node_modules/
|
||||
*.swp
|
||||
.settings/
|
||||
|
||||
# Development tools and configs
|
||||
tests/
|
||||
phpunit.xml
|
||||
.php-cs-fixer.*
|
||||
phpstan.neon
|
||||
*.bash
|
||||
git-svn-diff.py
|
||||
|
||||
# Documentation
|
||||
*.md
|
||||
!LICENSE
|
||||
branding/
|
||||
|
||||
# Build configs (not needed at runtime)
|
||||
composer.json
|
||||
composer.lock
|
||||
package.json
|
||||
package-lock.json
|
||||
gulpfile.js
|
||||
.env.example
|
||||
.dockerignore
|
||||
|
||||
# Temporary and backup files
|
||||
*.rej
|
||||
*.orig
|
||||
*~
|
||||
*.~
|
||||
*.log
|
||||
app/writable/session/*
|
||||
!app/writable/session/index.html
|
||||
|
||||
# CI
|
||||
.github/
|
||||
.github/workflows/
|
||||
build/
|
||||
|
||||
61
.github/workflows/README.md
vendored
Normal file
61
.github/workflows/README.md
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
# GitHub Actions
|
||||
|
||||
This document describes the CI/CD workflows for OSPOS.
|
||||
|
||||
## Build and Release Workflow (`.github/workflows/build-release.yml`)
|
||||
|
||||
### Build Process
|
||||
- Setup PHP 8.2 with required extensions
|
||||
- Setup Node.js 20
|
||||
- Install composer dependencies
|
||||
- Install npm dependencies
|
||||
- Build frontend assets with Gulp
|
||||
|
||||
### Docker Images
|
||||
- Build and push `opensourcepos` Docker image for multiple architectures (linux/amd64, linux/arm64)
|
||||
- On master: tagged with version and `latest`
|
||||
- On other branches: tagged with version only
|
||||
- Pushed to Docker Hub
|
||||
|
||||
### Releases
|
||||
- Create distribution archives (tar.gz, zip)
|
||||
- Create/update GitHub "unstable" release on master branch only
|
||||
|
||||
## Required Secrets
|
||||
|
||||
To use this workflow, you need to add the following secrets to your repository:
|
||||
|
||||
1. **DOCKER_USERNAME** - Docker Hub username for pushing images
|
||||
2. **DOCKER_PASSWORD** - Docker Hub password/token for pushing images
|
||||
|
||||
### How to add secrets
|
||||
|
||||
1. Go to your repository on GitHub
|
||||
2. Click **Settings** → **Secrets and variables** → **Actions**
|
||||
3. Click **New repository secret**
|
||||
4. Add `DOCKER_USERNAME` and `DOCKER_PASSWORD`
|
||||
|
||||
The `GITHUB_TOKEN` is automatically provided by GitHub Actions.
|
||||
|
||||
## Workflow Triggers
|
||||
|
||||
- **Push to master** - Runs build, Docker push (with `latest` tag), and release
|
||||
- **Push to other branches** - Runs build and Docker push (version tag only)
|
||||
- **Push tags** - Runs build and Docker push (version tag only)
|
||||
- **Pull requests** - Runs build only (PHPUnit tests run in parallel via phpunit.yml)
|
||||
|
||||
## Existing Workflows
|
||||
|
||||
This repository also has these workflows:
|
||||
- `.github/workflows/main.yml` - PHP linting with PHP-CS-Fixer
|
||||
- `.github/workflows/phpunit.yml` - PHPUnit tests (runs on all PHP versions 8.1-8.4)
|
||||
- `.github/workflows/php-linter.yml` - PHP linting
|
||||
|
||||
## Testing
|
||||
|
||||
PHPUnit tests are run separately via `.github/workflows/phpunit.yml` on every push and pull request, testing against PHP 8.1, 8.2, 8.3, and 8.4.
|
||||
|
||||
To test the build workflow:
|
||||
1. Add the required secrets
|
||||
2. Push to master or create a PR
|
||||
3. Monitor the Actions tab in GitHub
|
||||
218
.github/workflows/build-release.yml
vendored
Normal file
218
.github/workflows/build-release.yml
vendored
Normal file
@@ -0,0 +1,218 @@
|
||||
name: Build and Release
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
tags:
|
||||
- '*'
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
outputs:
|
||||
version: ${{ steps.version.outputs.version }}
|
||||
version-tag: ${{ steps.version.outputs.version-tag }}
|
||||
short-sha: ${{ steps.version.outputs.short-sha }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.2'
|
||||
extensions: intl, mbstring, mysqli, gd, bcmath, zip
|
||||
coverage: none
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '20'
|
||||
|
||||
- name: Get composer cache directory
|
||||
run: echo "COMPOSER_CACHE_FILES_DIR=$(composer config cache-files-dir)" >> $GITHUB_ENV
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ env.COMPOSER_CACHE_FILES_DIR }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-composer-
|
||||
|
||||
- name: Get npm cache directory
|
||||
run: echo "NPM_CACHE_DIR=$(npm config get cache)" >> $GITHUB_ENV
|
||||
|
||||
- name: Cache npm dependencies
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ env.NPM_CACHE_DIR }}
|
||||
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-node-
|
||||
|
||||
- name: Install composer dependencies
|
||||
run: composer install --no-dev --optimize-autoloader
|
||||
|
||||
- name: Install npm dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Install gulp globally
|
||||
run: npm install -g gulp-cli
|
||||
|
||||
- name: Get version info
|
||||
id: version
|
||||
run: |
|
||||
VERSION=$(grep "application_version" app/Config/App.php | sed "s/.*= '\(.*\)';/\1/g")
|
||||
BRANCH=$(echo "${GITHUB_REF#refs/heads/}" | sed 's/feature\///')
|
||||
TAG=$(echo "${GITHUB_TAG:-$BRANCH}" | tr '/' '-')
|
||||
SHORT_SHA=$(git rev-parse --short=6 HEAD)
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
echo "version-tag=$VERSION-$BRANCH-$SHORT_SHA" >> $GITHUB_OUTPUT
|
||||
echo "short-sha=$SHORT_SHA" >> $GITHUB_OUTPUT
|
||||
echo "branch=$BRANCH" >> $GITHUB_OUTPUT
|
||||
env:
|
||||
GITHUB_TAG: ${{ github.ref_name }}
|
||||
|
||||
- name: Create .env file
|
||||
run: |
|
||||
cp .env.example .env
|
||||
sed -i 's/production/development/g' .env
|
||||
|
||||
- name: Update commit hash
|
||||
run: |
|
||||
SHORT_SHA="${{ steps.version.outputs.short-sha }}"
|
||||
sed -i "s/commit_sha1 = 'dev'/commit_sha1 = '$SHORT_SHA'/g" app/Config/OSPOS.php
|
||||
|
||||
- name: Build frontend assets
|
||||
run: npm run build
|
||||
|
||||
- name: Create distribution archives
|
||||
run: |
|
||||
set -euo pipefail
|
||||
gulp compress
|
||||
VERSION="${{ steps.version.outputs.version }}"
|
||||
SHORT_SHA="${{ steps.version.outputs.short-sha }}"
|
||||
mv dist/opensourcepos.tar "dist/opensourcepos.$VERSION.$SHORT_SHA.tar"
|
||||
mv dist/opensourcepos.zip "dist/opensourcepos.$VERSION.$SHORT_SHA.zip"
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: dist-${{ steps.version.outputs.short-sha }}
|
||||
path: dist/
|
||||
retention-days: 7
|
||||
|
||||
- name: Upload build context for Docker
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: build-context-${{ steps.version.outputs.short-sha }}
|
||||
path: |
|
||||
.
|
||||
!.git
|
||||
!node_modules
|
||||
retention-days: 1
|
||||
|
||||
docker:
|
||||
name: Build Docker Image
|
||||
runs-on: ubuntu-22.04
|
||||
needs: build
|
||||
if: github.event_name == 'push'
|
||||
|
||||
steps:
|
||||
- name: Download build context
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: build-context-${{ needs.build.outputs.short-sha }}
|
||||
path: .
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Determine Docker tags
|
||||
id: tags
|
||||
run: |
|
||||
BRANCH=$(echo "${GITHUB_REF#refs/heads/}" | tr '/' '-')
|
||||
if [ "$BRANCH" = "master" ]; then
|
||||
echo "tags=${{ secrets.DOCKER_USERNAME }}/opensourcepos:${{ needs.build.outputs.version-tag }},${{ secrets.DOCKER_USERNAME }}/opensourcepos:latest" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "tags=${{ secrets.DOCKER_USERNAME }}/opensourcepos:${{ needs.build.outputs.version-tag }}" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
env:
|
||||
GITHUB_REF: ${{ github.ref }}
|
||||
|
||||
- name: Build and push Docker images
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
target: ospos
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: true
|
||||
tags: ${{ steps.tags.outputs.tags }}
|
||||
|
||||
release:
|
||||
name: Create Release
|
||||
needs: build
|
||||
runs-on: ubuntu-22.04
|
||||
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Download build artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: dist-${{ needs.build.outputs.short-sha }}
|
||||
path: dist/
|
||||
|
||||
- name: Get version info
|
||||
id: version
|
||||
run: |
|
||||
VERSION="${{ needs.build.outputs.version }}"
|
||||
SHORT_SHA=$(git rev-parse --short=6 HEAD)
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
echo "short-sha=$SHORT_SHA" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Create/Update unstable release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
tag_name: unstable
|
||||
name: Unstable OpenSourcePOS
|
||||
body: |
|
||||
This is a build of the latest master which might contain bugs. Use at your own risk.
|
||||
|
||||
Check the releases section for the latest official release.
|
||||
files: |
|
||||
dist/opensourcepos.${{ steps.version.outputs.version }}.${{ steps.version.outputs.short-sha }}.zip
|
||||
prerelease: true
|
||||
draft: false
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
71
.github/workflows/codeql-analysis.yml
vendored
71
.github/workflows/codeql-analysis.yml
vendored
@@ -1,71 +0,0 @@
|
||||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ master ]
|
||||
schedule:
|
||||
- cron: '21 12 * * 3'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'javascript' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
||||
# Learn more:
|
||||
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v1
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
||||
4
.github/workflows/phpunit.yml
vendored
4
.github/workflows/phpunit.yml
vendored
@@ -69,9 +69,6 @@ jobs:
|
||||
- name: Install npm dependencies
|
||||
run: npm install
|
||||
|
||||
- name: Build database.sql
|
||||
run: npm run gulp build-database
|
||||
|
||||
- name: Start MariaDB
|
||||
run: |
|
||||
docker run -d --name mysql \
|
||||
@@ -79,7 +76,6 @@ jobs:
|
||||
-e MYSQL_DATABASE=ospos \
|
||||
-e MYSQL_USER=admin \
|
||||
-e MYSQL_PASSWORD=pointofsale \
|
||||
-v $PWD/app/Database/database.sql:/docker-entrypoint-initdb.d/database.sql \
|
||||
-p 3306:3306 \
|
||||
mariadb:10.5
|
||||
# Wait for MariaDB to be ready
|
||||
|
||||
54
.travis.yml
54
.travis.yml
@@ -1,54 +0,0 @@
|
||||
sudo: required
|
||||
|
||||
branches:
|
||||
except:
|
||||
- unstable
|
||||
- weblate
|
||||
services:
|
||||
- docker
|
||||
|
||||
dist: jammy
|
||||
language: node_js
|
||||
node_js:
|
||||
- 20
|
||||
script:
|
||||
- echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
|
||||
- docker run --rm -u $(id -u) -v $(pwd):/app opensourcepos/composer:ci4 composer install
|
||||
- version=$(grep application_version app/Config/App.php | sed "s/.*=\s'\(.*\)';/\1/g")
|
||||
- cp .env.example .env && sed -i 's/production/development/g' .env
|
||||
- sed -i "s/commit_sha1 = 'dev'/commit_sha1 = '$rev'/g" app/Config/OSPOS.php
|
||||
- echo "$version-$branch-$rev"
|
||||
- npm version "$version-$branch-$rev" --force || true
|
||||
- sed -i 's/opensourcepos.tar.gz/opensourcepos.$version.tgz/g' package.json
|
||||
- npm ci && npm install -g gulp && npm run build
|
||||
- docker build . --target ospos -t ospos
|
||||
- docker build . --target ospos_test -t ospos_test
|
||||
- docker run --rm ospos_test /app/vendor/bin/phpunit --testdox
|
||||
- docker build app/Database/ -t "jekkos/opensourcepos:sql-$TAG"
|
||||
env:
|
||||
global:
|
||||
- BRANCH=$(echo ${TRAVIS_BRANCH} | sed s/feature\\///)
|
||||
- TAG=$(echo "${TRAVIS_TAG:-$BRANCH}" | tr '/' '-')
|
||||
- date=`date +%Y%m%d%H%M%S` && branch=${TRAVIS_BRANCH} && rev=`git rev-parse --short=6 HEAD`
|
||||
after_success:
|
||||
- docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" && docker tag "ospos:latest"
|
||||
"jekkos/opensourcepos:$TAG" && docker push "jekkos/opensourcepos:$TAG" && docker push "jekkos/opensourcepos:sql-$TAG"
|
||||
- gulp compress
|
||||
- mv dist/opensourcepos.tar.gz "dist/opensourcepos.$version.$rev.tgz"
|
||||
- mv dist/opensourcepos.zip "dist/opensourcepos.$version.$rev.zip"
|
||||
deploy:
|
||||
- provider: releases
|
||||
edge: true
|
||||
file: dist/opensourcepos.$version.$rev.zip
|
||||
name: "Unstable OpensourcePos"
|
||||
overwrite: true
|
||||
release_notes: "This is a build of the latest master which might contain bugs. Use at your own risk. Check releases section for the latest official release"
|
||||
prerelease: true
|
||||
tag_name: unstable
|
||||
user: jekkos
|
||||
|
||||
api_key:
|
||||
secure: "KOukL8IFf/uL/BjMyCSKjf2vylydjcWqgEx0eMqFCg3nZ4ybMaOwPORRthIfyT72/FvGX/aoxxEn0uR/AEtb+hYQXHmNS+kZdX72JCe8LpGuZ7FJ5X+Eo9mhJcsmS+smd1sC95DySSc/GolKPo+0WtJYONY/xGCLxm+9Ay4HREg="
|
||||
|
||||
on:
|
||||
branch: master
|
||||
32
Dockerfile
32
Dockerfile
@@ -1,28 +1,22 @@
|
||||
FROM php:8.2-apache AS ospos
|
||||
LABEL maintainer="jekkos"
|
||||
|
||||
RUN apt update && apt-get install -y libicu-dev libgd-dev
|
||||
RUN a2enmod rewrite
|
||||
RUN docker-php-ext-install mysqli bcmath intl gd
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libicu-dev \
|
||||
libgd-dev \
|
||||
&& docker-php-ext-install mysqli bcmath intl gd \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& a2enmod rewrite
|
||||
|
||||
RUN echo "date.timezone = \"\${PHP_TIMEZONE}\"" > /usr/local/etc/php/conf.d/timezone.ini
|
||||
|
||||
WORKDIR /app
|
||||
COPY . /app
|
||||
RUN ln -s /app/*[^public] /var/www && rm -rf /var/www/html && ln -nsf /app/public /var/www/html
|
||||
RUN chmod -R 770 /app/writable/uploads /app/writable/logs /app/writable/cache && chown -R www-data:www-data /app
|
||||
|
||||
FROM ospos AS ospos_test
|
||||
|
||||
COPY --from=composer /usr/bin/composer /usr/bin/composer
|
||||
|
||||
RUN apt-get install -y libzip-dev wget git
|
||||
RUN wget https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh -O /bin/wait-for-it.sh && chmod +x /bin/wait-for-it.sh
|
||||
RUN docker-php-ext-install zip
|
||||
RUN composer install -d/app
|
||||
#RUN sed -i 's/backupGlobals="true"/backupGlobals="false"/g' /app/tests/phpunit.xml
|
||||
WORKDIR /app/tests
|
||||
|
||||
CMD ["/app/vendor/phpunit/phpunit/phpunit", "/app/test/helpers"]
|
||||
COPY --chown=www-data:www-data . /app
|
||||
RUN chmod 770 /app/writable/uploads /app/writable/logs /app/writable/cache \
|
||||
&& ln -s /app/*[^public] /var/www \
|
||||
&& rm -rf /var/www/html \
|
||||
&& ln -nsf /app/public /var/www/html
|
||||
|
||||
FROM ospos AS ospos_dev
|
||||
|
||||
|
||||
13
INSTALL.md
13
INSTALL.md
@@ -38,20 +38,21 @@ FORCE_HTTPS = true
|
||||
|
||||
## Local install
|
||||
|
||||
First of all, if you're seeing the message `system folder missing` after launching your browser, or cannot find `database.sql`, that most likely means you have cloned the repository and have not built the project. To build the project from a source commit point instead of from an official release check out [Building OSPOS](BUILD.md). Otherwise, continue with the following steps.
|
||||
First of all, if you're seeing the message `system folder missing` after launching your browser, that most likely means you have cloned the repository and have not built the project. To build the project from a source commit point instead of from an official release check out [Building OSPOS](BUILD.md). Otherwise, continue with the following steps.
|
||||
|
||||
1. Download the a [pre-release for a specific branch](https://github.com/opensourcepos/opensourcepos/releases) or the latest stable [from GitHub here](https://github.com/opensourcepos/opensourcepos/releases). A repository clone will not work unless know how to build the project.
|
||||
2. Create/locate a new MySQL database to install Open Source Point of Sale into.
|
||||
3. Execute the file `app/Database/database.sql` to create the tables needed.
|
||||
4. Unzip and upload Open Source Point of Sale files to the web-server.
|
||||
5. Open `.env` file and modify credentials to connect to your database if needed. (First copy .env.example to .env and update)
|
||||
3. Unzip and upload Open Source Point of Sale files to the web-server.
|
||||
4. If `.env` does not exist, copy `.env.example` to `.env`.
|
||||
5. Open `.env` and modify credentials to connect to your database if needed.
|
||||
6. The database schema will be automatically created when you first access the application. Migrations run automatically on fresh installs.
|
||||
7. Go to your install `public` dir via the browser.
|
||||
8. Log in using
|
||||
- Username: admin
|
||||
- Password: pointofsale
|
||||
9. If everything works, then set the `CI_ENVIRONMENT` variable to `production` in the .env file
|
||||
9. Enjoy!
|
||||
10. Oops, an issue? Please make sure you read the FAQ, wiki page, and you checked open and closed issues on GitHub. PHP `display_errors` is disabled by default. Create an` app/Config/.env` file from the `.env.example` to enable it in a development environment.
|
||||
10. Enjoy!
|
||||
11. Oops, an issue? Please make sure you read the FAQ, wiki page, and you checked open and closed issues on GitHub. PHP `display_errors` is disabled by default. Create an` app/Config/.env` file from the `.env.example` to enable it in a development environment.
|
||||
|
||||
## Local install using Docker
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://app.travis-ci.com/opensourcepos/opensourcepos" target="_blank"><img src="https://api.travis-ci.com/opensourcepos/opensourcepos.svg?branch=master" alt="Build Status"></a>
|
||||
<a href="https://github.com/opensourcepos/opensourcepos/actions/workflows/build-release.yml" target="_blank"><img src="https://github.com/opensourcepos/opensourcepos/actions/workflows/build-release.yml/badge.svg" alt="Build Status"></a>
|
||||
<a href="https://app.gitter.im/#/room/#opensourcepos_Lobby:gitter.im?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge" target="_blank"><img src="https://badges.gitter.im/jekkos/opensourcepos.svg" alt="Join the chat at https://app.gitter.im"></a>
|
||||
<a href="https://badge.fury.io/gh/opensourcepos%2Fopensourcepos" target="_blank"><img src="https://badge.fury.io/gh/opensourcepos%2Fopensourcepos.svg" alt="Project Version"></a>
|
||||
<a href="https://translate.opensourcepos.org/engage/opensourcepos/?utm_source=widget" target="_blank"><img src="https://translate.opensourcepos.org/widgets/opensourcepos/-/svg-badge.svg" alt="Translation Status"></a>
|
||||
@@ -137,7 +137,7 @@ Any person or company found breaching the license agreement might find a bunch o
|
||||
|
||||
## 🙏 Credits
|
||||
|
||||
| <div align="center">DigitalOcean</div> | <div align="center">JetBrains</div> | <div align="center">Travis CI</div> |
|
||||
| <div align="center">DigitalOcean</div> | <div align="center">JetBrains</div> | <div align="center">GitHub</div> |
|
||||
| --- | --- | --- |
|
||||
| <div align="center"><a href="https://www.digitalocean.com?utm_medium=opensource&utm_source=opensourcepos" target="_blank"><img src="https://github.com/user-attachments/assets/fbbf7433-ed35-407d-8946-fd03d236d350" alt="DigitalOcean Logo" height="50"></a></div> | <div align="center"><a href="https://www.jetbrains.com/idea/" target="_blank"><img src="https://github.com/opensourcepos/opensourcepos/assets/12870258/187f9bbe-4484-475c-9b58-5e5d5f931f09" alt="IntelliJ IDEA Logo" height="50"></a></div> | <div align="center"><a href="https://www.travis-ci.com/" target="_blank"><img src="https://github.com/opensourcepos/opensourcepos/assets/12870258/71cc2b44-83af-4510-a543-6358285f43c6" alt="Travis CI Logo" height="50"></a></div> |
|
||||
| Many thanks to [DigitalOcean](https://www.digitalocean.com) for providing the project with hosting credits. | Many thanks to [JetBrains](https://www.jetbrains.com/) for providing a free license of [IntelliJ IDEA](https://www.jetbrains.com/idea/) to kindly support the development of OSPOS. | Many thanks to [Travis CI](https://www.travis-ci.com/) for providing a free continuous integration service for open source projects. |
|
||||
| <div align="center"><a href="https://www.digitalocean.com?utm_medium=opensource&utm_source=opensourcepos" target="_blank"><img src="https://github.com/user-attachments/assets/fbbf7433-ed35-407d-8946-fd03d236d350" alt="DigitalOcean Logo" height="50"></a></div> | <div align="center"><a href="https://www.jetbrains.com/idea/" target="_blank"><img src="https://github.com/opensourcepos/opensourcepos/assets/12870258/187f9bbe-4484-475c-9b58-5e5d5f931f09" alt="IntelliJ IDEA Logo" height="50"></a></div> | <div align="center"><a href="https://github.com/features/actions" target="_blank"><img src="https://github.githubassets.com/images/modules/site/icons/eyebrow-panel/actions-icon.svg" alt="GitHub Actions Logo" height="50"></a></div> |
|
||||
| Many thanks to [DigitalOcean](https://www.digitalocean.com) for providing the project with hosting credits. | Many thanks to [JetBrains](https://www.jetbrains.com/) for providing a free license of [IntelliJ IDEA](https://www.jetbrains.com/idea/) to kindly support the development of OSPOS. | Many thanks to [GitHub](https://github.com) for providing free continuous integration via GitHub Actions for open-source projects. |
|
||||
|
||||
@@ -786,8 +786,8 @@ class Sales extends Secure_Controller
|
||||
$data['error_message'] = lang('Sales.transaction_failed');
|
||||
} else {
|
||||
$data['barcode'] = $this->barcode_lib->generate_receipt_barcode($data['sale_id']);
|
||||
return view('sales/' . $invoice_view, $data);
|
||||
$this->sale_lib->clear_all();
|
||||
return view('sales/' . $invoice_view, $data);
|
||||
}
|
||||
}
|
||||
} elseif ($this->sale_lib->is_work_order_mode()) {
|
||||
@@ -820,9 +820,8 @@ class Sales extends Secure_Controller
|
||||
|
||||
$data['barcode'] = null;
|
||||
|
||||
return view('sales/work_order', $data);
|
||||
$this->sale_lib->clear_mode();
|
||||
$this->sale_lib->clear_all();
|
||||
return view('sales/work_order', $data);
|
||||
}
|
||||
} elseif ($this->sale_lib->is_quote_mode()) {
|
||||
$data['sales_quote'] = lang('Sales.quote');
|
||||
@@ -848,9 +847,8 @@ class Sales extends Secure_Controller
|
||||
$data['cart'] = $this->sale_lib->sort_and_filter_cart($data['cart']);
|
||||
$data['barcode'] = null;
|
||||
|
||||
return view('sales/quote', $data);
|
||||
$this->sale_lib->clear_mode();
|
||||
$this->sale_lib->clear_all();
|
||||
return view('sales/quote', $data);
|
||||
}
|
||||
} else {
|
||||
// Save the data to the sales table
|
||||
@@ -871,8 +869,8 @@ class Sales extends Secure_Controller
|
||||
$data['error_message'] = lang('Sales.transaction_failed');
|
||||
} else {
|
||||
$data['barcode'] = $this->barcode_lib->generate_receipt_barcode($data['sale_id']);
|
||||
return view('sales/receipt', $data);
|
||||
$this->sale_lib->clear_all();
|
||||
return view('sales/receipt', $data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
60
app/Database/Migrations/20170501000000_initial_schema.php
Normal file
60
app/Database/Migrations/20170501000000_initial_schema.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace App\Database\Migrations;
|
||||
|
||||
use CodeIgniter\Database\Migration;
|
||||
|
||||
class Migration_Initial_Schema extends Migration
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform a migration step.
|
||||
* Only runs on fresh installs - skips if database already has tables.
|
||||
*
|
||||
* For testing: CI4's DatabaseTestTrait with $refresh=true handles table
|
||||
* cleanup/creation automatically. This migration only loads initial schema
|
||||
* on fresh databases where no application tables exist.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
// Check if core application tables exist (existing install)
|
||||
// Note: migrations table may exist even on fresh DB due to migration tracking
|
||||
$tables = $this->db->listTables();
|
||||
|
||||
// Check for a core application table, not just migrations table
|
||||
foreach ($tables as $table) {
|
||||
// Strip prefix if present for comparison
|
||||
$tableName = str_replace($this->db->getPrefix(), '', $table);
|
||||
if (in_array($tableName, ['app_config', 'items', 'employees', 'people'])) {
|
||||
// Database already populated - skip initial schema
|
||||
// This is an existing installation upgrading from older version
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Fresh install - load initial schema
|
||||
helper('migration');
|
||||
execute_script(APPPATH . 'Database/Migrations/sqlscripts/initial_schema.sql');
|
||||
}
|
||||
|
||||
/**
|
||||
* Revert a migration step.
|
||||
* Cannot revert initial schema - would lose all data.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
// Cannot safely revert initial schema
|
||||
// Would require dropping all tables which would lose all data
|
||||
$this->db->query('SET FOREIGN_KEY_CHECKS = 0');
|
||||
|
||||
foreach ($this->db->listTables() as $table) {
|
||||
$this->db->query('DROP TABLE IF EXISTS `' . $table . '`');
|
||||
}
|
||||
|
||||
$this->db->query('SET FOREIGN_KEY_CHECKS = 1');
|
||||
}
|
||||
}
|
||||
@@ -730,3 +730,148 @@ CREATE TABLE `ospos_suppliers` (
|
||||
--
|
||||
-- Dumping data for table `ospos_suppliers`
|
||||
--
|
||||
--
|
||||
-- Constraints for dumped tables
|
||||
--
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_customers`
|
||||
--
|
||||
ALTER TABLE `ospos_customers`
|
||||
ADD CONSTRAINT `ospos_customers_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `ospos_people` (`person_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_employees`
|
||||
--
|
||||
ALTER TABLE `ospos_employees`
|
||||
ADD CONSTRAINT `ospos_employees_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `ospos_people` (`person_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_inventory`
|
||||
--
|
||||
ALTER TABLE `ospos_inventory`
|
||||
ADD CONSTRAINT `ospos_inventory_ibfk_1` FOREIGN KEY (`trans_items`) REFERENCES `ospos_items` (`item_id`),
|
||||
ADD CONSTRAINT `ospos_inventory_ibfk_2` FOREIGN KEY (`trans_user`) REFERENCES `ospos_employees` (`person_id`),
|
||||
ADD CONSTRAINT `ospos_inventory_ibfk_3` FOREIGN KEY (`trans_location`) REFERENCES `ospos_stock_locations` (`location_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_items`
|
||||
--
|
||||
ALTER TABLE `ospos_items`
|
||||
ADD CONSTRAINT `ospos_items_ibfk_1` FOREIGN KEY (`supplier_id`) REFERENCES `ospos_suppliers` (`person_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_items_taxes`
|
||||
--
|
||||
ALTER TABLE `ospos_items_taxes`
|
||||
ADD CONSTRAINT `ospos_items_taxes_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`) ON DELETE CASCADE;
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_item_kit_items`
|
||||
--
|
||||
ALTER TABLE `ospos_item_kit_items`
|
||||
ADD CONSTRAINT `ospos_item_kit_items_ibfk_1` FOREIGN KEY (`item_kit_id`) REFERENCES `ospos_item_kits` (`item_kit_id`) ON DELETE CASCADE,
|
||||
ADD CONSTRAINT `ospos_item_kit_items_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`) ON DELETE CASCADE;
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_permissions`
|
||||
--
|
||||
ALTER TABLE `ospos_permissions`
|
||||
ADD CONSTRAINT `ospos_permissions_ibfk_1` FOREIGN KEY (`module_id`) REFERENCES `ospos_modules` (`module_id`) ON DELETE CASCADE,
|
||||
ADD CONSTRAINT `ospos_permissions_ibfk_2` FOREIGN KEY (`location_id`) REFERENCES `ospos_stock_locations` (`location_id`) ON DELETE CASCADE;
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_grants`
|
||||
--
|
||||
ALTER TABLE `ospos_grants`
|
||||
ADD CONSTRAINT `ospos_grants_ibfk_1` foreign key (`permission_id`) references `ospos_permissions` (`permission_id`) ON DELETE CASCADE,
|
||||
ADD CONSTRAINT `ospos_grants_ibfk_2` foreign key (`person_id`) references `ospos_employees` (`person_id`) ON DELETE CASCADE;
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_receivings`
|
||||
--
|
||||
ALTER TABLE `ospos_receivings`
|
||||
ADD CONSTRAINT `ospos_receivings_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `ospos_employees` (`person_id`),
|
||||
ADD CONSTRAINT `ospos_receivings_ibfk_2` FOREIGN KEY (`supplier_id`) REFERENCES `ospos_suppliers` (`person_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_receivings_items`
|
||||
--
|
||||
ALTER TABLE `ospos_receivings_items`
|
||||
ADD CONSTRAINT `ospos_receivings_items_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`),
|
||||
ADD CONSTRAINT `ospos_receivings_items_ibfk_2` FOREIGN KEY (`receiving_id`) REFERENCES `ospos_receivings` (`receiving_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_sales`
|
||||
--
|
||||
ALTER TABLE `ospos_sales`
|
||||
ADD CONSTRAINT `ospos_sales_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `ospos_employees` (`person_id`),
|
||||
ADD CONSTRAINT `ospos_sales_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `ospos_customers` (`person_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_sales_items`
|
||||
--
|
||||
ALTER TABLE `ospos_sales_items`
|
||||
ADD CONSTRAINT `ospos_sales_items_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`),
|
||||
ADD CONSTRAINT `ospos_sales_items_ibfk_2` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales` (`sale_id`),
|
||||
ADD CONSTRAINT `ospos_sales_items_ibfk_3` FOREIGN KEY (`item_location`) REFERENCES `ospos_stock_locations` (`location_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_sales_items_taxes`
|
||||
--
|
||||
ALTER TABLE `ospos_sales_items_taxes`
|
||||
ADD CONSTRAINT `ospos_sales_items_taxes_ibfk_1` FOREIGN KEY (`sale_id`,`item_id`,`line`) REFERENCES `ospos_sales_items` (`sale_id`,`item_id`,`line`),
|
||||
ADD CONSTRAINT `ospos_sales_items_taxes_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_sales_payments`
|
||||
--
|
||||
ALTER TABLE `ospos_sales_payments`
|
||||
ADD CONSTRAINT `ospos_sales_payments_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales` (`sale_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_sales_suspended`
|
||||
--
|
||||
ALTER TABLE `ospos_sales_suspended`
|
||||
ADD CONSTRAINT `ospos_sales_suspended_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `ospos_employees` (`person_id`),
|
||||
ADD CONSTRAINT `ospos_sales_suspended_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `ospos_customers` (`person_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_sales_suspended_items`
|
||||
--
|
||||
ALTER TABLE `ospos_sales_suspended_items`
|
||||
ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`),
|
||||
ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_2` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended` (`sale_id`),
|
||||
ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_3` FOREIGN KEY (`item_location`) REFERENCES `ospos_stock_locations` (`location_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_sales_suspended_items_taxes`
|
||||
--
|
||||
ALTER TABLE `ospos_sales_suspended_items_taxes`
|
||||
ADD CONSTRAINT `ospos_sales_suspended_items_taxes_ibfk_1` FOREIGN KEY (`sale_id`,`item_id`,`line`) REFERENCES `ospos_sales_suspended_items` (`sale_id`,`item_id`,`line`),
|
||||
ADD CONSTRAINT `ospos_sales_suspended_items_taxes_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_sales_suspended_payments`
|
||||
--
|
||||
ALTER TABLE `ospos_sales_suspended_payments`
|
||||
ADD CONSTRAINT `ospos_sales_suspended_payments_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended` (`sale_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_item_quantities`
|
||||
--
|
||||
ALTER TABLE `ospos_item_quantities`
|
||||
ADD CONSTRAINT `ospos_item_quantities_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`),
|
||||
ADD CONSTRAINT `ospos_item_quantities_ibfk_2` FOREIGN KEY (`location_id`) REFERENCES `ospos_stock_locations` (`location_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_suppliers`
|
||||
--
|
||||
ALTER TABLE `ospos_suppliers`
|
||||
ADD CONSTRAINT `ospos_suppliers_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `ospos_people` (`person_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_giftcards`
|
||||
--
|
||||
ALTER TABLE `ospos_giftcards`
|
||||
ADD CONSTRAINT `ospos_giftcards_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `ospos_people` (`person_id`);
|
||||
@@ -1,145 +0,0 @@
|
||||
--
|
||||
-- Constraints for dumped tables
|
||||
--
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_customers`
|
||||
--
|
||||
ALTER TABLE `ospos_customers`
|
||||
ADD CONSTRAINT `ospos_customers_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `ospos_people` (`person_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_employees`
|
||||
--
|
||||
ALTER TABLE `ospos_employees`
|
||||
ADD CONSTRAINT `ospos_employees_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `ospos_people` (`person_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_inventory`
|
||||
--
|
||||
ALTER TABLE `ospos_inventory`
|
||||
ADD CONSTRAINT `ospos_inventory_ibfk_1` FOREIGN KEY (`trans_items`) REFERENCES `ospos_items` (`item_id`),
|
||||
ADD CONSTRAINT `ospos_inventory_ibfk_2` FOREIGN KEY (`trans_user`) REFERENCES `ospos_employees` (`person_id`),
|
||||
ADD CONSTRAINT `ospos_inventory_ibfk_3` FOREIGN KEY (`trans_location`) REFERENCES `ospos_stock_locations` (`location_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_items`
|
||||
--
|
||||
ALTER TABLE `ospos_items`
|
||||
ADD CONSTRAINT `ospos_items_ibfk_1` FOREIGN KEY (`supplier_id`) REFERENCES `ospos_suppliers` (`person_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_items_taxes`
|
||||
--
|
||||
ALTER TABLE `ospos_items_taxes`
|
||||
ADD CONSTRAINT `ospos_items_taxes_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`) ON DELETE CASCADE;
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_item_kit_items`
|
||||
--
|
||||
ALTER TABLE `ospos_item_kit_items`
|
||||
ADD CONSTRAINT `ospos_item_kit_items_ibfk_1` FOREIGN KEY (`item_kit_id`) REFERENCES `ospos_item_kits` (`item_kit_id`) ON DELETE CASCADE,
|
||||
ADD CONSTRAINT `ospos_item_kit_items_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`) ON DELETE CASCADE;
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_permissions`
|
||||
--
|
||||
ALTER TABLE `ospos_permissions`
|
||||
ADD CONSTRAINT `ospos_permissions_ibfk_1` FOREIGN KEY (`module_id`) REFERENCES `ospos_modules` (`module_id`) ON DELETE CASCADE,
|
||||
ADD CONSTRAINT `ospos_permissions_ibfk_2` FOREIGN KEY (`location_id`) REFERENCES `ospos_stock_locations` (`location_id`) ON DELETE CASCADE;
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_grants`
|
||||
--
|
||||
ALTER TABLE `ospos_grants`
|
||||
ADD CONSTRAINT `ospos_grants_ibfk_1` foreign key (`permission_id`) references `ospos_permissions` (`permission_id`) ON DELETE CASCADE,
|
||||
ADD CONSTRAINT `ospos_grants_ibfk_2` foreign key (`person_id`) references `ospos_employees` (`person_id`) ON DELETE CASCADE;
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_receivings`
|
||||
--
|
||||
ALTER TABLE `ospos_receivings`
|
||||
ADD CONSTRAINT `ospos_receivings_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `ospos_employees` (`person_id`),
|
||||
ADD CONSTRAINT `ospos_receivings_ibfk_2` FOREIGN KEY (`supplier_id`) REFERENCES `ospos_suppliers` (`person_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_receivings_items`
|
||||
--
|
||||
ALTER TABLE `ospos_receivings_items`
|
||||
ADD CONSTRAINT `ospos_receivings_items_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`),
|
||||
ADD CONSTRAINT `ospos_receivings_items_ibfk_2` FOREIGN KEY (`receiving_id`) REFERENCES `ospos_receivings` (`receiving_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_sales`
|
||||
--
|
||||
ALTER TABLE `ospos_sales`
|
||||
ADD CONSTRAINT `ospos_sales_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `ospos_employees` (`person_id`),
|
||||
ADD CONSTRAINT `ospos_sales_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `ospos_customers` (`person_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_sales_items`
|
||||
--
|
||||
ALTER TABLE `ospos_sales_items`
|
||||
ADD CONSTRAINT `ospos_sales_items_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`),
|
||||
ADD CONSTRAINT `ospos_sales_items_ibfk_2` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales` (`sale_id`),
|
||||
ADD CONSTRAINT `ospos_sales_items_ibfk_3` FOREIGN KEY (`item_location`) REFERENCES `ospos_stock_locations` (`location_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_sales_items_taxes`
|
||||
--
|
||||
ALTER TABLE `ospos_sales_items_taxes`
|
||||
ADD CONSTRAINT `ospos_sales_items_taxes_ibfk_1` FOREIGN KEY (`sale_id`,`item_id`,`line`) REFERENCES `ospos_sales_items` (`sale_id`,`item_id`,`line`),
|
||||
ADD CONSTRAINT `ospos_sales_items_taxes_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_sales_payments`
|
||||
--
|
||||
ALTER TABLE `ospos_sales_payments`
|
||||
ADD CONSTRAINT `ospos_sales_payments_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales` (`sale_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_sales_suspended`
|
||||
--
|
||||
ALTER TABLE `ospos_sales_suspended`
|
||||
ADD CONSTRAINT `ospos_sales_suspended_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `ospos_employees` (`person_id`),
|
||||
ADD CONSTRAINT `ospos_sales_suspended_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `ospos_customers` (`person_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_sales_suspended_items`
|
||||
--
|
||||
ALTER TABLE `ospos_sales_suspended_items`
|
||||
ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`),
|
||||
ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_2` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended` (`sale_id`),
|
||||
ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_3` FOREIGN KEY (`item_location`) REFERENCES `ospos_stock_locations` (`location_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_sales_suspended_items_taxes`
|
||||
--
|
||||
ALTER TABLE `ospos_sales_suspended_items_taxes`
|
||||
ADD CONSTRAINT `ospos_sales_suspended_items_taxes_ibfk_1` FOREIGN KEY (`sale_id`,`item_id`,`line`) REFERENCES `ospos_sales_suspended_items` (`sale_id`,`item_id`,`line`),
|
||||
ADD CONSTRAINT `ospos_sales_suspended_items_taxes_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_sales_suspended_payments`
|
||||
--
|
||||
ALTER TABLE `ospos_sales_suspended_payments`
|
||||
ADD CONSTRAINT `ospos_sales_suspended_payments_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended` (`sale_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_item_quantities`
|
||||
--
|
||||
ALTER TABLE `ospos_item_quantities`
|
||||
ADD CONSTRAINT `ospos_item_quantities_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`),
|
||||
ADD CONSTRAINT `ospos_item_quantities_ibfk_2` FOREIGN KEY (`location_id`) REFERENCES `ospos_stock_locations` (`location_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_suppliers`
|
||||
--
|
||||
ALTER TABLE `ospos_suppliers`
|
||||
ADD CONSTRAINT `ospos_suppliers_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `ospos_people` (`person_id`);
|
||||
|
||||
--
|
||||
-- Constraints for table `ospos_giftcards`
|
||||
--
|
||||
ALTER TABLE `ospos_giftcards`
|
||||
ADD CONSTRAINT `ospos_giftcards_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `ospos_people` (`person_id`);
|
||||
@@ -4,6 +4,8 @@ namespace App\Events;
|
||||
|
||||
use App\Libraries\MY_Migration;
|
||||
use App\Models\Appconfig;
|
||||
use CodeIgniter\Session\Handlers\DatabaseHandler;
|
||||
use CodeIgniter\Session\Handlers\FileHandler;
|
||||
use CodeIgniter\Session\Session;
|
||||
use Config\OSPOS;
|
||||
use Config\Services;
|
||||
@@ -28,7 +30,8 @@ class Load_config
|
||||
$migration_config = config('Migrations');
|
||||
$migration = new MY_Migration($migration_config);
|
||||
|
||||
$this->session = session();
|
||||
// Use file-based session until database is migrated
|
||||
$this->session = $this->createSession($migration->is_latest());
|
||||
|
||||
// Database Configuration
|
||||
$config = config(OSPOS::class);
|
||||
@@ -53,4 +56,28 @@ class Load_config
|
||||
|
||||
bcscale(max(2, totals_decimals() + tax_decimals()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates session with appropriate handler.
|
||||
* Uses file-based session until database is migrated, then switches to database session.
|
||||
*
|
||||
* This prevents a circular dependency where login requires session, but the sessions
|
||||
* database table doesn't exist yet because migrations run after login.
|
||||
*/
|
||||
private function createSession(bool $isDbMigrated): Session
|
||||
{
|
||||
$sessionConfig = config('Session');
|
||||
|
||||
// If database is not migrated and we're configured to use database sessions,
|
||||
// temporarily fall back to file-based sessions to allow migrations to complete.
|
||||
// Once migrations run, the user must re-authenticate (session is destroyed in
|
||||
// load_config() when migrations are pending).
|
||||
if (!$isDbMigrated && $sessionConfig->driver === DatabaseHandler::class) {
|
||||
$sessionConfig = clone $sessionConfig;
|
||||
$sessionConfig->driver = FileHandler::class;
|
||||
$sessionConfig->savePath = WRITEPATH . 'session';
|
||||
}
|
||||
|
||||
return Services::session($sessionConfig);
|
||||
}
|
||||
}
|
||||
|
||||
49
app/Language/ar-EG/Calendar.php
Normal file
49
app/Language/ar-EG/Calendar.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"su" => "أحد",
|
||||
"mo" => "اثنين",
|
||||
"tu" => "ثلاثاء",
|
||||
"we" => "أربعاء",
|
||||
"th" => "خميس",
|
||||
"fr" => "جمعة",
|
||||
"sa" => "سبت",
|
||||
"sun" => "الأحد",
|
||||
"mon" => "الاثنين",
|
||||
"tue" => "الثلاثاء",
|
||||
"wed" => "الأربعاء",
|
||||
"thu" => "الخميس",
|
||||
"fri" => "الجمعة",
|
||||
"sat" => "السبت",
|
||||
"sunday" => "الأحد",
|
||||
"monday" => "الاثنين",
|
||||
"tuesday" => "الثلاثاء",
|
||||
"wednesday" => "الأربعاء",
|
||||
"thursday" => "الخميس",
|
||||
"friday" => "الجمعة",
|
||||
"saturday" => "السبت",
|
||||
"jan" => "يناير",
|
||||
"feb" => "فبراير",
|
||||
"mar" => "مارس",
|
||||
"apr" => "أبريل",
|
||||
"may" => "مايو",
|
||||
"jun" => "يونيو",
|
||||
"jul" => "يوليو",
|
||||
"aug" => "أغسطس",
|
||||
"sep" => "سبتمبر",
|
||||
"oct" => "أكتوبر",
|
||||
"nov" => "نوفمبر",
|
||||
"dec" => "ديسمبر",
|
||||
"january" => "يناير",
|
||||
"february" => "فبراير",
|
||||
"march" => "مارس",
|
||||
"april" => "أبريل",
|
||||
"mayl" => "مايو",
|
||||
"june" => "يونيو",
|
||||
"july" => "يوليو",
|
||||
"august" => "أغسطس",
|
||||
"september" => "سبتمبر",
|
||||
"october" => "أكتوبر",
|
||||
"november" => "نوفمبر",
|
||||
"december" => "ديسمبر",
|
||||
];
|
||||
49
app/Language/de-DE/Calendar.php
Normal file
49
app/Language/de-DE/Calendar.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"su" => "So",
|
||||
"mo" => "Mo",
|
||||
"tu" => "Di",
|
||||
"we" => "Mi",
|
||||
"th" => "Do",
|
||||
"fr" => "Fr",
|
||||
"sa" => "Sa",
|
||||
"sun" => "Son",
|
||||
"mon" => "Mon",
|
||||
"tue" => "Die",
|
||||
"wed" => "Mit",
|
||||
"thu" => "Don",
|
||||
"fri" => "Fre",
|
||||
"sat" => "Sam",
|
||||
"sunday" => "Sonntag",
|
||||
"monday" => "Montag",
|
||||
"tuesday" => "Dienstag",
|
||||
"wednesday" => "Mittwoch",
|
||||
"thursday" => "Donnerstag",
|
||||
"friday" => "Freitag",
|
||||
"saturday" => "Samstag",
|
||||
"jan" => "Jan",
|
||||
"feb" => "Feb",
|
||||
"mar" => "Mär",
|
||||
"apr" => "Apr",
|
||||
"may" => "Mai",
|
||||
"jun" => "Jun",
|
||||
"jul" => "Jul",
|
||||
"aug" => "Aug",
|
||||
"sep" => "Sep",
|
||||
"oct" => "Okt",
|
||||
"nov" => "Nov",
|
||||
"dec" => "Dez",
|
||||
"january" => "Januar",
|
||||
"february" => "Februar",
|
||||
"march" => "März",
|
||||
"april" => "April",
|
||||
"mayl" => "Mai",
|
||||
"june" => "Juni",
|
||||
"july" => "Juli",
|
||||
"august" => "August",
|
||||
"september" => "September",
|
||||
"october" => "Oktober",
|
||||
"november" => "November",
|
||||
"december" => "Dezember",
|
||||
];
|
||||
@@ -3,18 +3,18 @@
|
||||
return [
|
||||
"address_1" => "Adresse 1",
|
||||
"address_2" => "Adresse 2",
|
||||
"admin" => "",
|
||||
"admin" => "Administrator",
|
||||
"city" => "Stadt",
|
||||
"clerk" => "",
|
||||
"clerk" => "Angestellter",
|
||||
"close" => "Schließen",
|
||||
"color" => "",
|
||||
"color" => "Theme-Farben",
|
||||
"comments" => "Kommentare",
|
||||
"common" => "Allgemein",
|
||||
"confirm_search" => "Sie haben eine oder mehrere Zeilen gewählt. Nach der Verarbeitung werden diese nicht mehr ausgewählt sein. Wollen Sie die Suche dennoch verarbeiten?",
|
||||
"copyrights" => "© 2010 - {0}",
|
||||
"correct_errors" => "Bitte korrigieren Sie vor dem Speichern die angezeigten Fehler",
|
||||
"country" => "Land",
|
||||
"dashboard" => "",
|
||||
"dashboard" => "Dashboard",
|
||||
"date" => "Datum",
|
||||
"delete" => "Löschen",
|
||||
"det" => "Details",
|
||||
@@ -26,15 +26,15 @@ return [
|
||||
"export_csv_no" => "Nein",
|
||||
"export_csv_yes" => "Ja",
|
||||
"fields_required_message" => "Die Felder in rot sind erforderlich",
|
||||
"fields_required_message_unique" => "",
|
||||
"fields_required_message_unique" => "Die rot markierten Felder sind erforderlich und müssen eindeutig sein",
|
||||
"first_name" => "Vorname",
|
||||
"first_name_required" => "Vorname ist erforderlich.",
|
||||
"first_page" => "Erste",
|
||||
"gender" => "Geschlecht",
|
||||
"gender_female" => "W",
|
||||
"gender_male" => "M",
|
||||
"gender_undefined" => "",
|
||||
"icon" => "",
|
||||
"gender_undefined" => "Undefiniert",
|
||||
"icon" => "Symbol",
|
||||
"id" => "ID",
|
||||
"import" => "Import",
|
||||
"import_change_file" => "Ändern",
|
||||
@@ -48,21 +48,21 @@ return [
|
||||
"last_page" => "Letzte",
|
||||
"learn_about_project" => "für neueste Nachrichten zum Projekt.",
|
||||
"list_of" => "Liste von",
|
||||
"logo" => "",
|
||||
"logo_mark" => "",
|
||||
"logo" => "Logo",
|
||||
"logo_mark" => "Marke",
|
||||
"logout" => "Ausloggen",
|
||||
"manager" => "",
|
||||
"manager" => "Manager",
|
||||
"migration_needed" => "Eine Datenbankmigration auf {0} wird nach der Anmeldung gestartet.",
|
||||
"new" => "Neu",
|
||||
"no" => "",
|
||||
"no" => "Nein",
|
||||
"no_persons_to_display" => "Keine Personen zum Anzeigen.",
|
||||
"none_selected_text" => "[auswählen]",
|
||||
"or" => "Oder",
|
||||
"people" => "",
|
||||
"people" => "Personen",
|
||||
"phone_number" => "Telefon",
|
||||
"phone_number_required" => "Telefon ist erforderlich",
|
||||
"please_visit_my" => "Bitte beuschen Sie",
|
||||
"position" => "",
|
||||
"position" => "Position",
|
||||
"powered_by" => "Unterstützt von",
|
||||
"price" => "Preis",
|
||||
"print" => "Drucken",
|
||||
@@ -73,8 +73,8 @@ return [
|
||||
"search" => "Suche",
|
||||
"search_options" => "Suchkriterien",
|
||||
"searched_for" => "Gescuht nach",
|
||||
"software_short" => "",
|
||||
"software_title" => "",
|
||||
"software_short" => "OSPOS",
|
||||
"software_title" => "Open Source Point of Sale",
|
||||
"state" => "BL/Kanton",
|
||||
"submit" => "Senden",
|
||||
"total_spent" => "Gesamtausgaben",
|
||||
@@ -83,7 +83,7 @@ return [
|
||||
"website" => "Website",
|
||||
"welcome" => "Willkommen",
|
||||
"welcome_message" => "Willkommen bei OSPOS, zum Beginnen auf ein Modul klicken.",
|
||||
"yes" => "",
|
||||
"yes" => "Ja",
|
||||
"you_are_using_ospos" => "Sie verwenden Open Source Point Of Sale Version",
|
||||
"zip" => "PLZ",
|
||||
];
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"administrator" => "",
|
||||
"administrator" => "Administrator",
|
||||
"basic_information" => "Mitarbeiter-Information",
|
||||
"cannot_be_deleted" => "Konnte gewählten Mitarbeiter nicht löschen, einer oder mehrere weisen Verkäufe aus.",
|
||||
"change_employee" => "",
|
||||
"change_employee" => "Mitarbeiter ändern",
|
||||
"change_password" => "Passwort Ändern",
|
||||
"clerk" => "",
|
||||
"commission" => "",
|
||||
"clerk" => "Angestellter",
|
||||
"commission" => "Provision",
|
||||
"confirm_delete" => "Wollen Sie diesen Mitarbeiter wirklich löschen?",
|
||||
"confirm_restore" => "Möchten Sie die ausgewählten Mitarbeiter wiederherstellen?",
|
||||
"current_password" => "Aktuelles Passwort",
|
||||
"current_password_invalid" => "Aktuelles Passwort ist ungültig.",
|
||||
"employee" => "Mitarbeiter",
|
||||
"error_adding_updating" => "Fehler beim Hinzufügen/Ändern.",
|
||||
"error_deleting_admin" => "",
|
||||
"error_updating_admin" => "",
|
||||
"error_deleting_admin" => "Sie können keinen Administrator löschen.",
|
||||
"error_updating_admin" => "Sie können keinen Administrator ändern.",
|
||||
"error_deleting_demo_admin" => "Sie können den Demo-Administrator nicht löschen.",
|
||||
"error_updating_demo_admin" => "Sie können den Demo-Administrator nicht verändern.",
|
||||
"language" => "Sprache",
|
||||
"login_info" => "Mitarbeiter Login",
|
||||
"manager" => "",
|
||||
"manager" => "Manager",
|
||||
"new" => "Neuer Mitarbeiter",
|
||||
"none_selected" => "Sie haben keine Mitarbeiter zum Löschen gewählt.",
|
||||
"one_or_multiple" => "Mitarbeiter",
|
||||
|
||||
@@ -26,7 +26,7 @@ return [
|
||||
"cost_price_required" => "Der Großhandelspreis ist ein Pflichtfeld.",
|
||||
"count" => "Ändere Bestand",
|
||||
"csv_import_failed" => "CSV Import fehlgeschlagen",
|
||||
"csv_import_invalid_location" => "",
|
||||
"csv_import_invalid_location" => "Ungültige Lagerorte gefunden: {0}. Nur gültige Lagerorte sind erlaubt.",
|
||||
"csv_import_nodata_wrongformat" => "Die hochgeladene Datei enthält keine Daten oder ist falsch formatiert.",
|
||||
"csv_import_partially_failed" => "{0} Artikel-Import Fehler in Zeile: {1}. Keine Reihen wurden importiert.",
|
||||
"csv_import_success" => "Artikelimport erfolgreich.",
|
||||
|
||||
@@ -146,4 +146,5 @@ return [
|
||||
"used" => "Punkte eingelöst",
|
||||
"work_orders" => "Arbeitsaufträge",
|
||||
"zero_and_less" => "Null und weniger",
|
||||
"toggle_cost_and_profit" => "Kosten & Gewinn umschalten",
|
||||
];
|
||||
|
||||
@@ -222,4 +222,8 @@ return [
|
||||
"work_order_number_duplicate" => "Arbeitsauftragsnummer muss eindeutig sein.",
|
||||
"work_order_sent" => "Arbeitsauftrag gesendet an",
|
||||
"work_order_unsent" => "Der Arbeitsauftrag konnte nicht gesendet werden an",
|
||||
"sale_not_found" => "Verkauf nicht gefunden",
|
||||
"ubl_invoice" => "UBL-Rechnung",
|
||||
"download_ubl" => "UBL-Rechnung herunterladen",
|
||||
"ubl_generation_failed" => "UBL-Rechnung konnte nicht erstellt werden",
|
||||
];
|
||||
|
||||
@@ -9,6 +9,9 @@ return [
|
||||
"login" => "Login",
|
||||
"logout" => "Logout",
|
||||
"migration_needed" => "A database migration to {0} will start after login.",
|
||||
"migration_required" => "Database Migration Required",
|
||||
"migration_auth_message" => "Administrator credentials are required to authorize the database migration to version {0}. Please login to proceed.",
|
||||
"migration_complete_redirect" => "Migration complete. Redirecting to login...",
|
||||
"password" => "Password",
|
||||
"required_username" => "The username field is required.",
|
||||
"username" => "Username",
|
||||
|
||||
49
app/Language/es-ES/Calendar.php
Normal file
49
app/Language/es-ES/Calendar.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"su" => "Do",
|
||||
"mo" => "Lu",
|
||||
"tu" => "Ma",
|
||||
"we" => "Mi",
|
||||
"th" => "Ju",
|
||||
"fr" => "Vi",
|
||||
"sa" => "Sá",
|
||||
"sun" => "Dom",
|
||||
"mon" => "Lun",
|
||||
"tue" => "Mar",
|
||||
"wed" => "Mié",
|
||||
"thu" => "Jue",
|
||||
"fri" => "Vie",
|
||||
"sat" => "Sáb",
|
||||
"sunday" => "Domingo",
|
||||
"monday" => "Lunes",
|
||||
"tuesday" => "Martes",
|
||||
"wednesday" => "Miércoles",
|
||||
"thursday" => "Jueves",
|
||||
"friday" => "Viernes",
|
||||
"saturday" => "Sábado",
|
||||
"jan" => "Ene",
|
||||
"feb" => "Feb",
|
||||
"mar" => "Mar",
|
||||
"apr" => "Abr",
|
||||
"may" => "May",
|
||||
"jun" => "Jun",
|
||||
"jul" => "Jul",
|
||||
"aug" => "Ago",
|
||||
"sep" => "Sep",
|
||||
"oct" => "Oct",
|
||||
"nov" => "Nov",
|
||||
"dec" => "Dic",
|
||||
"january" => "Enero",
|
||||
"february" => "Febrero",
|
||||
"march" => "Marzo",
|
||||
"april" => "Abril",
|
||||
"mayl" => "Mayo",
|
||||
"june" => "Junio",
|
||||
"july" => "Julio",
|
||||
"august" => "Agosto",
|
||||
"september" => "Septiembre",
|
||||
"october" => "Octubre",
|
||||
"november" => "Noviembre",
|
||||
"december" => "Diciembre",
|
||||
];
|
||||
@@ -14,8 +14,8 @@ return [
|
||||
"current_password_invalid" => "Contraseña Actual Inválida.",
|
||||
"employee" => "Empleado",
|
||||
"error_adding_updating" => "Error al agregar/actualizar empleado.",
|
||||
"error_deleting_admin" => "",
|
||||
"error_updating_admin" => "",
|
||||
"error_deleting_admin" => "No puedes eliminar un usuario administrador.",
|
||||
"error_updating_admin" => "No puedes modificar un usuario administrador.",
|
||||
"error_deleting_demo_admin" => "No puedes borrar el usuario admin del demo.",
|
||||
"error_updating_demo_admin" => "No puedes cambiar el usuario admin del demo.",
|
||||
"language" => "Idioma",
|
||||
|
||||
@@ -26,7 +26,7 @@ return [
|
||||
"cost_price_required" => "Precio al Por Mayor es un campo requerido.",
|
||||
"count" => "Actualizar Inventario",
|
||||
"csv_import_failed" => "Falló la importación de Hoja de Cálculo",
|
||||
"csv_import_invalid_location" => "",
|
||||
"csv_import_invalid_location" => "Ubicación(es) de stock inválida(s) encontrada(s): {0}. Solo ubicaciones de stock válidas son permitidas.",
|
||||
"csv_import_nodata_wrongformat" => "El archivo subido no tiene datos o el formato es incorrecto.",
|
||||
"csv_import_partially_failed" => "Hubo {0} falla(s) en la importación de producto(s) en la(s) línea(s): {1}. Ninguna fila ha sido importada.",
|
||||
"csv_import_success" => "Se importaron los articulos exitosamente.",
|
||||
|
||||
@@ -146,4 +146,5 @@ return [
|
||||
"used" => "Puntos usados",
|
||||
"work_orders" => "Ordenes",
|
||||
"zero_and_less" => "Cero y negativos",
|
||||
"toggle_cost_and_profit" => "Alternar Costo y Ganancia",
|
||||
];
|
||||
|
||||
@@ -222,5 +222,9 @@ return [
|
||||
"work_order_number_duplicate" => "El numero de orden de trabajo debe ser unico.",
|
||||
"work_order_sent" => "Orden de trabajo enviada a",
|
||||
"work_order_unsent" => "Orden de trabajo fallida al enviar a",
|
||||
"sale_not_found" => "Venta no encontrada",
|
||||
"ubl_invoice" => "Factura UBL",
|
||||
"download_ubl" => "Descargar Factura UBL",
|
||||
"ubl_generation_failed" => "Error al generar la factura UBL",
|
||||
"selected_customer" => "Cliente seleccionado",
|
||||
];
|
||||
|
||||
49
app/Language/es-MX/Calendar.php
Normal file
49
app/Language/es-MX/Calendar.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"su" => "Do",
|
||||
"mo" => "Lu",
|
||||
"tu" => "Ma",
|
||||
"we" => "Mi",
|
||||
"th" => "Ju",
|
||||
"fr" => "Vi",
|
||||
"sa" => "Sá",
|
||||
"sun" => "Dom",
|
||||
"mon" => "Lun",
|
||||
"tue" => "Mar",
|
||||
"wed" => "Mié",
|
||||
"thu" => "Jue",
|
||||
"fri" => "Vie",
|
||||
"sat" => "Sáb",
|
||||
"sunday" => "Domingo",
|
||||
"monday" => "Lunes",
|
||||
"tuesday" => "Martes",
|
||||
"wednesday" => "Miércoles",
|
||||
"thursday" => "Jueves",
|
||||
"friday" => "Viernes",
|
||||
"saturday" => "Sábado",
|
||||
"jan" => "Ene",
|
||||
"feb" => "Feb",
|
||||
"mar" => "Mar",
|
||||
"apr" => "Abr",
|
||||
"may" => "May",
|
||||
"jun" => "Jun",
|
||||
"jul" => "Jul",
|
||||
"aug" => "Ago",
|
||||
"sep" => "Sep",
|
||||
"oct" => "Oct",
|
||||
"nov" => "Nov",
|
||||
"dec" => "Dic",
|
||||
"january" => "Enero",
|
||||
"february" => "Febrero",
|
||||
"march" => "Marzo",
|
||||
"april" => "Abril",
|
||||
"mayl" => "Mayo",
|
||||
"june" => "Junio",
|
||||
"july" => "Julio",
|
||||
"august" => "Agosto",
|
||||
"september" => "Septiembre",
|
||||
"october" => "Octubre",
|
||||
"november" => "Noviembre",
|
||||
"december" => "Diciembre",
|
||||
];
|
||||
@@ -3,18 +3,18 @@
|
||||
return [
|
||||
"address_1" => "Adresse 1",
|
||||
"address_2" => "Adresse 2",
|
||||
"admin" => "",
|
||||
"admin" => "Administrateur",
|
||||
"city" => "Ville",
|
||||
"clerk" => "",
|
||||
"clerk" => "Employé",
|
||||
"close" => "Fermer",
|
||||
"color" => "",
|
||||
"color" => "Couleurs du thème",
|
||||
"comments" => "Commentaires",
|
||||
"common" => "commun",
|
||||
"confirm_search" => "Vous avez sélectionné une ou plusieurs lignes, celles-ci ne seront plus sélectionnées après votre recherche. Voulez-vous continuer ?",
|
||||
"copyrights" => "© 2010 - {0}",
|
||||
"correct_errors" => "Merci de corriger les erreurs identifiées avant d'enregistrer",
|
||||
"country" => "Pays",
|
||||
"dashboard" => "",
|
||||
"dashboard" => "Tableau de bord",
|
||||
"date" => "Date",
|
||||
"delete" => "Supprimer",
|
||||
"det" => "détails",
|
||||
@@ -26,14 +26,14 @@ return [
|
||||
"export_csv_no" => "Non",
|
||||
"export_csv_yes" => "Oui",
|
||||
"fields_required_message" => "Les champs en rouge sont requis",
|
||||
"fields_required_message_unique" => "",
|
||||
"fields_required_message_unique" => "Les champs en rouge sont requis et doivent être uniques",
|
||||
"first_name" => "Prénom",
|
||||
"first_name_required" => "Le prénom est requis.",
|
||||
"first_page" => "Premier",
|
||||
"gender" => "Genre",
|
||||
"gender_female" => "F",
|
||||
"gender_male" => "M",
|
||||
"gender_undefined" => "",
|
||||
"gender_undefined" => "Non défini",
|
||||
"icon" => "Icône",
|
||||
"id" => "Identifiant",
|
||||
"import" => "Importation",
|
||||
@@ -51,18 +51,18 @@ return [
|
||||
"logo" => "Logo",
|
||||
"logo_mark" => "Marque",
|
||||
"logout" => "Déconnexion",
|
||||
"manager" => "",
|
||||
"manager" => "Gestionnaire",
|
||||
"migration_needed" => "Une migration de la base de donnée vers {0} démarrera après le connexion.",
|
||||
"new" => "Nouveau",
|
||||
"no" => "Oui",
|
||||
"no" => "Non",
|
||||
"no_persons_to_display" => "Il n'y a personne à afficher.",
|
||||
"none_selected_text" => "[Sélectionner]",
|
||||
"or" => "OU",
|
||||
"people" => "",
|
||||
"people" => "Personnes",
|
||||
"phone_number" => "Téléphone",
|
||||
"phone_number_required" => "Le numéro de téléphone est requis.",
|
||||
"please_visit_my" => "SVP visitez le",
|
||||
"position" => "",
|
||||
"position" => "Position",
|
||||
"powered_by" => "Propulsé par",
|
||||
"price" => "Prix",
|
||||
"print" => "Imprimer",
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"administrator" => "",
|
||||
"administrator" => "Administrateur",
|
||||
"basic_information" => "Fiche",
|
||||
"cannot_be_deleted" => "Impossible de supprimer le(s) employé(s) sélectionné(s),car un ou plusieur a éffectué une vente, ou car vous essayez de vous supprimer vous-meme.",
|
||||
"change_employee" => "",
|
||||
"change_employee" => "Changer d'employé",
|
||||
"change_password" => "Changement de mot de passe",
|
||||
"clerk" => "",
|
||||
"commission" => "",
|
||||
"clerk" => "Employé",
|
||||
"commission" => "Commission",
|
||||
"confirm_delete" => "Êtes-vous certain de vouloir supprimer le(s) employé(s) sélectionné(s) ?",
|
||||
"confirm_restore" => "Êtes-vous certain de vouloir restaurer le(s) employé(s) selectionné(s) ?",
|
||||
"current_password" => "Mot de passe actuel",
|
||||
"current_password_invalid" => "Le mot de passe actuel est invalide.",
|
||||
"employee" => "Employé",
|
||||
"error_adding_updating" => "Erreur d'ajout/édition d'employé.",
|
||||
"error_deleting_admin" => "",
|
||||
"error_updating_admin" => "",
|
||||
"error_deleting_admin" => "Vous ne pouvez pas supprimer un utilisateur administrateur.",
|
||||
"error_updating_admin" => "Vous ne pouvez pas modifier un utilisateur administrateur.",
|
||||
"error_deleting_demo_admin" => "Vous ne pouvez pas supprimer l'utilisateur de démonstration admin.",
|
||||
"error_updating_demo_admin" => "Vous ne pouvez pas modifier l'utilisateur de démonstration admin.",
|
||||
"language" => "Langue",
|
||||
"login_info" => "Connexion",
|
||||
"manager" => "",
|
||||
"manager" => "Gestionnaire",
|
||||
"new" => "Nouvel employé",
|
||||
"none_selected" => "Aucun employé sélectionné pour la suppression.",
|
||||
"one_or_multiple" => "employé(s)",
|
||||
|
||||
@@ -26,7 +26,7 @@ return [
|
||||
"cost_price_required" => "Le prix de gros est requis.",
|
||||
"count" => "Mise à jour de l'inventaire",
|
||||
"csv_import_failed" => "Échec d'import CSV",
|
||||
"csv_import_invalid_location" => "",
|
||||
"csv_import_invalid_location" => "Emplacement(s) de stock invalide(s) trouvé(s) : {0}. Seuls les emplacements de stock valides sont autorisés.",
|
||||
"csv_import_nodata_wrongformat" => "Le CSV envoyé ne contient aucune donnée, ou elles sont dans un format erroné.",
|
||||
"csv_import_partially_failed" => "Il y a eu {0} importation(s) d'articles échoué(s) au(x) ligne(s) : {1}. Aucune ligne n'a été importée.",
|
||||
"csv_import_success" => "Importation des articles réussie.",
|
||||
|
||||
@@ -146,4 +146,5 @@ return [
|
||||
"used" => "Points utilisés",
|
||||
"work_orders" => "Ordre Du Travail",
|
||||
"zero_and_less" => "Zéro ou moin",
|
||||
"toggle_cost_and_profit" => "Basculer Coût & Bénéfice",
|
||||
];
|
||||
|
||||
@@ -222,4 +222,8 @@ return [
|
||||
"work_order_number_duplicate" => "Le numéro de bon de travail doit être unique.",
|
||||
"work_order_sent" => "Ordre de travail envoyé à",
|
||||
"work_order_unsent" => "L'ordre de travail n'a pas pu être envoyé à",
|
||||
"sale_not_found" => "Vente introuvable",
|
||||
"ubl_invoice" => "Facture UBL",
|
||||
"download_ubl" => "Télécharger Facture UBL",
|
||||
"ubl_generation_failed" => "Échec de la génération de la facture UBL",
|
||||
];
|
||||
|
||||
49
app/Language/he/Calendar.php
Normal file
49
app/Language/he/Calendar.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"su" => "א",
|
||||
"mo" => "ב",
|
||||
"tu" => "ג",
|
||||
"we" => "ד",
|
||||
"th" => "ה",
|
||||
"fr" => "ו",
|
||||
"sa" => "ש",
|
||||
"sun" => "יום א",
|
||||
"mon" => "יום ב",
|
||||
"tue" => "יום ג",
|
||||
"wed" => "יום ד",
|
||||
"thu" => "יום ה",
|
||||
"fri" => "יום ו",
|
||||
"sat" => "שבת",
|
||||
"sunday" => "יום ראשון",
|
||||
"monday" => "יום שני",
|
||||
"tuesday" => "יום שלישי",
|
||||
"wednesday" => "יום רביעי",
|
||||
"thursday" => "יום חמישי",
|
||||
"friday" => "יום שישי",
|
||||
"saturday" => "יום שבת",
|
||||
"jan" => "ינו",
|
||||
"feb" => "פבר",
|
||||
"mar" => "מרץ",
|
||||
"apr" => "אפר",
|
||||
"may" => "מאי",
|
||||
"jun" => "יונ",
|
||||
"jul" => "יול",
|
||||
"aug" => "אוג",
|
||||
"sep" => "ספט",
|
||||
"oct" => "אוק",
|
||||
"nov" => "נוב",
|
||||
"dec" => "דצמ",
|
||||
"january" => "ינואר",
|
||||
"february" => "פברואר",
|
||||
"march" => "מרץ",
|
||||
"april" => "אפריל",
|
||||
"mayl" => "מאי",
|
||||
"june" => "יוני",
|
||||
"july" => "יולי",
|
||||
"august" => "אוגוסט",
|
||||
"september" => "ספטמבר",
|
||||
"october" => "אוקטובר",
|
||||
"november" => "נובמבר",
|
||||
"december" => "דצמבר",
|
||||
];
|
||||
@@ -3,18 +3,18 @@
|
||||
return [
|
||||
"address_1" => "Indirizzo 1",
|
||||
"address_2" => "Indirizzo 2",
|
||||
"admin" => "",
|
||||
"admin" => "Amministratore",
|
||||
"city" => "Città",
|
||||
"clerk" => "",
|
||||
"clerk" => "Impiegato",
|
||||
"close" => "Chiudere",
|
||||
"color" => "",
|
||||
"color" => "Colori del tema",
|
||||
"comments" => "Commenti",
|
||||
"common" => "comune",
|
||||
"confirm_search" => "Hai selezionato una o più righe, queste non saranno più selezionate dopo la tua ricerca. Sei sicuro di voler procedere alla ricerca?",
|
||||
"copyrights" => "© 2010 - {0}",
|
||||
"correct_errors" => "Correggi gli errori identificati prima di salvare",
|
||||
"country" => "Paese",
|
||||
"dashboard" => "",
|
||||
"dashboard" => "Pannello di controllo",
|
||||
"date" => "Data",
|
||||
"delete" => "Cancella",
|
||||
"det" => "dettagli",
|
||||
@@ -26,14 +26,14 @@ return [
|
||||
"export_csv_no" => "No",
|
||||
"export_csv_yes" => "Si",
|
||||
"fields_required_message" => "I campi in rosso sono richiesti",
|
||||
"fields_required_message_unique" => "",
|
||||
"fields_required_message_unique" => "I campi in rosso sono richiesti e devono essere unici",
|
||||
"first_name" => "Nome",
|
||||
"first_name_required" => "Campo Nome è richiesto.",
|
||||
"first_page" => "Primo",
|
||||
"gender" => "Sesso",
|
||||
"gender_female" => "F",
|
||||
"gender_male" => "M",
|
||||
"gender_undefined" => "",
|
||||
"gender_undefined" => "Non definito",
|
||||
"icon" => "Icona",
|
||||
"id" => "ID",
|
||||
"import" => "Importa",
|
||||
@@ -51,18 +51,18 @@ return [
|
||||
"logo" => "Logo",
|
||||
"logo_mark" => "Marchio",
|
||||
"logout" => "Esci",
|
||||
"manager" => "",
|
||||
"migration_needed" => "",
|
||||
"manager" => "Responsabile",
|
||||
"migration_needed" => "Una migrazione del database verso {0} inizierà dopo l'accesso.",
|
||||
"new" => "Nuovo",
|
||||
"no" => "",
|
||||
"no" => "No",
|
||||
"no_persons_to_display" => "Non ci sono persone da mostrare.",
|
||||
"none_selected_text" => "[Selezionare]",
|
||||
"or" => "OR",
|
||||
"people" => "",
|
||||
"people" => "Persone",
|
||||
"phone_number" => "Numero di Telefono",
|
||||
"phone_number_required" => "",
|
||||
"phone_number_required" => "Il numero di telefono è richiesto",
|
||||
"please_visit_my" => "Visitare il",
|
||||
"position" => "",
|
||||
"position" => "Posizione",
|
||||
"powered_by" => "Sviluppato da",
|
||||
"price" => "Prezzo",
|
||||
"print" => "Stampa",
|
||||
@@ -83,7 +83,7 @@ return [
|
||||
"website" => "Sito web",
|
||||
"welcome" => "Benvenuto",
|
||||
"welcome_message" => "Benvenuto in OSPOS, clicca un modulo sottostante per incominciare.",
|
||||
"yes" => "",
|
||||
"yes" => "Sì",
|
||||
"you_are_using_ospos" => "Stai usando la versione Open Source Point Of Sale (Punto di vendita)",
|
||||
"zip" => "CAP",
|
||||
];
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"administrator" => "",
|
||||
"administrator" => "Amministratore",
|
||||
"basic_information" => "Informazioni",
|
||||
"cannot_be_deleted" => "Eliminazione dell'impiegato/i non consentita, uno o più hanno trattato delle vendite o stai cancellando il tuo account.",
|
||||
"change_employee" => "",
|
||||
"change_employee" => "Cambia Impiegato",
|
||||
"change_password" => "Cambia Password",
|
||||
"clerk" => "",
|
||||
"commission" => "",
|
||||
"clerk" => "Impiegato",
|
||||
"commission" => "Commissione",
|
||||
"confirm_delete" => "Sei sicuro di voler eliminare l'impiegato/i selezionato?",
|
||||
"confirm_restore" => "Sei sicuro di voler ripristinare gl'Impiegati selezionati?",
|
||||
"current_password" => "Password Corrente",
|
||||
"current_password_invalid" => "Password corrente non valida.",
|
||||
"employee" => "Impiegato",
|
||||
"error_adding_updating" => "Aggiunta o aggiornamento di impiegati fallito.",
|
||||
"error_deleting_admin" => "",
|
||||
"error_updating_admin" => "",
|
||||
"error_deleting_admin" => "Non puoi eliminare un utente amministratore.",
|
||||
"error_updating_admin" => "Non puoi modificare un utente amministratore.",
|
||||
"error_deleting_demo_admin" => "Non puoi eliminare l'utente admin demo.",
|
||||
"error_updating_demo_admin" => "Non puoi cambiare l'utente admin demo.",
|
||||
"language" => "Lingua",
|
||||
"login_info" => "Login",
|
||||
"manager" => "",
|
||||
"manager" => "Manager",
|
||||
"new" => "Nuovo Impiegato",
|
||||
"none_selected" => "Non hai selezionato nessun impiegato da eliminare.",
|
||||
"one_or_multiple" => "impiegato/i",
|
||||
|
||||
@@ -26,7 +26,7 @@ return [
|
||||
"cost_price_required" => "Prezzo all'ingrosso è un campo obbligatorio.",
|
||||
"count" => "Aggiorna Inventario",
|
||||
"csv_import_failed" => "Importazione CSV fallita",
|
||||
"csv_import_invalid_location" => "",
|
||||
"csv_import_invalid_location" => "Trovata/e locazione/i di stock non valida/e: {0}. Solo le locazioni di stock valide sono ammesse.",
|
||||
"csv_import_nodata_wrongformat" => "L'upload del file non ha dati o non è formattato correttamente.",
|
||||
"csv_import_partially_failed" => "Si sono verificati {0} errori di importazione degli elementi nelle righe: {1}. Nessuna riga è stata importata.",
|
||||
"csv_import_success" => "Importazione CSV dell'articolo riuscita.",
|
||||
|
||||
@@ -146,4 +146,5 @@ return [
|
||||
"used" => "Punti Usati",
|
||||
"work_orders" => "Ordini di lavoro",
|
||||
"zero_and_less" => "Zero e meno",
|
||||
"toggle_cost_and_profit" => "Commuta Costo & Profitto",
|
||||
];
|
||||
|
||||
@@ -222,4 +222,8 @@ return [
|
||||
"work_order_number_duplicate" => "Numero Ordine di Lavoro deve essere unico.",
|
||||
"work_order_sent" => "Ordine di lavoro inviato",
|
||||
"work_order_unsent" => "Ordine di Lavoro fallito da inviare a",
|
||||
"sale_not_found" => "Vendita non trovata",
|
||||
"ubl_invoice" => "Fattura UBL",
|
||||
"download_ubl" => "Scarica fattura UBL",
|
||||
"ubl_generation_failed" => "Impossibile generare la fattura UBL",
|
||||
];
|
||||
|
||||
49
app/Language/ka/Calendar.php
Normal file
49
app/Language/ka/Calendar.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"su" => "",
|
||||
"mo" => "",
|
||||
"tu" => "",
|
||||
"we" => "",
|
||||
"th" => "",
|
||||
"fr" => "",
|
||||
"sa" => "",
|
||||
"sun" => "",
|
||||
"mon" => "",
|
||||
"tue" => "",
|
||||
"wed" => "",
|
||||
"thu" => "",
|
||||
"fri" => "",
|
||||
"sat" => "",
|
||||
"sunday" => "",
|
||||
"monday" => "",
|
||||
"tuesday" => "",
|
||||
"wednesday" => "",
|
||||
"thursday" => "",
|
||||
"friday" => "",
|
||||
"saturday" => "",
|
||||
"jan" => "",
|
||||
"feb" => "",
|
||||
"mar" => "",
|
||||
"apr" => "",
|
||||
"may" => "",
|
||||
"jun" => "",
|
||||
"jul" => "",
|
||||
"aug" => "",
|
||||
"sep" => "",
|
||||
"oct" => "",
|
||||
"nov" => "",
|
||||
"dec" => "",
|
||||
"january" => "",
|
||||
"february" => "",
|
||||
"march" => "",
|
||||
"april" => "",
|
||||
"mayl" => "",
|
||||
"june" => "",
|
||||
"july" => "",
|
||||
"august" => "",
|
||||
"september" => "",
|
||||
"october" => "",
|
||||
"november" => "",
|
||||
"december" => "",
|
||||
];
|
||||
@@ -222,4 +222,5 @@ return [
|
||||
"work_order_number_duplicate" => "",
|
||||
"work_order_sent" => "",
|
||||
"work_order_unsent" => "",
|
||||
"sale_not_found" => "",
|
||||
];
|
||||
|
||||
49
app/Language/lo/Calendar.php
Normal file
49
app/Language/lo/Calendar.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"su" => "",
|
||||
"mo" => "",
|
||||
"tu" => "",
|
||||
"we" => "",
|
||||
"th" => "",
|
||||
"fr" => "",
|
||||
"sa" => "",
|
||||
"sun" => "",
|
||||
"mon" => "",
|
||||
"tue" => "",
|
||||
"wed" => "",
|
||||
"thu" => "",
|
||||
"fri" => "",
|
||||
"sat" => "",
|
||||
"sunday" => "",
|
||||
"monday" => "",
|
||||
"tuesday" => "",
|
||||
"wednesday" => "",
|
||||
"thursday" => "",
|
||||
"friday" => "",
|
||||
"saturday" => "",
|
||||
"jan" => "",
|
||||
"feb" => "",
|
||||
"mar" => "",
|
||||
"apr" => "",
|
||||
"may" => "",
|
||||
"jun" => "",
|
||||
"jul" => "",
|
||||
"aug" => "",
|
||||
"sep" => "",
|
||||
"oct" => "",
|
||||
"nov" => "",
|
||||
"dec" => "",
|
||||
"january" => "",
|
||||
"february" => "",
|
||||
"march" => "",
|
||||
"april" => "",
|
||||
"mayl" => "",
|
||||
"june" => "",
|
||||
"july" => "",
|
||||
"august" => "",
|
||||
"september" => "",
|
||||
"october" => "",
|
||||
"november" => "",
|
||||
"december" => "",
|
||||
];
|
||||
49
app/Language/ml/Calendar.php
Normal file
49
app/Language/ml/Calendar.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"su" => "ഞാ",
|
||||
"mo" => "തി",
|
||||
"tu" => "ചൊ",
|
||||
"we" => "ബു",
|
||||
"th" => "വ്യാ",
|
||||
"fr" => "വെ",
|
||||
"sa" => "ശ",
|
||||
"sun" => "ഞായർ",
|
||||
"mon" => "തിങ്കൾ",
|
||||
"tue" => "ചൊവ്വ",
|
||||
"wed" => "ബുധൻ",
|
||||
"thu" => "വ്യാഴം",
|
||||
"fri" => "വെള്ളി",
|
||||
"sat" => "ശനി",
|
||||
"sunday" => "ഞായറാഴ്ച",
|
||||
"monday" => "തിങ്കളാഴ്ച",
|
||||
"tuesday" => "ചൊവ്വാഴ്ച",
|
||||
"wednesday" => "ബുധനാഴ്ച",
|
||||
"thursday" => "വ്യാഴാഴ്ച",
|
||||
"friday" => "വെള്ളിയാഴ്ച",
|
||||
"saturday" => "ശനിയാഴ്ച",
|
||||
"jan" => "ജനു",
|
||||
"feb" => "ഫെബ്രു",
|
||||
"mar" => "മാർ",
|
||||
"apr" => "ഏപ്രി",
|
||||
"may" => "മേയ്",
|
||||
"jun" => "ജൂൺ",
|
||||
"jul" => "ജൂലൈ",
|
||||
"aug" => "ആഗ",
|
||||
"sep" => "സെപ്റ്റം",
|
||||
"oct" => "ഒക്ടോ",
|
||||
"nov" => "നവം",
|
||||
"dec" => "ഡിസം",
|
||||
"january" => "ജനുവരി",
|
||||
"february" => "ഫെബ്രുവരി",
|
||||
"march" => "മാർച്ച്",
|
||||
"april" => "ഏപ്രിൽ",
|
||||
"mayl" => "മേയ്",
|
||||
"june" => "ജൂൺ",
|
||||
"july" => "ജൂലൈ",
|
||||
"august" => "ആഗസ്റ്റ്",
|
||||
"september" => "സെപ്റ്റംബർ",
|
||||
"october" => "ഒക്ടോബർ",
|
||||
"november" => "നവംബർ",
|
||||
"december" => "ഡിസംബർ",
|
||||
];
|
||||
@@ -222,4 +222,5 @@ return [
|
||||
"work_order_number_duplicate" => "",
|
||||
"work_order_sent" => "",
|
||||
"work_order_unsent" => "",
|
||||
"sale_not_found" => "",
|
||||
];
|
||||
|
||||
49
app/Language/nb/Calendar.php
Normal file
49
app/Language/nb/Calendar.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"su" => "Sø",
|
||||
"mo" => "Ma",
|
||||
"tu" => "Ti",
|
||||
"we" => "On",
|
||||
"th" => "To",
|
||||
"fr" => "Fr",
|
||||
"sa" => "Lø",
|
||||
"sun" => "Søn",
|
||||
"mon" => "Man",
|
||||
"tue" => "Tir",
|
||||
"wed" => "Ons",
|
||||
"thu" => "Tor",
|
||||
"fri" => "Fre",
|
||||
"sat" => "Lør",
|
||||
"sunday" => "Søndag",
|
||||
"monday" => "Mandag",
|
||||
"tuesday" => "Tirsdag",
|
||||
"wednesday" => "Onsdag",
|
||||
"thursday" => "Torsdag",
|
||||
"friday" => "Fredag",
|
||||
"saturday" => "Lørdag",
|
||||
"jan" => "Jan",
|
||||
"feb" => "Feb",
|
||||
"mar" => "Mar",
|
||||
"apr" => "Apr",
|
||||
"may" => "Mai",
|
||||
"jun" => "Jun",
|
||||
"jul" => "Jul",
|
||||
"aug" => "Aug",
|
||||
"sep" => "Sep",
|
||||
"oct" => "Okt",
|
||||
"nov" => "Nov",
|
||||
"dec" => "Des",
|
||||
"january" => "Januar",
|
||||
"february" => "Februar",
|
||||
"march" => "Mars",
|
||||
"april" => "April",
|
||||
"mayl" => "Mai",
|
||||
"june" => "Juni",
|
||||
"july" => "Juli",
|
||||
"august" => "August",
|
||||
"september" => "September",
|
||||
"october" => "Oktober",
|
||||
"november" => "November",
|
||||
"december" => "Desember",
|
||||
];
|
||||
49
app/Language/nl-NL/Calendar.php
Normal file
49
app/Language/nl-NL/Calendar.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"su" => "Zo",
|
||||
"mo" => "Ma",
|
||||
"tu" => "Di",
|
||||
"we" => "Wo",
|
||||
"th" => "Do",
|
||||
"fr" => "Vr",
|
||||
"sa" => "Za",
|
||||
"sun" => "Zon",
|
||||
"mon" => "Maa",
|
||||
"tue" => "Din",
|
||||
"wed" => "Woe",
|
||||
"thu" => "Don",
|
||||
"fri" => "Vri",
|
||||
"sat" => "Zat",
|
||||
"sunday" => "Zondag",
|
||||
"monday" => "Maandag",
|
||||
"tuesday" => "Dinsdag",
|
||||
"wednesday" => "Woensdag",
|
||||
"thursday" => "Donderdag",
|
||||
"friday" => "Vrijdag",
|
||||
"saturday" => "Zaterdag",
|
||||
"jan" => "Jan",
|
||||
"feb" => "Feb",
|
||||
"mar" => "Maa",
|
||||
"apr" => "Apr",
|
||||
"may" => "Mei",
|
||||
"jun" => "Jun",
|
||||
"jul" => "Jul",
|
||||
"aug" => "Aug",
|
||||
"sep" => "Sep",
|
||||
"oct" => "Okt",
|
||||
"nov" => "Nov",
|
||||
"dec" => "Dec",
|
||||
"january" => "Januari",
|
||||
"february" => "Februari",
|
||||
"march" => "Maart",
|
||||
"april" => "April",
|
||||
"mayl" => "Mei",
|
||||
"june" => "Juni",
|
||||
"july" => "Juli",
|
||||
"august" => "Augustus",
|
||||
"september" => "September",
|
||||
"october" => "Oktober",
|
||||
"november" => "November",
|
||||
"december" => "December",
|
||||
];
|
||||
@@ -3,18 +3,18 @@
|
||||
return [
|
||||
"address_1" => "Adres 1",
|
||||
"address_2" => "Adres 2",
|
||||
"admin" => "",
|
||||
"admin" => "Beheerder",
|
||||
"city" => "Plaats",
|
||||
"clerk" => "",
|
||||
"clerk" => "Bediende",
|
||||
"close" => "Sluiten",
|
||||
"color" => "",
|
||||
"color" => "Thema-kleuren",
|
||||
"comments" => "Opmerkingen",
|
||||
"common" => "algemeen",
|
||||
"confirm_search" => "U heeft één of meerdere rijen geselecteerd, deze zullen niet langer geselecteerd zijn na uw zoekopdracht. Weet u zeker dat u deze zoekopdracht wilt verzenden?",
|
||||
"copyrights" => "© 2010 - {0}",
|
||||
"correct_errors" => "Geïdentificeerd fouten oplossen voor het opslaan",
|
||||
"country" => "Land",
|
||||
"dashboard" => "",
|
||||
"dashboard" => "Dashboard",
|
||||
"date" => "Datum",
|
||||
"delete" => "Verwijderen",
|
||||
"det" => "details",
|
||||
@@ -26,14 +26,14 @@ return [
|
||||
"export_csv_no" => "Nee",
|
||||
"export_csv_yes" => "Ja",
|
||||
"fields_required_message" => "Rode velden zijn vereist",
|
||||
"fields_required_message_unique" => "",
|
||||
"fields_required_message_unique" => "Rode velden zijn vereist en moeten uniek zijn",
|
||||
"first_name" => "Voornaam",
|
||||
"first_name_required" => "Voornaam is een vereist veld.",
|
||||
"first_page" => "Eerste",
|
||||
"gender" => "Geslacht",
|
||||
"gender_female" => "V",
|
||||
"gender_male" => "M",
|
||||
"gender_undefined" => "",
|
||||
"gender_undefined" => "Ongedefinieerd",
|
||||
"icon" => "Pictogram",
|
||||
"id" => "ID",
|
||||
"import" => "Importeren",
|
||||
@@ -49,20 +49,20 @@ return [
|
||||
"learn_about_project" => "om de laatste informatie over het project te bekijken.",
|
||||
"list_of" => "Lijst van",
|
||||
"logo" => "Logo",
|
||||
"logo_mark" => "",
|
||||
"logo_mark" => "Merk",
|
||||
"logout" => "Afmelden",
|
||||
"manager" => "",
|
||||
"manager" => "Manager",
|
||||
"migration_needed" => "Een databasemigratie naar {0} zal starten na aanmelding.",
|
||||
"new" => "Nieuw",
|
||||
"no" => "",
|
||||
"no" => "Nee",
|
||||
"no_persons_to_display" => "Er zijn geen personen om te weergeven.",
|
||||
"none_selected_text" => "[Selecteren]",
|
||||
"or" => "OF",
|
||||
"people" => "",
|
||||
"people" => "Personen",
|
||||
"phone_number" => "Telefoonnummer",
|
||||
"phone_number_required" => "",
|
||||
"phone_number_required" => "Telefoonnummer is vereist",
|
||||
"please_visit_my" => "Bezoek de",
|
||||
"position" => "",
|
||||
"position" => "Positie",
|
||||
"powered_by" => "Mogelijk gemaakt door",
|
||||
"price" => "Prijs",
|
||||
"print" => "Afdrukken",
|
||||
@@ -73,8 +73,8 @@ return [
|
||||
"search" => "Zoeken",
|
||||
"search_options" => "Zoek opties",
|
||||
"searched_for" => "Gezocht naar",
|
||||
"software_short" => "",
|
||||
"software_title" => "",
|
||||
"software_short" => "OSPOS",
|
||||
"software_title" => "Open Source Point of Sale",
|
||||
"state" => "Provincie",
|
||||
"submit" => "Verzenden",
|
||||
"total_spent" => "Totaal uitgegeven",
|
||||
@@ -83,7 +83,7 @@ return [
|
||||
"website" => "opensourcepos.org",
|
||||
"welcome" => "Welkom",
|
||||
"welcome_message" => "Welkom bij OSPOS, klik op een module hieronder om te beginnen.",
|
||||
"yes" => "",
|
||||
"you_are_using_ospos" => "",
|
||||
"yes" => "Ja",
|
||||
"you_are_using_ospos" => "U gebruikt Open Source Point Of Sale Versie",
|
||||
"zip" => "Postcode",
|
||||
];
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"administrator" => "",
|
||||
"administrator" => "Beheerder",
|
||||
"basic_information" => "Informatie",
|
||||
"cannot_be_deleted" => "Kan geselecteerde werknemer(s) niet verwijderen, één of meerdere bevatten verwerkte verkopen of u probeert uw account te verwijderen.",
|
||||
"change_employee" => "",
|
||||
"change_employee" => "Werknemer wijzigen",
|
||||
"change_password" => "Wachtwoord wijzigen",
|
||||
"clerk" => "",
|
||||
"commission" => "",
|
||||
"clerk" => "Bediende",
|
||||
"commission" => "Commissie",
|
||||
"confirm_delete" => "Weet u zeker dat u de geselecteerde werknemer(s) wilt verwijderen?",
|
||||
"confirm_restore" => "Weet u zeker dat u de geselecteerde werknemer(s) wilt herstellen?",
|
||||
"current_password" => "Huidige wachtwoord",
|
||||
"current_password_invalid" => "Huidige wachtwoord is ongeldig.",
|
||||
"employee" => "Werknemer",
|
||||
"error_adding_updating" => "Werknemer toevoegen of bijwerken mislukt.",
|
||||
"error_deleting_admin" => "",
|
||||
"error_updating_admin" => "",
|
||||
"error_deleting_admin" => "U kunt een beheerder niet verwijderen.",
|
||||
"error_updating_admin" => "U kunt een beheerder niet wijzigen.",
|
||||
"error_deleting_demo_admin" => "Kan de demo admin gebruiker niet verwijderen.",
|
||||
"error_updating_demo_admin" => "Kan de demo admin gebruiker niet wijzigen.",
|
||||
"language" => "Taal",
|
||||
"login_info" => "Aanmelden",
|
||||
"manager" => "",
|
||||
"manager" => "Manager",
|
||||
"new" => "Nieuwe werknemer",
|
||||
"none_selected" => "Geen werknemer(s) geselecteerd om te verwijderen.",
|
||||
"one_or_multiple" => "werknemer(s)",
|
||||
|
||||
@@ -26,7 +26,7 @@ return [
|
||||
"cost_price_required" => "Inkoopprijs is een vereist veld.",
|
||||
"count" => "Voorraad bijwerken",
|
||||
"csv_import_failed" => "CSV importeren mislukt",
|
||||
"csv_import_invalid_location" => "",
|
||||
"csv_import_invalid_location" => "Ongeldige voorraadlocatie(s) gevonden: {0}. Alleen geldige voorraadlocaties zijn toegestaan.",
|
||||
"csv_import_nodata_wrongformat" => "Het geüploade CSV-bestand bevat geen gegevens or heeft de verkeerde indeling.",
|
||||
"csv_import_partially_failed" => "Er zijn {0} artikel import fout(en) in lijn(en): {1}. Geen rijen geïmporteerd.",
|
||||
"csv_import_success" => "Artikel CSV geïmporteerd.",
|
||||
|
||||
@@ -146,4 +146,5 @@ return [
|
||||
"used" => "Punten gebruikt",
|
||||
"work_orders" => "Werkorders",
|
||||
"zero_and_less" => "Nul en minder",
|
||||
"toggle_cost_and_profit" => "Kosten en winst wisselen",
|
||||
];
|
||||
|
||||
@@ -222,4 +222,8 @@ return [
|
||||
"work_order_number_duplicate" => "Werkordernummer moet uniek zijn.",
|
||||
"work_order_sent" => "Werkorder verzonden naar",
|
||||
"work_order_unsent" => "Werkorder niet verzonden naar",
|
||||
"sale_not_found" => "Verkoop niet gevonden",
|
||||
"ubl_invoice" => "UBL-factuur",
|
||||
"download_ubl" => "UBL-factuur downloaden",
|
||||
"ubl_generation_failed" => "Genereren van UBL-factuur mislukt",
|
||||
];
|
||||
|
||||
@@ -3,18 +3,18 @@
|
||||
return [
|
||||
'address_1' => "Endereço",
|
||||
'address_2' => "Complemento",
|
||||
'admin' => "",
|
||||
'admin' => "Administrador",
|
||||
'city' => "Cidade",
|
||||
'clerk' => "",
|
||||
'clerk' => "Funcionário",
|
||||
'close' => "Fechar",
|
||||
'color' => "",
|
||||
'color' => "Cores do tema",
|
||||
'comments' => "Comentários",
|
||||
'common' => "comum",
|
||||
'confirm_search' => "Você selecionou uma ou mais linhas, estes não serão mais selecionados após a sua pesquisa. Tem certeza de que deseja enviar esta pesquisa?",
|
||||
'copyrights' => "© 2010 - {0}",
|
||||
'correct_errors' => "Por favor, corrija os erros identificados antes de salvar",
|
||||
'country' => "País",
|
||||
'dashboard' => "",
|
||||
'dashboard' => "Painel",
|
||||
'date' => "Data",
|
||||
'delete' => "Apagar",
|
||||
'det' => "detalhes",
|
||||
@@ -26,14 +26,14 @@ return [
|
||||
'export_csv_no' => "Não",
|
||||
'export_csv_yes' => "Sim",
|
||||
'fields_required_message' => "Campos em vermelho são obrigatórios",
|
||||
'fields_required_message_unique' => "",
|
||||
'fields_required_message_unique' => "Campos em vermelho são obrigatórios e devem ser únicos",
|
||||
'first_name' => "Nome",
|
||||
'first_name_required' => "O nome é requerido.",
|
||||
'first_page' => "Primeira",
|
||||
'gender' => "Sexo",
|
||||
'gender_female' => "F",
|
||||
'gender_male' => "M",
|
||||
'gender_undefined' => "",
|
||||
'gender_undefined' => "Indefinido",
|
||||
'icon' => "Ícone",
|
||||
'id' => "Id",
|
||||
'import' => "Importar",
|
||||
@@ -51,18 +51,18 @@ return [
|
||||
'logo' => "Logotipo",
|
||||
'logo_mark' => "Símbolo da marca",
|
||||
'logout' => "Sair",
|
||||
'manager' => "",
|
||||
'manager' => "Gerente",
|
||||
'migration_needed' => "Uma migração do banco de dados para {0} será iniciada após o login.",
|
||||
'new' => "Novo",
|
||||
'no' => "nao",
|
||||
'no' => "Não",
|
||||
'no_persons_to_display' => "Não existem pessoas para mostrar.",
|
||||
'none_selected_text' => "Selecione",
|
||||
'or' => "ou",
|
||||
'people' => "",
|
||||
'people' => "Pessoas",
|
||||
'phone_number' => "Telefone",
|
||||
'phone_number_required' => "Número do telefone é requerido",
|
||||
'please_visit_my' => "Para saber mais sobre esta aplicação visite o website do projeto |",
|
||||
'position' => "",
|
||||
'position' => "Posição",
|
||||
'powered_by' => "Desenvolvido por",
|
||||
'price' => "Preço",
|
||||
'print' => "Imprimir",
|
||||
@@ -83,7 +83,7 @@ return [
|
||||
'website' => "opensourcepos.org",
|
||||
'welcome' => "Bem-vindo",
|
||||
'welcome_message' => "Bem-vindo.",
|
||||
'yes' => "sim",
|
||||
'yes' => "Sim",
|
||||
'you_are_using_ospos' => "Você está usando Open Source Point Of Sale Versão",
|
||||
'zip' => "CEP",
|
||||
];
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"administrator" => "",
|
||||
"administrator" => "Administrador",
|
||||
"basic_information" => "Informações do Funcionário",
|
||||
"cannot_be_deleted" => "Não foi possível excluir funcionários selecionados, um ou mais dos funcionários processou vendas ou você está tentando excluir-se :).",
|
||||
"change_employee" => "",
|
||||
"change_employee" => "Alterar Funcionário",
|
||||
"change_password" => "Alterar senha",
|
||||
"clerk" => "",
|
||||
"commission" => "",
|
||||
"clerk" => "Funcionário",
|
||||
"commission" => "Comissão",
|
||||
"confirm_delete" => "Tem certeza de que deseja excluir os funcionários selecionados?",
|
||||
"confirm_restore" => "Tem certeza de que deseja restaurar o (s) empregado (s) selecionado (s)?",
|
||||
"current_password" => "Senha atual",
|
||||
"current_password_invalid" => "Senha atual inválida.",
|
||||
"employee" => "Funcionário",
|
||||
"error_adding_updating" => "Erro ao adicionar/atualizar funcionário.",
|
||||
"error_deleting_admin" => "",
|
||||
"error_updating_admin" => "",
|
||||
"error_deleting_admin" => "Você não pode excluir um usuário administrador.",
|
||||
"error_updating_admin" => "Você não pode modificar um usuário administrador.",
|
||||
"error_deleting_demo_admin" => "Você não pode excluir o usuário administrador de demonstração.",
|
||||
"error_updating_demo_admin" => "Você não pode alterar o usuário de demonstração de administração.",
|
||||
"language" => "Linguagem",
|
||||
"login_info" => "Autenticação",
|
||||
"manager" => "",
|
||||
"manager" => "Gerente",
|
||||
"new" => "Novo Funcionário",
|
||||
"none_selected" => "Você não selecionou nenhum funcionário para excluir.",
|
||||
"one_or_multiple" => "funcionário(s)",
|
||||
|
||||
@@ -26,7 +26,7 @@ return [
|
||||
"cost_price_required" => "Preço de custo é um campo obrigatório.",
|
||||
"count" => "Acrescentar ao Inventário",
|
||||
"csv_import_failed" => "Importação do CSV falhou",
|
||||
"csv_import_invalid_location" => "",
|
||||
"csv_import_invalid_location" => "Local(is) de estoque inválido(s) encontrado(s): {0}. Apenas locais de estoque válidos são permitidos.",
|
||||
"csv_import_nodata_wrongformat" => "Seu arquivo enviado não contém dados ou formato errado.",
|
||||
"csv_import_partially_failed" => "Houve {0} falha na importação de itens na(s) linha(s): {1}. Nenhuma linha foi importada.",
|
||||
"csv_import_success" => "Importação de Itens com sucesso.",
|
||||
|
||||
@@ -146,4 +146,5 @@ return [
|
||||
"used" => "Pontos usados",
|
||||
"work_orders" => "Ordens de trabalho",
|
||||
"zero_and_less" => "Zero e menor",
|
||||
"toggle_cost_and_profit" => "Alternar Custo & Lucro",
|
||||
];
|
||||
|
||||
@@ -222,4 +222,8 @@ return [
|
||||
"work_order_number_duplicate" => "O número da ordem de serviço deve ser exclusivo.",
|
||||
"work_order_sent" => "Ordem de trabalho enviada para",
|
||||
"work_order_unsent" => "A ordem de serviço não foi enviada para",
|
||||
"sale_not_found" => "Venda não encontrada",
|
||||
"ubl_invoice" => "Fatura UBL",
|
||||
"download_ubl" => "Baixar Fatura UBL",
|
||||
"ubl_generation_failed" => "Falha ao gerar fatura UBL",
|
||||
];
|
||||
|
||||
@@ -222,4 +222,5 @@ return [
|
||||
"work_order_number_duplicate" => "Work Order Number must be unique.",
|
||||
"work_order_sent" => "Work Order sent to",
|
||||
"work_order_unsent" => "Work Order failed to be sent to",
|
||||
"sale_not_found" => "விற்பனை காணப்படவில்லை",
|
||||
];
|
||||
|
||||
49
app/Language/tl/Calendar.php
Normal file
49
app/Language/tl/Calendar.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"su" => "ఆ",
|
||||
"mo" => "సో",
|
||||
"tu" => "మం",
|
||||
"we" => "బు",
|
||||
"th" => "గు",
|
||||
"fr" => "శు",
|
||||
"sa" => "శ",
|
||||
"sun" => "ఆది",
|
||||
"mon" => "సోమ",
|
||||
"tue" => "మంగళ",
|
||||
"wed" => "బుధ",
|
||||
"thu" => "గురు",
|
||||
"fri" => "శుక్ర",
|
||||
"sat" => "శని",
|
||||
"sunday" => "ఆదివారం",
|
||||
"monday" => "సోమవారం",
|
||||
"tuesday" => "మంగళవారం",
|
||||
"wednesday" => "బుధవారం",
|
||||
"thursday" => "గురువారం",
|
||||
"friday" => "శుక్రవారం",
|
||||
"saturday" => "శనివారం",
|
||||
"jan" => "జన",
|
||||
"feb" => "ఫిబ్ర",
|
||||
"mar" => "మార్",
|
||||
"apr" => "ఏప్రి",
|
||||
"may" => "మే",
|
||||
"jun" => "జూన్",
|
||||
"jul" => "జూలై",
|
||||
"aug" => "ఆగ",
|
||||
"sep" => "సెప్టెం",
|
||||
"oct" => "అక్టో",
|
||||
"nov" => "నవం",
|
||||
"dec" => "డిసెం",
|
||||
"january" => "జనవరి",
|
||||
"february" => "ఫిబ్రవరి",
|
||||
"march" => "మార్చి",
|
||||
"april" => "ఏప్రిల్",
|
||||
"mayl" => "మే",
|
||||
"june" => "జూన్",
|
||||
"july" => "జూలై",
|
||||
"august" => "ఆగస్టు",
|
||||
"september" => "సెప్టెంబర్",
|
||||
"october" => "అక్టోబర్",
|
||||
"november" => "నవంబర్",
|
||||
"december" => "డిసెంబర్",
|
||||
];
|
||||
49
app/Language/ur/Calendar.php
Normal file
49
app/Language/ur/Calendar.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"su" => "",
|
||||
"mo" => "",
|
||||
"tu" => "",
|
||||
"we" => "",
|
||||
"th" => "",
|
||||
"fr" => "",
|
||||
"sa" => "",
|
||||
"sun" => "",
|
||||
"mon" => "",
|
||||
"tue" => "",
|
||||
"wed" => "",
|
||||
"thu" => "",
|
||||
"fri" => "",
|
||||
"sat" => "",
|
||||
"sunday" => "",
|
||||
"monday" => "",
|
||||
"tuesday" => "",
|
||||
"wednesday" => "",
|
||||
"thursday" => "",
|
||||
"friday" => "",
|
||||
"saturday" => "",
|
||||
"jan" => "",
|
||||
"feb" => "",
|
||||
"mar" => "",
|
||||
"apr" => "",
|
||||
"may" => "",
|
||||
"jun" => "",
|
||||
"jul" => "",
|
||||
"aug" => "",
|
||||
"sep" => "",
|
||||
"oct" => "",
|
||||
"nov" => "",
|
||||
"dec" => "",
|
||||
"january" => "",
|
||||
"february" => "",
|
||||
"march" => "",
|
||||
"april" => "",
|
||||
"mayl" => "",
|
||||
"june" => "",
|
||||
"july" => "",
|
||||
"august" => "",
|
||||
"september" => "",
|
||||
"october" => "",
|
||||
"november" => "",
|
||||
"december" => "",
|
||||
];
|
||||
@@ -222,4 +222,5 @@ return [
|
||||
"work_order_number_duplicate" => "",
|
||||
"work_order_sent" => "",
|
||||
"work_order_unsent" => "",
|
||||
"sale_not_found" => "",
|
||||
];
|
||||
|
||||
@@ -47,7 +47,14 @@
|
||||
</div>
|
||||
<section class="box-login d-flex flex-column justify-content-center align-items-center p-md-4">
|
||||
<?= form_open('login') ?>
|
||||
<h3 class="text-center m-0"><?= lang('Login.welcome', [lang('Common.software_short')]) ?></h3>
|
||||
<?php if (!$is_latest): ?>
|
||||
<h3 class="text-center m-0"><?= lang('Login.migration_required') ?></h3>
|
||||
<div class="alert alert-warning mt-3">
|
||||
<strong><?= lang('Login.migration_auth_message', [$latest_version]) ?></strong>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<h3 class="text-center m-0"><?= lang('Login.welcome', [lang('Common.software_short')]) ?></h3>
|
||||
<?php endif; ?>
|
||||
<?php if ($has_errors): ?>
|
||||
<?php foreach ($validation->getErrors() as $error): ?>
|
||||
<div class="alert alert-danger mt-3">
|
||||
@@ -55,11 +62,6 @@
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
<?php if (!$is_latest): ?>
|
||||
<div class="alert alert-info mt-3">
|
||||
<?= lang('Login.migration_needed', [$latest_version]) ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php if (empty($config['login_form']) || 'floating_labels' == ($config['login_form'])): ?>
|
||||
<div class="form-floating mt-3">
|
||||
<input class="form-control" id="input-username" name="username" type="text" placeholder="<?= lang('Login.username') ?>" <?php if (ENVIRONMENT == "testing") echo 'value="admin"'; ?>>
|
||||
@@ -96,7 +98,9 @@
|
||||
}
|
||||
?>
|
||||
<div class="d-grid">
|
||||
<button class="btn btn-lg btn-primary" name="login-button" type="submit"><?= lang('Login.go') ?></button>
|
||||
<button class="btn btn-lg btn-primary" name="login-button" type="submit">
|
||||
<?= $is_latest ? lang('Login.go') : lang('Module.migrate') ?>
|
||||
</button>
|
||||
</div>
|
||||
<?= form_close() ?>
|
||||
</section>
|
||||
|
||||
@@ -20,7 +20,6 @@ services:
|
||||
networks:
|
||||
- app_net
|
||||
volumes:
|
||||
- ./app/Database/database.sql:/docker-entrypoint-initdb.d/database.sql
|
||||
- mysql:/var/lib/mysql:rw
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=pointofsale
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
include:
|
||||
- docker/docker-mysql.yml
|
||||
|
||||
services:
|
||||
test:
|
||||
build:
|
||||
context: .
|
||||
target: ospos_test
|
||||
depends_on:
|
||||
- mysql
|
||||
container_name: ospos_test
|
||||
environment:
|
||||
- CI_ENVIRONMENT=testing
|
||||
- ENCRYPTION_KEY=
|
||||
- MYSQL_HOST_NAME=mysql
|
||||
- MYSQL_DATABASE=ospos
|
||||
- MYSQL_USERNAME=admin
|
||||
- MYSQL_PASSWORD=pointofsale
|
||||
command: [ "/bin/wait-for-it.sh", "mysql:3306", "--", "/app/vendor/bin/phpunit", "/app/tests" ]
|
||||
ports:
|
||||
- "80:80"
|
||||
@@ -2,9 +2,6 @@ include:
|
||||
- docker/docker-mysql.yml
|
||||
|
||||
services:
|
||||
sqlscript:
|
||||
image: jekkos/opensourcepos:sql-master
|
||||
command: /bin/sh -c 'exit 0'
|
||||
ospos:
|
||||
image: jekkos/opensourcepos:master
|
||||
restart: always
|
||||
|
||||
@@ -19,8 +19,6 @@ services:
|
||||
- "3306"
|
||||
networks:
|
||||
- app_net
|
||||
volumes_from:
|
||||
- sqlscript
|
||||
volumes:
|
||||
- mysql:/var/lib/mysql:rw
|
||||
environment:
|
||||
|
||||
10
gulpfile.js
10
gulpfile.js
@@ -281,13 +281,6 @@ gulp.task('copy-menubar', function() {
|
||||
});
|
||||
|
||||
|
||||
gulp.task('build-database', function() {
|
||||
return gulp.src(['./app/Database/tables.sql','./app/Database/constraints.sql'])
|
||||
.pipe(header('-- >> This file is autogenerated from tables.sql and constraints.sql. Do not modify directly << --'))
|
||||
.pipe(concat('database.sql'))
|
||||
.pipe(gulp.dest('./app/Database'));
|
||||
});
|
||||
|
||||
// Run all required tasks
|
||||
gulp.task('default',
|
||||
gulp.series('clean',
|
||||
@@ -299,6 +292,5 @@ gulp.task('default',
|
||||
'debug-css',
|
||||
'prod-css',
|
||||
'copy-fonts',
|
||||
'copy-menubar',
|
||||
'build-database'
|
||||
'copy-menubar'
|
||||
));
|
||||
|
||||
@@ -41,7 +41,7 @@ class Token_libTest extends CIUnitTestCase
|
||||
{
|
||||
$input = '%Y-%q-%bad';
|
||||
$result = $this->tokenLib->render($input, [], false);
|
||||
$this->assertMatchesRegularExpression('/\d{4}-%q-%bad/', $result);
|
||||
$this->assertMatchesRegularExpression('/\d{4}-%q-[A-Za-z]{3}ad/', $result);
|
||||
}
|
||||
|
||||
public function testRenderHandlesStringWithPercentAPercent(): void
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<phpunit bootstrap = "../vendor/autoload.php"
|
||||
backupGlobals = "false"
|
||||
colors = "true"
|
||||
processIsolation = "false"
|
||||
stopOnFailure = "false">
|
||||
|
||||
<testsuites>
|
||||
<testsuite name="Helpers">
|
||||
<directory>helpers</directory>
|
||||
</testsuite>
|
||||
<testsuite name="Libraries">
|
||||
<directory>Libraries</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
|
||||
</phpunit>
|
||||
Reference in New Issue
Block a user