jeudi 14 octobre 2010

.:: Managerial Finance Software :: Artwork ::.

Visit Flowzr finance software homepage for more information. Flowzr is an intuitive, full-featured finance software that helps you monitor account balances at a glance. It deals with account payable, account receivable, VAT, can also be used to store accounting documents (invoices, receipts, …). Flowzr help you keep an enlightened vision of your finances so you can concentrate on yout real job.








lundi 20 septembre 2010

FLOWZR is the new brand name for project codename Crebits-AAA

FLOWZR deals with bookeeping, accounting (pro-active), managerial finances.

FLOWZR is the new brand name for project codename Crebits-AAA wich is now the property of Direct Raise Sarl. I'm no longer active on the project  Crebits-AAA even if I participated in the intial stage of it's development.

I think it is a very promising software in particular with :
-the ability to attach document such as receipts, bills, invoices with unlimited archive and datastorage.
-the ability to publish receipts and invoices using Google Docs as templates
-the many possible uses in communication, accounting certification, placing,  and death-warrant.
-the power, the possibilities and the warranty offered by the underlying infrastructure (it's pure cloud computing).

More information on FLOWZR's blog

Stay in touch.

About FLOWZR :
FLOWZR is a managerial finance software. It can keep track of your debits and credits. from various kinds of accounts such as bank accounts, cash accounts.

About Direct Raise Ltd. :
Direct Raise Ltd. is a company based in the Kingdom of Morocco which provide long-term process  for companies with strong potential. 

dimanche 22 août 2010

Preview version of Flowzr is available.

Scheduled release of Crebits-AAA is set to September, 21 2010.
This release will be a complete functional version of the finance management software.
Actually I use it to  track expenses and invoices for two different companies in two currencies.
It graphs balances but also debits and credits, by account or by category.
I use it to put watches on scheduled expenses and to anticipate my balances.
It is also useful for tracking allowances I made, by the way preparing the payroll.
Many other usage are possible starting from managing allowance to distributed cash-close or micro-credit industries. 
My bookkeeper is also using it to collect missing informations about transactions I made.
The business model have been set :
" We don't like advertisement.
   We don't believe in setting limits.
   So the 4$US pay-as-you-go subscription includes all features, upgrades and support."
More features information there:  finance, money, check-book, finance,  management software.

dimanche 15 août 2010

Internationalization and Localization under Google App Engine framework

I was thinking about for one or two year before. One month ago I started to code for a new web application. That project have to be available for the biggest number of users. So it have to be in the most scalable architecture. And it have to a got a good internationalization framework (i18n).

So I had to make Locales works (specially date formats), and efficient translation (gettext) works under google app engine.
So in a few word our problematic is how to make efficient localization and internationalization under state of the art MVC framework using python language.
Language ares evolving and each time I code something like the code below I ask me if I am doing the right way :
def dateToLocalizedString(pDt,strFormat):
  return {
  'Y-m-d': str(pDt.year) + '-'  + str(pDt.month) + '/' + str(pDt.day),
  'd/m/Y': str(pDt.day) + '/'  + str(pDt.month) + '/' + str(pDt.year),
  'm/d/Y': str(pDt.month) + '/'  + str(pDt.day) + '/' + str(pDt.year)
}.get(strFormat) 

Topic #1 making i18n works

Google app engine offers to work on an customized version of the Django framework wich is able to handle effective i18n,as described here . Others frameworks exists that can run under Google app engine and do the same :
<title>{% trans "This is the title." %}</title>
I didn't tried to make the upper code work. Also as Google says, "apps must load quickly order to scale in the cloud". That should always have been the case.

While learning app engine technology I rapidly heard that my views in the software have to load quickly. I didn't tried but I guess that it is "CPU costing", possibly in the exact term as far as Google will charge me for CPU usage.
Generate once, runs in every language code ! So I had to use gettext to generate my Django templates. man xgettext told me :
Choice of input file language:
-L, --language=NAME
recognise the specified language (C, C++, ObjectiveC, PO, Shell,
Python,   Lisp,  EmacsLisp,  librep,  Scheme,  Smalltalk,  Java,
JavaProperties,  C#,  awk,  YCP,  Tcl,  Perl,  PHP,  GCC-source,
NXStringTable, RST, Glade)
My goal was to use gettext to generate sort of HTML.
I search the web for project facing the same issue but I didn't found something that correspond to my needs. For reference I'll mention xml2po.py and gnunited .
I found an interresting article about using gettext to generate static files, that put me on the way...

The key idea is to use PHP to generate the Python's templates offline.

An empiric situation suggested me to generate Django templates (HTML-like) and insert PHP code in their. I used a PHP loop (undisclosed) on the development size to generate templates for each languages once and not at each load.

PHP: about 7,670,000,000 results
Python: about 32,100,000 results

Python is the language that let me wrote my cleanest coding for web application. I suggest to use PHP for offline generation of template. Django templates will look like this :
<b><?php echo _("Welcome"); ?> {{user.email}}</b>

|<a href=?action=index><?php echo _("Home"); ?></a>
|<a href={{user.logout_url}}><?php echo _("Sign out"); ?></a>

Templates are generated in different directories and called like this :
payload = dict(user=main.user,etcs=etcs)
template_file = os.path.join(os.path.dirname(__file__),
'../tpl/' + main.user.defaultLang +'/tpl.html')
main.response.out.write(template.render(template_file, payload))
Note that main is called from myApp.py as described in app.yaml and in my case main.user is a model in the datastore terms.

Topic #2 Formating date format

To make the app engine work I did like described by Yu-Jie Lin (livibetter) in it's tutorial Using Django's I18N in Google App Engine.
We use the Django templates to do the work, using the |date argument in Django template, then the Google app engine framework will do the rest as based on version 0.96 of Django that can handle this.
Using the |date argument in Django template, like this :
<input type="text" id="sampleDate"
name="sampleDate" value="{{myobject.sampleDate|date}}" size="9">
To make the app engine work I did like described by Yu-Jie Lin (livibetter) at in it's (very good) tutorial Using Django's I18N in Google App Engine. Our main.py or whatever I have referenced in app.yaml looks like this :
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
from google.appengine.ext.webapp import template
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'myApp.settings'
from django.conf import settings

# Force Django to reload settings
settings._target = None
from google.appengine.ext import webapp
from django.utils import translation
from crebits.util import Cookies
#There where other imports cutted for sample .

class MainPage(webapp.RequestHandler):
#MEMCACHABLE
def get_myAppUser(self):
  #So you can edit only logged users.
  user = users.get_current_user()
  if user:
    query = db.GqlQuery("SELECT * FROM myAppUser where email=:1",
                        user.email())
  myAppUsers=query.fetch(1)
  user_exist=False
  for myAppUser in myAppUsers:
    myAppUser.defaultJsDateFormat=myAppUser
                      .gotHookToHandleJSFormat()
    user_exist=True
    if user_exist !=True:
      myAppUser=models.myAppUser()
    myAppUser.email=user.email()
    myAppUser.defaultCurrency="USD"
    myAppUser.defaultDateFormat="m/d/y"
    myAppUser.put()
  return myAppUser

def initialize(self, request, response):
  self.user = self.get_myAppUser()
  if self.user:
     self.user.logout_url = users.create_logout_url("/")
  self.request=request
  self.response=response
  request.COOKIES = Cookies(self)
  request.META = os.environ
  self.reset_language(request, response)
  webapp.RequestHandler.initialize(self, request, response)

def reset_language(self, request, response):
 language = translation.get_language_from_request(request)
 if self.user.defaultCutOff==None:
   self.user.defaultLang=language
 translation.activate(language)
 request.LANGUAGE_CODE = translation.get_language()
 settings.DATE_FORMAT=self.user.defaultDateFormat
 # Set headers in response
 response.headers['Content-Language'] = translation.get_language()
 translation.deactivate()

#-------------------
# Main post handler
#-------------------
def post(self):
  user = users.get_current_user()
  if user:
    (user.email(), users.create_logout_url("/")))
#---------------------------------------------------------------
# Main authentified controler switch action param (post method)
#---------------------------------------------------------------
   {
   'index': views.index,
   'index2': views.index2
   }.get(self.request.get('action'),views.index)(self)
 else:
   self.redirect(users.create_login_url(self.request.uri))

application = webapp.WSGIApplication([
('/.*', MainPage)

],
debug=True)
def main():
run_wsgi_app(application)

if __name__ == "__main__":
main()

Conclusion

I dont think it's a new idea as far as you can see things like this with in many softwares open source projects, that templates templates such as torque for example. But I think it's the less CPU costing and also the easiest way to make i18n under the app engine.
It is possible that, as some loading of the Django i18n framework is made for the date localization part of the problematic is dooming the expected gain while generating internationalized offline.
Please tell me throught comments.
Best Regards.

Additional references: Entropy (provide php-cli with gettext support on MacOSX) , gettext tutorial, gettext manual .

mercredi 17 février 2010

Agent de centre d'appel: travail stressant?

La plupart des entreprises conçoivent la relation client comme centrale. Les développement technologiques comme ceux des technologies de l'information et de la communication (TIC) viennent amplifier ces stratégies. Le processus de rationalisation résulte souvent, dans une dynamique "taylorienne", à la décision de spécialiser la production de service. Il en résulte la création de départements spécialistes dans la relation client. Ce sont les centres de contact, les centres d'appel.
La relation client est un processus de communication. C'est un processus qui provoque une multitude de stimulations, une multitude de d'analyses et une multitude d'adaptations. C'est pourquoi dire que les centres d'appel sont les nouvelles usines "tayloriennes" est une généralisation injuste, une simplification exagérée. Les centres d'appels sont le résultat d'un processus moderne de rationalisation, mais cela ne veut pas dire que les agents de centres d'appel n'ont aucune latitude dans leur travail, peu de contrôle sur ce qu'ils doivent faire ( même si c'est peut être vrai dans certains cas).

Une exigence spécifique pour les agents de centres d'appel est d'avoir une une compréhension émotionnelle des clients, des prospects.
Il y a une exigence d'empathie importante. L'empathie des agents de centres d'appel prend la forme d'une attention individuelle que l'entreprise porte à ses clients (Dorman, Fred,2003). Il y a donc une exigence spécifique sur les employés qui fait que travailler dans un centre d'appel serait un métier particulièrement stressant. La particularité contextuelle de la relation client a un impact important sur le métier d'agent de centre d'appel.
Pour comprendre le centre d'appel comme un système, il faut faire appel à la notion de travail émotionnel. Les employés sont rémunérés par l'entreprise pour afficher des émotions (généralement positive) des clients qui ne sont pas forcement les émotions correspondant à des sentiments personnel effectifs. Les agents de centre d'appel doivent montrer qu'il sont content de parler aux prospects. Ils doivent en permanence avoir des propos amicaux et sembler s'intéresser aux besoins, aux souhaits, aux but des clients. Cette dimension d'empathie est parfois nommée "sourire au téléphone". On parle également de travail émotionnel (emotionnal labour). Lewig et Dollar ont démontrés empiriquement que le travail émotionnel avait un impact négatif sur la sante des agents de centre d'appel (Lewig, Dollar, 2003).
En plus de absentéisme et le turn­over, le travail émotionnel entraine d'autres symptômes de stress. On peut observer assez fréquemment une forte émotivité. Celle ci pouvant aller de la simple excitation jusqu'aux pleurs. Il peut y avoir sur le lieu de travail des pertes de connaissances, ou des disputes. Les ruptures de contrats peuvent être alors ressenties comme des séparations par les agents impliqués.
Il existe de nombreuse études qui ont démontrable que les centres d'appel ont un turn­ over important. Alors que les centre d'appel en tant que entité spécialisée doivent entrainer une réduction des cout, cette économie est limitée par le cout du turn­over. Ce turn­over suggère que travailler dans un centre d'appel n'est pas facile.
La charge de travail, la pression comme stress ne sont pas forcement plus importante que ailleurs (Zapf, 2003). Il existe une pluralité de sources de stress dans le travail d'agent de centre d'appel. Parmi les facteurs de stress importants, les trois aspects les plus fréquemment cites sont : ­la demande de mobilisation cérébrale pour la parole permanente qui entraine une fatigue nerveuse, voire musculaire. ­le faible degré d'enrichissement du travail.
­la dissonance émotionnelle. L'exigence, cruciale, impose par le management de positivité permanente1 est un facteur de stress fort. Elle implique une adaptation permanente qui peut être inclue dans dans la définition du stress de Seyle : "Le stress correspond à un ensemble de mécanismes d’adaptation de l’organisme humain, mécanismes produits en réponse aux différentes forces qui s’exercent sur cet organisme face à une situation donnée".
Ces trois aspects se combinent. Ainsi la fatigue de tout travail vient amplifier l'impact négatif de la dissonance émotionnelle. Le faible degré d'enrichissement du travail augmente la fatigue, etc, ...
Si la vocation des centres d'appel est de limiter les couts par une spécialisation de activité, il y a des opportunités de développement a rechercher dans amélioration des conditions de travail, en particulier en terme d'enrichissement du travail. En attendant, si le centre d'appel est un lieu riche en technologie, il est surtout un lieu, riche en émotion.

travaux cités :

Dormann, Christian, and Fred R. H. Zijlstra.. "Call centres: High on technology­­high on emotions." European Journal of Work & Organizational Psychology 12.4 (Dec. 2003): 305­310. Business Source Complete. EBSCO. [Library name], [City], [State abbreviation]. 20 Dec. 2008 .

Lewig, K. A., and M. F. Dollard.. "Emotional dissonance, emotional exhaustion and job satisfaction in call centre workers." European Journal of Work & Organizational Psychology 12.4 (Dec. 2003): 366­392. Business Source Complete. EBSCO. [Library name], [City], [State abbreviation]. 7 Mar. 2009 .

Zapf, Dieter, et al. "What is typical for call centre jobs? Job characteristics, and service interactions in different call centres."European Journal of Work & Organizational Psychology 12.4 (Dec. 2003): 311­340. Business Source Complete. EBSCO. [Library name], [City], [State abbreviation]. 20 Dec. 2008 .

1 Dans un centre d'appel , en annexe au règlement intérieur nous imposons comme règles du jeu parmi d'autre, la règle numérotée 4 : pensées positives permanentes. Le management est sollicitée à maintenir cette exigence.

dimanche 14 février 2010

Les cinq pôles d'installation

En installant un projet j'ai travaillé de la façon suivante :

1 Les cinq pôles d'installation d'une opération :
-Ingénierie commerciale
-Apprentissage du savoir-faire commercial
-Ingénierie mise en place processus
-Apprentissage des nouveaux processus, feed-back
-Intégration Internet

2 Contrainte à appliquer :
-organisation en processus
-évolutivité de la solution

3 Liste des facteurs de risques.