ospos/DESARROLLO.md

9.7 KiB

Como comenzar

===========================

Este documento le indicara instrucciones de como comenzar desarrollar y que usar en este proyecto

Como comenzar a trabajar


Crear un directorio Devel en home, cambiarse a este y alli clonar el repo, iniciar y arrancar el editor Geany.

Todo esto se explica en detalle a continuacion por partes

1 Requisitos para trabajar

Si instala todo lo aqui espuesto tendra ya todo para instalacion de el osposweb:

  • git (manejador de repositorio y proyecto) apt-get install git git-core giggle
  • mysql (manejador y servidor DB que hara de pivote) apt-get install mysql-client mysql-server mysql-workbench
  • php5, gd, mcrypt, mysql, curl, xml, intl (php y modulos de uso) apt-get isntall php5-mysql php5-mcrypt php5-curl php5-gd php5-intl
  • php7, gd, mcrypt, mysql, curl, xml, intl (para caso distros nuevas) apt-get isntall php-mysql php-mcrypt php-curl php-gd php-intl
  • apache2 (servidor web usar lastimosamente) apt-get install libapache2-mod-php5 apache2-bin apache2
  • geany (editor para manejo php asi como ver el preview) apt-get install geany geany-plugin-webhelper geany-plugin-addons
  • composer, wget, etc (paquete extra necesarios) apt-get install wget phpmyadmin php-pear geany-plugin-treebrowser

2 Configurar tu entorno

configura el usuario git y coloca un enlace en la raiz del webserver a Devel para usar el proyecto:

git config --global status.submoduleSummary true
git config --global diff.submodule log
git config --global fetch.recurseSubmodules on-demand
git config --global user.email apellido_nombre@correo
su
mv -f /var/www/html /var/www/html-old
ln -s /home/systemas/Devel/osposweb /var/www/html
chown -R systemas:www-data /home/systemas/Devel/osposweb

Asumiendo que su usuario es systemas y su raiz de paginas apache2/webserver es en /var/www/html

3 clonar las fuentes

Se usa git para tener las fuentes y se arranca el ide geany para condificar, como usuario:

mkdir -p ~/Devel
cd Devel
git clone --recursive https://gitlab.com/osposweb/osposweb.git
cd osposweb
git checkout -b osposweb-osposweb origin/osposweb-osposweb
git checkout osposweb-osposweb
git pull
git submodule init
git submodule update --rebase
git submodule foreach git checkout master
git submodule foreach git pull

Asumiendo que se usara el repo de gitlab como principal el cua permite ramas y cosas privadas y protegidas.

Ramas y branches

Git permite ramas, osposweb tiene 3 principales:

  • osposweb-oficial: la rama inestable, es un clon directo de opensourcepos/opensourcepos sin cambios, dado cualquier commit hecho por los desarrolladores puede causar nuevos problemas.
  • osposweb-osposweb: es rama pruebas, toma los cambios de la fama oficial para probarlos despues de realilzar cambios, aqui tambien se aplican los desarrollos propios.
  • osposweb-producto: es la rama que se despliega en sitios de produccion y se le mete commits a veces desde las otras ramas.

4 Cargar en Geany y ver en web

  • abrir el geany
    • ir a menu->herramientas->admincomplementos
    • activar webhelper(ayudante web), treebrowser(visor de arbol) y addons(añadidos extras)
    • aceptar y probar el visor web que se recarga solo abajo en la ultima pestaña de las de abajo
  • crear un proyecto nuevo en geany, asumiendo "systemas" como su usuario:
    • nombre osposweb
    • archivo: /home/systemas/Devel/osposweb/osposweb.geany
    • ruta base /home/systemas/Devel/osposweb/
    • pulsat crear y los archivos y la raiz aparecera al lado
  • cargar abajo en la ultima pestaña de webpreview la ruta http://127.0.0.1/Devel/ y visitar el proyecto
    • en la listado seleccionar el proyecto o el directorio osposweb
    • instalar el osposweb sino esta aun instalado, esto es carga la db y se recarga solo

NOTA en cada cambio el webhelper del geany recarga la pagina solo para ver los cambios

Para la instalacion detallada usar INSTALL.md

Estructura de desarrollo

===========================

El sistema central tiene una interfaz web, construida con PHP/codeigniter, y una db con MySQL.

Modelo de datos y base de datos

El archivo osposweb-modelodb.png contiene el modelo, en imagen, los scripts SQL, en el proyecto original se generan de partes individuales, hacia un archvio unico database.sql en el directorio database, adicional estan los scripts con sufijos "_rd" y "_alm" que son impelmentacion kit fiscal y adecuacion para solo funcionamiento de almacen y ventas a gran escala.

  • base de datos MySQL/MariaDB, debe ser 5.5 o 5.6 minimo.
  • llave primaria es id_<algo> en caso detalle la separacion de nombretabla por _ se omite
  • no hay llaves foraneas, permitiendo la manipulacion de los datos para modularizacion y flexibilidad

Codigo y fuentes

El codigo fuente del sistema, se trabajara SQL y PHP con framework codeigniter3 y se maneja con GIT, abajo se describe cada uno y como comenzar de ultimo.

Querys SQL

  • No usar TOP X ni algun otro SQL, si usase, encapsular dentro de procedimientos almacenados (sybase/mssql)
  • COALESCE = IFNULL ya que actua distinto, se debe usar COALESCE que verifica null
  • GROUPO_CONCAT es solo mysql realiza referencia cruzada, pero no funciona en columnas de igual nombre

Codigo PHP

Se emplea Codeigniter 3, se describe mas abajo como iniciar el codigo, se describe como funciona aqui:

  • application/controllers cada archivo representa una llamada web y determina que se mostrara
  • application/views aqui se puede separar la presentacion de los datos desde el controller
  • application/libraries toma los datos y los amasa, moldea y manipula para usarse al momento o temporal
  • application/models toma los datos y los amasa, modea y prepara para ser presentados o guardados

Como trabajar con git

El repositorio principal "osposweb" contiene adentro el de codeingiter, de esta forma si se actualiza, si tiene contenido nuevo, hay que primero traerlo al principal, y despues actualizar la referencia de esta marca, entonces el repositorio principal tendra los cambios marcados.

mkdir  ~/Devel 
git clone https://gitlab.com/webvnz/osposweb.git
cd osposweb

IMPORTANTE el desarrollo original usa composer y nodejs, para obtener las dependencias y demas yerbas.. este modelo es muy fastidioso porque si una de esas cambia, el resto hay que alterarlo, el modelo actual no intenta cambiar una dependencia que ya funciona, se intentara estancar el desarrollo.

Una vez clonado, para el git en las ramas osposweb-ext<xxx> (sinedo xxx cualqeuir nombre) es basicamente tomar, cambiar agregar y subir:

echo "actualizo porsi alguien subio cosas nuevas"
git pull
echo "edito o hago cambios en mi clon del repo localmente"
editor archivo.nuevo # (o abres el geany aqui y trabajas)
echo "agrego esto como marcado para el commit y ser subido"
git add <archivo.nuevo>
echo "hago un commit y adiciono comentario con descripcion de que hice (resumida y consisa pero descriptiva)"
git commit -a -m 'actualizado el repo adicionado <archivo.nuevo> modificaciones'
echo "realizo push para subir a remoto y otros se sincronizen"
git push

En la sucesion de comandos se trajo todo trabajo realizado, y actualiza "su marca" en el principal, despues que tiene todo a lo ultimo se editar un archivo nuevo y se acomete

NOTA Geany debe tener los plugins addons y filetree cargados y activados

Como probar en un servidor remoto

Esto es usando git:

  1. herramientas necesitar en ambos lados (servidor remoto y maquina local):
apt-get install git apache2 mariadb-server phpmyadmin php5 php5-cgi php5-mcrypt php5-curl php5-mysql php5-xsl php5-xmlrcp

al instalar recordar la clave de mysql, entrar en http://10.58.248.1/phpmyadmin y con root con esa clave.

sino entonces:

CREATE USER 'osposweb'@'localhost' IDENTIFIED BY '***';
GRANT USAGE ON *.* TO 'osposweb'@'localhost' IDENTIFIED BY '***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

CREATE DATABASE IF NOT EXISTS `osposweb`;
CREATE DATABASE IF NOT EXISTS `osposweb32sync`;
GRANT ALL PRIVILEGES ON `osposweb`.* TO 'osposweb'@'localhost';
GRANT ALL PRIVILEGES ON `osposweb\_%`.* TO 'osposweb'@'localhost';
GRANT ALL PRIVILEGES ON `osposweb32async`.* TO 'osposweb'@'localhost'WITH GRANT OPTION;

Recordar el nombre de la db osposweb32sync pues se usara una por rama

  1. herramientas necesarias en la maquina local
apt-get install mysql-workbench geany geany-plugins giggle openssh-client
  1. subir los archivos o en realidad ponerlos en el server, se usa a un repo git como hombre en el medio:
ssh -i archivo.pem admin@13.58.248.1
sudo su
cd /opt
git clone https://gitlab.com/osposweb/osposweb.git /opt/osposweb32async
cd /opt/osposweb32async
git checkout -b osposweb-syncapi32 origin/osposweb-syncapi32
  1. configurar la instalacion de osposweb con el usuario y la db citada, y listo ya esta todo remoto

como actuallizar los cambios en el server

Facil, simple entre en el git y git pull