Order tab - tecla tab

Carlos Edurado Sotelo Pinto csotelop en yahoo.es
Lun Ene 3 15:50:52 CET 2005


Este es mi codigo fuente, por favor si pueden revisralo, ya que no 
funciona los order tab, que puse en la propuiedad de stylo
wxTE_PROCESS_TAB, por favor chequeenlo y diganme por que no funciona los 
order tab


#-----------------------------------------------------------------------------
# Name:        frm2110.py
# Purpose:     Formulario de Ingreso y Edicion de Contratos
#
# Author:      Carlos Eduardo Sotelo Pinto
#
# Created:     2004/11/20
# Updated:     2004/12/28
# RCS-ID:      $Id: frm2110.py $
# Copyright:   (c) 2004 Asociacion Civil San Juan Bautista
# Licence:     GPL
# New field:   Whatever
#-----------------------------------------------------------------------------
#Boa:MDIChild:frm2110

from wxPython.wx import *
from bussines.config import TEA, DOLAR, TEAS
def create(parent):
    return frm2110(parent)

[wxID_FRM2110, wxID_FRM2110BTNADVISERSCLEAR, wxID_FRM2110BTNCLEARCONTRACT,
 wxID_FRM2110BTNCONTRACTEND, wxID_FRM2110BTNCONTRACTSEEKER,
 wxID_FRM2110BTNDISCOUNTADD, wxID_FRM2110BTNFALLGENERATE,
 wxID_FRM2110BTNNOTVENDOR, wxID_FRM2110BTNPRODUCTADD,
 wxID_FRM2110BTNPRODUCTCLEAR, wxID_FRM2110BTNPRODUCTGENERATE,
 wxID_FRM2110BTNSAVERECORD, wxID_FRM2110BTNVENDORADD,
 wxID_FRM2110CHCCONTRACTHASGROUPHASRESOURCES, wxID_FRM2110CHCDPERCENT,
 wxID_FRM2110CHCFALLS, wxID_FRM2110CHCGROUPS, wxID_FRM2110CHCPERCENT,
 wxID_FRM2110CHCPLAN, wxID_FRM2110CHCPRODUCTS, wxID_FRM2110CHCRESOURCES,
 wxID_FRM2110CHKCHOICED, wxID_FRM2110CHKPAYMODE, wxID_FRM2110CHKRISK,
 wxID_FRM2110LSTADVISERS, wxID_FRM2110LSTDISCOUNTS, 
wxID_FRM2110LSTPRODUCTS,
 wxID_FRM2110STATICBOX1, wxID_FRM2110STATICBOX2, wxID_FRM2110STATICBOX3,
 wxID_FRM2110STATICBOX4, wxID_FRM2110STATICBOX5, wxID_FRM2110STATICTEXT1,
 wxID_FRM2110STATICTEXT10, wxID_FRM2110STATICTEXT11, 
wxID_FRM2110STATICTEXT12,
 wxID_FRM2110STATICTEXT13, wxID_FRM2110STATICTEXT2, 
wxID_FRM2110STATICTEXT3,
 wxID_FRM2110STATICTEXT4, wxID_FRM2110STATICTEXT5, wxID_FRM2110STATICTEXT6,
 wxID_FRM2110STATICTEXT7, wxID_FRM2110STATICTEXT8, wxID_FRM2110STATICTEXT9,
 wxID_FRM2110STCCONTRACT, wxID_FRM2110STCFALL, wxID_FRM2110STCRESOURCES,
 wxID_FRM2110TXTCONTRACTNUMBER, wxID_FRM2110TXTCONTRACTTOTAL,
 wxID_FRM2110TXTDPAY, wxID_FRM2110TXTFALLTOTAL, wxID_FRM2110TXTINITIAL,
 wxID_FRM2110TXTINITIALX, wxID_FRM2110TXTMPROM, wxID_FRM2110TXTNUMPRODUCTS,
 wxID_FRM2110TXTPRODUCTTOTAL, wxID_FRM2110TXTPROM, wxID_FRM2110TXTQUOT,
 wxID_FRM2110TXTQUOTS, wxID_FRM2110TXTSALD, wxID_FRM2110TXTTITULAR,
 wxID_FRM2110TXTTOTAL,
] = map(lambda _init_ctrls: wxNewId(), range(63))

class frm2110(wxMDIChildFrame):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wxMDIChildFrame.__init__(self, id=wxID_FRM2110, name='frm2110',
              parent=prnt, pos=wxPoint(221, 67), size=wxSize(601, 467),
              style=wxDEFAULT_FRAME_STYLE, title='Ingreso de Contratos')
        self.SetClientSize(wxSize(593, 440))
        EVT_ACTIVATE(self, self.OnFrm2110Activate)

        self.txtContractNumber = 
wxTextCtrl(id=wxID_FRM2110TXTCONTRACTNUMBER,
              name='txtContractNumber', parent=self, pos=wxPoint(16, 24),
              size=wxSize(80, 21), style=0, value='0')

        self.btnContractSeeker = wxButton(id=wxID_FRM2110BTNCONTRACTSEEKER,
              label='Buscar', name='btnContractSeeker', parent=self,
              pos=wxPoint(104, 24), size=wxSize(75, 23), style=0)

        self.chcPlan = wxChoice(choices=[], id=wxID_FRM2110CHCPLAN,
              name='chcPlan', parent=self, pos=wxPoint(200, 24),
              size=wxSize(128, 21),
              style=wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB)
        EVT_CHOICE(self.chcPlan, wxID_FRM2110CHCPLAN, self.OnChcPlanChoice)

        self.chcPercent = wxChoice(choices=['10', '20', '30', '40', 
'50', '60',
              '70', '80', '90', '100'], id=wxID_FRM2110CHCPERCENT,
              name='chcPercent', parent=self, pos=wxPoint(504, 72),
              size=wxSize(72, 21), style=0)
        self.chcPercent.SetStringSelection('100')

        self.btnVendorAdd = wxButton(id=wxID_FRM2110BTNVENDORADD,
              label='Agregar', name='btnVendorAdd', parent=self,
              pos=wxPoint(504, 24), size=wxSize(72, 23), style=0)
        EVT_BUTTON(self.btnVendorAdd, wxID_FRM2110BTNVENDORADD,
              self.OnBtnVendorAddButton)

        self.chcContractHasGroupHasResources = wxChoice(choices=[],
              id=wxID_FRM2110CHCCONTRACTHASGROUPHASRESOURCES,
              name='chcContractHasGroupHasResources', parent=self,
              pos=wxPoint(352, 24), size=wxSize(144, 21),
              style=wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB)

        self.lstAdvisers = wxListBox(choices=[], id=wxID_FRM2110LSTADVISERS,
              name='lstAdvisers', parent=self, pos=wxPoint(352, 72),
              size=wxSize(144, 48), style=0)

        self.stcContract = wxStaticBox(id=wxID_FRM2110STCCONTRACT,
              label='Contrato', name='stcContract', parent=self, 
pos=wxPoint(8,
              8), size=wxSize(328, 72), style=0)

        self.stcResources = wxStaticBox(id=wxID_FRM2110STCRESOURCES,
              label='Consejero', name='stcResources', parent=self,
              pos=wxPoint(344, 8), size=wxSize(240, 120), style=0)

        self.stcFall = wxStaticBox(id=wxID_FRM2110STCFALL, label='Tumba',
              name='stcFall', parent=self, pos=wxPoint(344, 128),
              size=wxSize(240, 160), style=0)

        self.chcFalls = wxChoice(choices=[], id=wxID_FRM2110CHCFALLS,
              name='chcFalls', parent=self, pos=wxPoint(352, 144),
              size=wxSize(224, 21),
              style=wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB)
        EVT_CHOICE(self.chcFalls, wxID_FRM2110CHCFALLS, 
self.OnChcFallsChoice)

        self.btnDiscountAdd = wxButton(id=wxID_FRM2110BTNDISCOUNTADD,
              label='Agregar', name='btnDiscountAdd', parent=self,
              pos=wxPoint(504, 224), size=wxSize(72, 23), style=0)
        EVT_BUTTON(self.btnDiscountAdd, wxID_FRM2110BTNDISCOUNTADD,
              self.OnBtnDiscountAddButton)

        self.lstDiscounts = wxListBox(choices=[], 
id=wxID_FRM2110LSTDISCOUNTS,
              name='lstDiscounts', parent=self, pos=wxPoint(352, 224),
              size=wxSize(144, 56), style=0)

        self.txtFallTotal = wxTextCtrl(id=wxID_FRM2110TXTFALLTOTAL,
              name='txtFallTotal', parent=self, pos=wxPoint(88, 232),
              size=wxSize(72, 21), style=0, value='0')
        EVT_TEXT(self.txtFallTotal, wxID_FRM2110TXTFALLTOTAL,
              self.OnTxtFallTotalText)

        self.staticBox1 = wxStaticBox(id=wxID_FRM2110STATICBOX1, 
label='Anexo',
              name='staticBox1', parent=self, pos=wxPoint(8, 80),
              size=wxSize(328, 136), style=0)

        self.chcGroups = wxChoice(choices=[], id=wxID_FRM2110CHCGROUPS,
              name='chcGroups', parent=self, pos=wxPoint(200, 48),
              size=wxSize(128, 21),
              style=wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB)
        EVT_CHOICE(self.chcGroups, wxID_FRM2110CHCGROUPS,
              self.OnChcGroupsChoice)

        self.txtTitular = wxTextCtrl(id=wxID_FRM2110TXTTITULAR,
              name='txtTitular', parent=self, pos=wxPoint(88, 96),
              size=wxSize(240, 21), style=wxTE_PROCESS_ENTER | 
wxTE_PROCESS_TAB,
              value='')
        self.txtTitular.SetMaxLength(80)

        self.staticText1 = wxStaticText(id=wxID_FRM2110STATICTEXT1,
              label='Titular', name='staticText1', parent=self, 
pos=wxPoint(16,
              104), size=wxSize(29, 13), style=0)

        self.txtProm = wxTextCtrl(id=wxID_FRM2110TXTPROM, name='txtProm',
              parent=self, pos=wxPoint(88, 128), size=wxSize(160, 21),
              style=wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB, value='')

        self.txtMProm = wxTextCtrl(id=wxID_FRM2110TXTMPROM, name='txtMProm',
              parent=self, pos=wxPoint(256, 128), size=wxSize(72, 21),
              style=wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB, value='0')

        self.chkChoiced = wxCheckBox(id=wxID_FRM2110CHKCHOICED,
              label='Escogido', name='chkChoiced', parent=self, 
pos=wxPoint(504,
              176), size=wxSize(73, 13),
              style=wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB)
        self.chkChoiced.SetValue(False)

        self.staticBox2 = wxStaticBox(id=wxID_FRM2110STATICBOX2,
              label='Productos', name='staticBox2', parent=self,
              pos=wxPoint(344, 288), size=wxSize(240, 144), style=0)

        self.chcProducts = wxChoice(choices=[], id=wxID_FRM2110CHCPRODUCTS,
              name='chcProducts', parent=self, pos=wxPoint(352, 304),
              size=wxSize(144, 21), style=0)

        self.btnProductAdd = wxButton(id=wxID_FRM2110BTNPRODUCTADD,
              label='Agregar', name='btnProductAdd', parent=self,
              pos=wxPoint(504, 336), size=wxSize(72, 23), style=0)
        EVT_BUTTON(self.btnProductAdd, wxID_FRM2110BTNPRODUCTADD,
              self.OnBtnProductAddButton)

        self.lstProducts = wxListBox(choices=[], id=wxID_FRM2110LSTPRODUCTS,
              name='lstProducts', parent=self, pos=wxPoint(352, 328),
              size=wxSize(144, 96), style=0)

        self.btnProductClear = wxButton(id=wxID_FRM2110BTNPRODUCTCLEAR,
              label='Limpiar', name='btnProductClear', parent=self,
              pos=wxPoint(504, 368), size=wxSize(72, 23), style=0)
        EVT_BUTTON(self.btnProductClear, wxID_FRM2110BTNPRODUCTCLEAR,
              self.OnBtnProductClearButton)

        self.btnProductGenerate = 
wxButton(id=wxID_FRM2110BTNPRODUCTGENERATE,
              label='Totalizar', name='btnProductGenerate', parent=self,
              pos=wxPoint(504, 400), size=wxSize(72, 23), style=0)
        EVT_BUTTON(self.btnProductGenerate, wxID_FRM2110BTNPRODUCTGENERATE,
              self.OnBtnProductGenerateButton)

        self.txtProductTotal = wxTextCtrl(id=wxID_FRM2110TXTPRODUCTTOTAL,
              name='txtProductTotal', parent=self, pos=wxPoint(88, 256),
              size=wxSize(72, 21), style=0, value='0')
        EVT_TEXT(self.txtProductTotal, wxID_FRM2110TXTPRODUCTTOTAL,
              self.OnTxtProductTotalText)

        self.staticBox3 = wxStaticBox(id=wxID_FRM2110STATICBOX3,
              label='Financiamiento', name='staticBox3', parent=self,
              pos=wxPoint(176, 216), size=wxSize(160, 168), style=0)

        self.staticBox4 = wxStaticBox(id=wxID_FRM2110STATICBOX4,
              label='Totales', name='staticBox4', parent=self, 
pos=wxPoint(8,
              216), size=wxSize(160, 168), style=0)

        self.staticText4 = wxStaticText(id=wxID_FRM2110STATICTEXT4,
              label='Tumba', name='staticText4', parent=self, 
pos=wxPoint(16,
              240), size=wxSize(33, 13), style=0)

        self.staticText5 = wxStaticText(id=wxID_FRM2110STATICTEXT5,
              label='Productos', name='staticText5', parent=self,
              pos=wxPoint(16, 264), size=wxSize(48, 13), style=0)

        self.txtContractTotal = wxTextCtrl(id=wxID_FRM2110TXTCONTRACTTOTAL,
              name='txtContractTotal', parent=self, pos=wxPoint(88, 280),
              size=wxSize(72, 21), style=0, value='0')

        self.txtInitial = wxTextCtrl(id=wxID_FRM2110TXTINITIAL,
              name='txtInitial', parent=self, pos=wxPoint(256, 232),
              size=wxSize(72, 21), style=wxTE_PROCESS_ENTER | 
wxTE_PROCESS_TAB,
              value='0')

        self.txtSald = wxTextCtrl(id=wxID_FRM2110TXTSALD, name='txtSald',
              parent=self, pos=wxPoint(256, 280), size=wxSize(72, 21),
              style=wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB, value='0')

        self.txtQuots = wxTextCtrl(id=wxID_FRM2110TXTQUOTS, name='txtQuots',
              parent=self, pos=wxPoint(256, 304), size=wxSize(72, 21),
              style=wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB, value='0')

        self.txtQuot = wxTextCtrl(id=wxID_FRM2110TXTQUOT, name='txtQuot',
              parent=self, pos=wxPoint(256, 328), size=wxSize(72, 21),
              style=wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB, value='0')

        self.staticBox5 = wxStaticBox(id=wxID_FRM2110STATICBOX5, label='',
              name='staticBox5', parent=self, pos=wxPoint(8, 384),
              size=wxSize(328, 48), style=0)

        self.btnSaveRecord = wxButton(id=wxID_FRM2110BTNSAVERECORD,
              label='Grabar', name='btnSaveRecord', parent=self,
              pos=wxPoint(136, 400), size=wxSize(75, 23), style=0)
        EVT_BUTTON(self.btnSaveRecord, wxID_FRM2110BTNSAVERECORD,
              self.OnBtnSaveRecordButton)

        self.btnContractEnd = wxButton(id=wxID_FRM2110BTNCONTRACTEND,
              label='Totalizar', name='btnContractEnd', parent=self,
              pos=wxPoint(16, 400), size=wxSize(72, 23), style=0)
        EVT_BUTTON(self.btnContractEnd, wxID_FRM2110BTNCONTRACTEND,
              self.OnBtnContractEndButton)

        self.btnClearContract = wxButton(id=wxID_FRM2110BTNCLEARCONTRACT,
              label='Limpiar', name='btnClearContract', parent=self,
              pos=wxPoint(248, 400), size=wxSize(75, 23), style=0)
        EVT_BUTTON(self.btnClearContract, wxID_FRM2110BTNCLEARCONTRACT,
              self.OnBtnClearContractButton)

        self.staticText6 = wxStaticText(id=wxID_FRM2110STATICTEXT6,
              label='Inicial', name='staticText6', parent=self, 
pos=wxPoint(184,
              240), size=wxSize(27, 13), style=0)

        self.staticText7 = wxStaticText(id=wxID_FRM2110STATICTEXT7,
              label='Saldo', name='staticText7', parent=self, 
pos=wxPoint(184,
              288), size=wxSize(27, 13), style=0)

        self.staticText8 = wxStaticText(id=wxID_FRM2110STATICTEXT8,
              label='Cuotas', name='staticText8', parent=self, 
pos=wxPoint(184,
              312), size=wxSize(33, 13), style=0)

        self.staticText9 = wxStaticText(id=wxID_FRM2110STATICTEXT9,
              label='Cuota', name='staticText9', parent=self, 
pos=wxPoint(184,
              336), size=wxSize(28, 13), style=0)

        self.staticText10 = wxStaticText(id=wxID_FRM2110STATICTEXT10,
              label='Total', name='staticText10', parent=self, 
pos=wxPoint(16,
              288), size=wxSize(24, 13), style=0)

        self.chkPayMode = wxCheckBox(id=wxID_FRM2110CHKPAYMODE, 
label='Contado',
              name='chkPayMode', parent=self, pos=wxPoint(504, 200),
              size=wxSize(73, 13), style=wxTE_PROCESS_ENTER | 
wxTE_PROCESS_TAB)
        self.chkPayMode.SetValue(False)
        EVT_CHECKBOX(self.chkPayMode, wxID_FRM2110CHKPAYMODE,
              self.OnChkPayModeCheckbox)

        self.btnFallGenerate = wxButton(id=wxID_FRM2110BTNFALLGENERATE,
              label='Totalizar', name='btnFallGenerate', parent=self,
              pos=wxPoint(504, 256), size=wxSize(75, 23), style=0)
        EVT_BUTTON(self.btnFallGenerate, wxID_FRM2110BTNFALLGENERATE,
              self.OnBtnFallGenerateButton)

        self.chcResources = wxChoice(choices=[], 
id=wxID_FRM2110CHCRESOURCES,
              name='chcResources', parent=self, pos=wxPoint(352, 48),
              size=wxSize(144, 21),
              style=wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB)

        self.btnNotVendor = wxButton(id=wxID_FRM2110BTNNOTVENDOR,
              label='Agregar', name='btnNotVendor', parent=self,
              pos=wxPoint(504, 48), size=wxSize(72, 23), style=0)
        EVT_BUTTON(self.btnNotVendor, wxID_FRM2110BTNNOTVENDOR,
              self.OnBtnNotVendorButton)

        self.txtDPay = wxTextCtrl(id=wxID_FRM2110TXTDPAY, name='txtDPay',
              parent=self, pos=wxPoint(88, 304), size=wxSize(72, 21), 
style=0,
              value='0')

        self.chcDPercent = wxChoice(choices=['0', '10', '20', '30', 
'40', '50',
              '60', '70', '80', '90', '100'], id=wxID_FRM2110CHCDPERCENT,
              name='chcDPercent', parent=self, pos=wxPoint(424, 168),
              size=wxSize(72, 21), style=wxTE_PROCESS_ENTER | 
wxTE_PROCESS_TAB)
        self.chcDPercent.SetStringSelection('100')

        self.staticText2 = wxStaticText(id=wxID_FRM2110STATICTEXT2,
              label='Perc. Desc', name='staticText2', parent=self,
              pos=wxPoint(352, 176), size=wxSize(53, 13), style=0)

        self.btnAdvisersClear = wxButton(id=wxID_FRM2110BTNADVISERSCLEAR,
              label='Limpiar', name='btnAdvisersClear', parent=self,
              pos=wxPoint(504, 96), size=wxSize(72, 23), style=0)
        EVT_BUTTON(self.btnAdvisersClear, wxID_FRM2110BTNADVISERSCLEAR,
              self.OnBtnAdvisersClearButton)

        self.staticText3 = wxStaticText(id=wxID_FRM2110STATICTEXT3,
              label='Diferido', name='staticText3', parent=self, 
pos=wxPoint(16,
              312), size=wxSize(36, 13), style=0)

        self.txtNumProducts = wxTextCtrl(id=wxID_FRM2110TXTNUMPRODUCTS,
              name='txtNumProducts', parent=self, pos=wxPoint(504, 304),
              size=wxSize(68, 21), style=0, value='1')

        self.chkRisk = wxCheckBox(id=wxID_FRM2110CHKRISK, label='Riesgo',
              name='chkRisk', parent=self, pos=wxPoint(16, 56), 
size=wxSize(73,
              13), style=0)
        self.chkRisk.SetValue(False)

        self.txtTotal = wxTextCtrl(id=wxID_FRM2110TXTTOTAL, name='txtTotal',
              parent=self, pos=wxPoint(256, 352), size=wxSize(72, 21),
              style=wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB, value='0')

        self.staticText11 = wxStaticText(id=wxID_FRM2110STATICTEXT11,
              label='Total', name='staticText11', parent=self, 
pos=wxPoint(184,
              360), size=wxSize(24, 13), style=0)

        self.staticText12 = wxStaticText(id=wxID_FRM2110STATICTEXT12,
              label='Promocion', name='staticText12', parent=self,
              pos=wxPoint(16, 128), size=wxSize(50, 13), style=0)

        self.txtInitialX = wxTextCtrl(id=wxID_FRM2110TXTINITIALX,
              name='txtInitialX', parent=self, pos=wxPoint(256, 256),
              size=wxSize(72, 21), style=wxTE_PROCESS_ENTER | 
wxTE_PROCESS_TAB,
              value='0')

        self.staticText13 = wxStaticText(id=wxID_FRM2110STATICTEXT13,
              label='Inicial *', name='staticText13', parent=self,
              pos=wxPoint(184, 264), size=wxSize(34, 13), style=0)

    def __init__(self, parent):
        self._init_ctrls(parent)
        from bussines.dbclasses.plans import Plans
        clsPlans = Plans()       
        clsPlans.GetAll()
        self.chcPlan.Clear()
        for r in clsPlans.DBConnection.SQLResults:
            self.chcPlan.Append(str(r[1]), r[0])
        clsPlans.DBConnection.Close()
        clsPlans = None
        self.Vendors = []
        self.Products = []
        self.Discount = []
        self.Services = []
        self.txtFallTotal.SetEditable(False)
        self.txtProductTotal.SetEditable(False)
        self.txtContractTotal.SetEditable(False)
        self.txtSald.SetEditable(False)
        self.txtQuot.SetEditable(False)
        self.txtTotal.SetEditable(False)
       
    def OnFrm2110Activate(self, event):
        event.Skip()

    def OnChcPlanChoice(self, event):
        #Llenado de control de manejo de grupos de planes
        from bussines.dbclasses.groups import Groups
        from bussines.dbclasses.falls import Falls
        from bussines.dbclasses.products import Products
        from bussines.dbclasses.plans import Plans
        IDPlan = 
str(self.chcPlan.GetClientData(self.chcPlan.GetSelection()))
        clsPlans = Plans()
        clsPlans.GetData(IDPlan)
        if clsPlans.Currency == 'S':
            self.TASA = TEAS
        elif clsPlans.Currency == 'D':
            self.TASA = TEA
        self.MaxQuots = clsPlans.MaxQuots
        clsPlans.DBConnection.Close()
        clsGroups = Groups()
        self.chcGroups.Clear()     
        clsGroups.GetAll(IDPlan)
        for r in clsGroups.DBConnection.SQLResults:
            self.chcGroups.Append(str(r[1]), r[0])
        clsGroups.DBConnection.Close()
        clsGroups = None
        #Llenado de control de manejo de Tumbas
        clsFalls = Falls()       
        self.chcFalls.Clear()
        
clsFalls.GetAll(self.chcPlan.GetClientData(self.chcPlan.GetSelection()))        

        for r in clsFalls.DBConnection.SQLResults:
            self.chcFalls.Append(str(r[1]), r[0])
        clsFalls.DBConnection.Close()
        clsFalls = None
        #Llenado de control de manejo de Productos
        clsProducts = Products()       
        self.chcProducts.Clear()
        
clsProducts.GetAll(self.chcPlan.GetClientData(self.chcPlan.GetSelection()))
        for r in clsProducts.DBConnection.SQLResults:
            self.chcProducts.Append(str(r[1]), r[0])
        clsProducts.DBConnection.Close()
        clsProducts = None
        self.chcContractHasGroupHasResources.Clear()
       
    def OnChcGroupsChoice(self, event):
        self.chcContractHasGroupHasResources.Clear()
        from bussines.dbclasses.groups import Groups
        clsGroups = Groups()
        self.IDGroup = 
self.chcGroups.GetClientData(self.chcGroups.GetSelection())
        clsGroups.GetPersonal(self.IDGroup)
        self.chcContractHasGroupHasResources.Clear()
        for r in clsGroups.DBConnection.SQLResults:
            self.chcContractHasGroupHasResources.Append(str(r[1]), r[0])
       
        
clsGroups.GetNotPersonal(self.chcGroups.GetClientData(self.chcGroups.GetSelection()))
        self.chcResources.Clear()
        for r in clsGroups.DBConnection.SQLResults:
            self.chcResources.Append(str(r[1]), r[0])
        clsGroups.DBConnection.Close()
        clsGroups = None

    def OnBtnVendorAddButton(self, event):
        VCode = 
self.chcContractHasGroupHasResources.GetClientData(self.chcContractHasGroupHasResources.GetSelection())
        VName = self.chcContractHasGroupHasResources.GetStringSelection()
        VPerc = self.chcPercent.GetStringSelection()
        Vendor = [VCode, VName, VPerc]
        total=0
        for r in self.Vendors:
            if r[0] == Vendor[0]:
                return
        for r in self.Vendors:
            total = total + int(r[2])
        if total + int(Vendor[2]) > 100:
            return
        self.Vendors.append(Vendor)
        self.lstAdvisers.Clear()
        for r in self.Vendors:
            
self.lstAdvisers.Append(str(r[0])+"-"+str(r[1])+"-"+str(r[2]), r[0])

    def OnBtnAdvisersClearButton(self, event):
        self.VendorsClear()
       
    def OnBtnNotVendorButton(self, event):
        VCode = 
self.chcResources.GetClientData(self.chcResources.GetSelection())
        VName = self.chcResources.GetStringSelection()
        VPerc = self.chcPercent.GetStringSelection()
        Vendor = [VCode, VName, VPerc]
        total=0
        for r in self.Vendors:
            if r[0] == Vendor[0]:
                return
        for r in self.Vendors:
            total = total + int(r[2])
        if total + int(Vendor[2]) > 100:
            return
        self.Vendors.append(Vendor)
        self.lstAdvisers.Clear()
        for r in self.Vendors:
            
self.lstAdvisers.Append(str(r[0])+"-"+str(r[1])+"-"+str(r[2]), r[0])
   
    def VendorsClear(self):
        self.Vendors = None
        self.Vendors = []
        self.lstAdvisers.Clear()
   
    def ProductsClear(self):
        self.Products = None
        self.Products = []
        self.FillServices()
       
    def DiscountClear(self):
        self.Discount = None
        self.Discount = []
        self.lstDiscounts.Clear()

    def OnTxtFallTotalText(self, event):
        event.Skip()

    def OnTxtProductTotalText(self, event):
        event.Skip()
       
    def OnBtnDiscountAddButton(self, event):
        event.Skip()

    def OnBtnProductAddButton(self, event):
        from string import split
        from bussines.dbclasses.products import Products
        clsProducts = Products()
        CodeAux = 
self.chcProducts.GetClientData(self.chcProducts.GetSelection())
        CodeX = split(CodeAux, '-')
        clsProducts.GetData(CodeX[1])
        PKey = int(clsProducts.PKey)
        PName = clsProducts.PName
        PValue = clsProducts.PValue
        PQuantity = int(self.txtNumProducts.GetValue())
        Product = [PKey, PName, PValue, PQuantity]
        clsProducts.DBConnection.Close()
        clsProducts = None
        if self.Products:
            f=0
            for r in self.Products:
                if r[0] == Product[0]:
                    if r[3] >= 0:
                        r[3] = r[3] + Product[3]
                    f=1
            if f==0:       
                self.Products.append(Product)
        else:
            self.Products.append(Product)
        self.FillServices()
       
    def OnBtnProductClearButton(self, event):
        self.ProductsClear()

    def OnBtnProductGenerateButton(self, event):
        self.FillServices()

    def OnBtnFallGenerateButton(self, event):
        self.FallGenerate()
       
    def OnChkPayModeCheckbox(self, event):
        self.txtDPay.SetValue('0')
        if self.chkPayMode.GetValue() == True:
            self.txtDPay.SetEditable(False)
        else:
            self.txtDPay.SetEditable(True)

    def OnChcFallsChoice(self, event):
        event.Skip()
       
    def OnBtnClearContractButton(self, event):
        self.ClearContract()

    def OnBtnContractEndButton(self, event):
        self.ContractEnd()
   
    def OnBtnSaveRecordButton(self, event):
        self.SaveRecord()   
           
    def FillServices(self):
        self.Services = []      

        self.Services.extend(self.PrdHasFall)
        self.Services.extend(self.Products)
              
        self.lstProducts.Clear()       
        #calcular monto servicios
        for x in self.Services:
            self.lstProducts.Append(str(x[1])+'-'+str(x[2]), x[0])
        from bussines.vfmounts import PrdsMount
        Total = PrdsMount(self.Services)
        self.txtProductTotal.SetValue(str(Total))
        from bussines.vcmounts import CalculateTotal
        TMount = CalculateTotal(int(self.txtFallTotal.GetValue()), Total)
        if TMount !=False:
            self.txtContractTotal.SetValue(str(TMount))
   
    def FallGenerate(self):
        from string import split
        CodeAux = self.chcFalls.GetClientData(self.chcFalls.GetSelection())
        CodeX = split(str(CodeAux),'-')
        self.IDPlan = CodeX[0]
        self.IDFall = CodeX[1]
        CValue = self.chkChoiced.GetValue()
        PValue = self.chkPayMode.GetValue()
        DPercent = float(self.chcDPercent.GetStringSelection())/100.0
        from bussines.vfmounts import FallMount, PrdFArray
        Initial = self.txtInitial.GetValue()
        InitialX = self.txtInitialX.GetValue()
        InitialPay = Initial + InitialX
        FallArray = FallMount(self.IDPlan, self.IDFall, CValue, PValue, 
DPercent, DOLAR, InitialPay)
        FallTotal = int(FallArray[0])
        self.InitialPay = int(FallArray[1])
        self.IShared = FallArray[2]
        self.DMount = FallArray[3]
        self.PrdHasFall = PrdFArray(self.IDPlan, self.IDFall)
        self.FillServices()
        self.txtFallTotal.SetValue(str(int(FallTotal)))       
        self.ContractTotal()
           
    def ContractTotal(self):
        from bussines.vcmounts import CalculateTotal, CalculateSaldd
        FallTotal = int(self.txtFallTotal.GetValue())
        ProductTotal = int(self.txtProductTotal.GetValue())
        DPay = float(self.txtDPay.GetValue())
        if float(DPay) > float(self.DMount):
            DPay = float(self.DMount)
            self.txtDPay.SetValue(str(int(DPay)))
        ContractTotal = CalculateTotal(FallTotal, ProductTotal)
        if ContractTotal == False:
            return False
        self.txtContractTotal.SetValue(str(ContractTotal))
       
        if self.chkPayMode.GetValue() == True:
            Initial = ContractTotal
        else:   
            Initial = self.InitialPay # + int(round(float(ProductTotal) 
* TMI,0))           
        self.txtInitial.SetValue(str(Initial))
       
        if self.chkPayMode.GetValue() == True:
            self.txtQuots.SetValue("0")
            self.txtInitialX.SetValue(str("0"))
            self.txtQuots.SetValue("0")
            self.txtQuot.SetValue("0")
            self.txtInitial.SetEditable(False)
            self.txtInitialX.SetEditable(False)
            self.txtQuots.SetEditable(False)
        else:
            self.txtInitial.SetEditable(True)
            self.txtQuots.SetEditable(True)
            if self.IShared == 'Y':
                self.txtInitialX.SetEditable(True)
            else:
                self.txtInitialX.SetValue(str("0"))
                self.txtInitialX.SetEditable(False)
        Saldd = CalculateSaldd(ContractTotal, DPay, Initial)       
        if Saldd == False:
            return False
        self.txtSald.SetValue(str(Saldd))
        clsConfigTable = None
        self.ContractEnd()
       
    def ContractEnd(self):
        from bussines.vcmounts import CalculateTotal, CalculateSaldd, 
CalculateFinal
        ContractTotal = float(self.txtContractTotal.GetValue())
        DPay = float(self.txtDPay.GetValue())
        if DPay > float(self.DMount):
            DPay = (self.DMount)
            self.txtDPay.SetValue(str(int(DPay)))
        Initial = float(self.txtInitial.GetValue())
        InitialX = float(self.txtInitialX.GetValue())
        InitialT = float(Initial + InitialX)
        Saldd = CalculateSaldd(ContractTotal, DPay, InitialT)       
        if Saldd == False:
            return False
        self.txtSald.SetValue(str(Saldd))
        ni = float(self.txtQuots.GetValue())
        if int(ni) > int(self.MaxQuots):
            ni = int(self.MaxQuots)
            self.txtQuots.SetValue(str(ni))
        if ni != 0.0:           
            from bussines.functions.financial import ConstantQuots
            quot = ConstantQuots(self.TASA, ni, Saldd)
        else:
            quot = 0
            if self.chkPayMode.GetValue() == False:
                self.txtQuot.SetValue("0")
                self.txtTotal.SetValue("0")
                return
        self.txtQuot.SetValue(str(quot))
        CFinal = CalculateFinal(InitialT, quot, ni)
        if CFinal == False:
            return False
        self.txtTotal.SetValue(str(CFinal))
       
    def SaveRecord(self):
        #Verificacion de Existencia de Datos
        if self.Vendors == False:
            print 'Contrato Sin Vendedor'
            return
        if int(self.txtContractNumber.GetValue()) == 0:
            print 'Contrato Sin Numero'
            return
        if int(self.txtTotal.GetValue()) == 0:
            print 'Contrato Sin Montos'
            return
        from string import strip, upper
        if strip(self.txtTitular.GetValue()) == "":
            print 'Contrato Sin Titular'
            return
        from bussines.dbclasses.contracts import Contracts
        total = 0
        for r in self.Vendors:
            total = total + int(r[2])
        if total != 100:
            print "No se ha distribuido comisiones correctamente"
            return
       
        #Coger Datos
        IDFall = int(self.IDFall)
        IDPlan = int(self.IDPlan)
        FMount = int(self.txtFallTotal.GetValue())
        PMount = int(self.txtProductTotal.GetValue())
        DMount = int(self.txtDPay.GetValue())
        TMount = int(self.txtContractTotal.GetValue())
        IPay = int(self.txtInitial.GetValue())
        IXPay = int(self.txtInitialX.GetValue())
        IMount = int(IPay + IXPay)
        NQuots = int(self.txtQuots.GetValue())
        QMount = int(self.txtQuot.GetValue())
        SMount = int(self.txtSald.GetValue())
        TCMount = int(self.txtTotal.GetValue())
        RCredi = self.TASA
        print self.txtFallTotal.GetValue()
        print FMount
        print PMount
        print TMount
        from bussines.vcmounts import ValidateAll
        ValidateValue = ValidateAll(FMount, PMount, TMount, DMount, 
IMount, SMount, NQuots, RCredi, QMount, TCMount)
        if ValidateValue == False:
            return False
       
        #Grabar Informacion
        clsContract = str(Contracts())
        clsContract.IDContract = str(self.txtContractNumber.GetValue())
        clsContract.IDFall = str(IDFall)
        clsContract.IDPlan = str(IDPlan)
        clsContract.FTotal = str(FMount)
        clsContract.PTotal = str(PMount)
        clsContract.DPay = str(DMount)
        clsContract.CTotal = str(TMount)
        clsContract.IPay = str(IPay)
        clsContract.IXPay = str(IXPay)
        clsContract.Quots = str(NQuots)
        clsContract.Quot = str(QMount)
        clsContract.DProm = str(self.txtProm.GetValue())
        clsContract.MProm = self.txtMProm.GetValue()
        clsContract.Titu = upper(self.txtTitular.GetValue())
        if self.chkRisk.GetValue() == True:
            clsContract.Risk = 'Y'
        else:
            clsContract.Risk = 'N'
        clsContract.Nulled = 'N'
        clsContract.SaveData()
        for r in self.Vendors:
            clsContract.IDGroup = str(self.IDGroup)
            clsContract.IDResource = str(r[0])
            clsContract.Percent = str(r[2])
            clsContract.SaveCGR()
        for r in self.Services:
            clsContract.IDProduct = str(r[0])
            clsContract.Mount = str(r[2])
            clsContract.Quantity = str(r[3])
            clsContract.SaveCHP()
       
        self.ClearContract()
       
    def ClearContract(self):
        self.PrdHasFall = []
        self.Products = []
        self.lstProducts.Clear()
        self.txtFallTotal.SetValue("0")
        self.txtProductTotal.SetValue("0")
        self.txtContractTotal.SetValue("0")
        self.txtDPay.SetValue("0")
        self.txtInitial.SetValue("0")
        self.txtInitialX.SetValue("0")
        self.txtSald.SetValue("0")
        self.txtQuots.SetValue("0")
        self.txtQuot.SetValue("0")
        self.txtTotal.SetValue("0")
        self.txtContractNumber.SetValue("0")
        self.txtTitular.SetValue("")
        self.VendorsClear()
        self.ProductsClear()




Más información sobre la lista de distribución Python-es