Beispiel #1
0
class TaskConfiguration(colander.MappingSchema):
    """
        Main fields to be configured
    """
    name = colander.SchemaNode(
        colander.String(),
        title=u"Nom du document",
        description=u"Ce nom n'apparaît pas dans le document final",
        validator=colander.Length(max=255),
        default=deferred_default_name,
        missing="",
        )
    customer_id = colander.SchemaNode(
        colander.Integer(),
        title=u"Choix du client",
        widget=deferred_customer_list,
        validator=deferred_customer_validator
    )
    address = forms.textarea_node(
        title=u"Nom et adresse du client",
        widget_options={'rows': 4}
    )
    workplace = forms.textarea_node(
        title=u"Lieu d'exécution des travaux",
        widget_options={'rows': 3},
        missing=colander.drop,
    )
    mention_ids = colander.SchemaNode(
        colander.Set(),
        title=u"Mentions facultatives",
        description=u"Choisissez les mentions à ajouter au document",
        widget=deferred_mention_select_widget,
        missing=colander.drop,
    )
    phase_id = colander.SchemaNode(
        colander.String(),
        title=u"Phase où insérer le devis",
        widget=deferred_phases_widget,
        default=deferred_default_phase
        )
    date = forms.today_node(title=u"Date du devis")
    description = forms.textarea_node(title=u"Objet du devis")
    course = colander.SchemaNode(
        colander.Integer(),
        title=u"",
        label=deferred_course_title,
        widget=deform.widget.CheckboxWidget(true_val="1", false_val="0"),
        missing=0,
    )
    display_units = colander.SchemaNode(
        colander.Integer(),
        title="",
        label=u"Afficher le détail des prestations dans la sortie PDF ?",
        widget=deform.widget.CheckboxWidget(true_val="1", false_val="0"),
        missing=0,
    )
Beispiel #2
0
class EstimationConfig(colander.MappingSchema):
    """
        Schema for estimation configuration
    """
    header = forms.textarea_node(
        title=u"Cadre d'information spécifique (en entête des devis)",
        missing=u"",
    )
    footer = forms.textarea_node(
        title=u"Informations sur l'acceptation des devis",
        missing=u"",
    )
Beispiel #3
0
class DiscountLine(colander.MappingSchema):
    """
        A single estimation line
    """
    description = forms.textarea_node(
        missing=u'',
        title=u"Remise",
        richwidget=True,
        richtext_options={"height": "100px"},
        css_class='col-md-4',
    )
    amount = colander.SchemaNode(
        AmountType(),
        title=u"Montant",
        widget=deform.widget.TextInputWidget(),
        css_class='col-md-1',
        validator=forms.positive_validator,
    )
    tva = colander.SchemaNode(
        Integer(),
        title=u'TVA',
        widget=deferred_tvas_widget,
        default=deferred_default_tva,
        css_class='col-md-2 col-md-offset-3',
    )
Beispiel #4
0
class TaskNotes(colander.MappingSchema):
    """
        Notes
    """
    exclusions = forms.textarea_node(
        title=u'Notes',
        missing=u"",
        description=u"Note complémentaires concernant les prestations décrites"
    )
Beispiel #5
0
class CommercialSetFormSchema(colander.MappingSchema):
    month = colander.SchemaNode(
        colander.Integer(),
        widget=widget.HiddenWidget(),
        title=u'',
        validator=colander.Range(1, 12),
    )
    value = colander.SchemaNode(AmountType(5), title=u"CA prévisionnel")
    comment = forms.textarea_node(title=u"Commentaire", missing=u"")
Beispiel #6
0
class TaskCommunication(colander.MappingSchema):
    """
        Communication avec la CAE
    """
    statusComment = forms.textarea_node(
        title=u'',
        missing=u'',
        description=u"Message à destination des membres de la CAE qui \
valideront votre document (n'apparaît pas dans le PDF)",
    )
Beispiel #7
0
class InvoiceConfig(colander.MappingSchema):
    """
        Schema for invoice configuration
    """
    prefix = colander.SchemaNode(colander.String(),
                                 title=u"Préfixer les numéros de facture",
                                 missing=u"")
    header = forms.textarea_node(
        title=u"Cadre d'information spécifique (en entête des factures)",
        missing=u"",
    )
    payment = forms.textarea_node(
        title=u"Information de paiement pour les factures",
        missing=u"",
    )
    late = forms.textarea_node(
        title=u"Informations sur les délais de paiement",
        missing=u"",
    )
Beispiel #8
0
class TaskConfiguration(colander.MappingSchema):
    """
        Main fields to be configured
    """
    name = colander.SchemaNode(
        colander.String(),
        title=u"Libellé du document",
        validator=colander.Length(max=255),
        default=deferred_default_name,
        missing="",
    )
    customer_id = colander.SchemaNode(colander.Integer(),
                                      title=u"Choix du client",
                                      widget=deferred_customer_list,
                                      validator=deferred_customer_validator)
    address = forms.textarea_node(title=u"Nom et adresse du client",
                                  widget_options={'rows': 4})
    phase_id = colander.SchemaNode(colander.String(),
                                   title=u"Phase où insérer le devis",
                                   widget=deferred_phases_widget,
                                   default=deferred_default_phase)
    taskDate = forms.today_node(title=u"Date du devis")
    description = forms.textarea_node(title=u"Objet du devis")
    course = colander.SchemaNode(
        colander.Integer(),
        title=u"",
        label=deferred_course_title,
        widget=deform.widget.CheckboxWidget(true_val="1", false_val="0"),
        missing=0,
    )
    display_units = colander.SchemaNode(
        colander.Integer(),
        title="",
        label=u"Afficher le détail des prestations dans la sortie PDF ?",
        widget=deform.widget.CheckboxWidget(true_val="1", false_val="0"),
        missing=0,
    )
Beispiel #9
0
class InvoicePayments(colander.MappingSchema):
    """
        Conditions de paiement de la facture
    """
    payment_conditions_select = colander.SchemaNode(
        colander.String(),
        widget=forms.get_deferred_select(PaymentConditions),
        title=u"",
        missing=colander.drop,
    )

    payment_conditions = forms.textarea_node(
        title="",
        default=deferred_default_payment_condition,
    )
Beispiel #10
0
class TaskLineGroupMapping(colander.MappingSchema):
    title = colander.SchemaNode(colander.String(), title=u"Titre de l'ouvrage")
    description = forms.textarea_node(
        title=u"Description",
        missing=u'',
        richwidget=False,
        richtext_options={"height": "100px"},
    )
    lines = TaskLines(
        widget=deform.widget.SequenceWidget(
            template=TEMPLATES_URL + 'tasklines_sequence.pt',
            add_subitem_text_template=u"Ajouter une prestation à cet ouvrage",
            orderable=True,
        ),
        title=u'',
    )
Beispiel #11
0
class EstimationPayments(colander.MappingSchema):
    """
        Gestion des acomptes
    """
    deposit = colander.SchemaNode(
        colander.Integer(),
        title=u"Acompte à la commande",
        default=0,
        widget=deform.widget.SelectWidget(
            values=get_percents(),
            css_class='col-md-2')
    )
    payment_times = colander.SchemaNode(
        colander.Integer(),
        title=u"Paiement en ",
        default=1,
        widget=deform.widget.SelectWidget(
            values=get_payment_times(),
            css_class='col-md-2'
        )
    )
    paymentDisplay = colander.SchemaNode(
        colander.String(),
        validator=colander.OneOf([x[0] for x in PAYMENTDISPLAYCHOICES]),
        widget=deform.widget.RadioChoiceWidget(values=PAYMENTDISPLAYCHOICES),
        title=u"Affichage des paiements",
        default="SUMMARY")
    payment_lines = EstimationPaymentLines(
        widget=deform.widget.SequenceWidget(
            template=TEMPLATES_URL + 'paymentlines_sequence.pt',
            item_template=TEMPLATES_URL + 'paymentlines_sequence_item.pt',
            min_len=1),
        title=u'',
        description=u"Définissez les échéances de paiement")

    payment_conditions_select = colander.SchemaNode(
        colander.String(),
        widget=forms.get_deferred_select(PaymentConditions),
        title=u"Conditions de paiement prédéfinies",
        missing=colander.drop,
    )

    payment_conditions = forms.textarea_node(
        title=u"Conditions de paiement",
        default=deferred_default_payment_condition,
    )
Beispiel #12
0
class TaskLine(colander.MappingSchema):
    """
        A single estimation line
    """
    description = forms.textarea_node(
        title=u"Prestation",
        missing=u'',
        richwidget=True,
        richtext_options={"height": "100px"},
        css_class='col-md-3',
    )
    cost = colander.SchemaNode(AmountType(),
                               title=u"Prix/unité",
                               widget=deform.widget.TextInputWidget(),
                               css_class='col-md-1')
    quantity = colander.SchemaNode(QuantityType(),
                                   title=u"Quantité",
                                   widget=deform.widget.TextInputWidget(),
                                   validator=forms.positive_validator,
                                   css_class='col-md-1')
    unity = colander.SchemaNode(colander.String(),
                                title=u"Unité",
                                widget=deferred_unity_widget,
                                validator=deferred_unity_validator,
                                missing=u"",
                                css_class='col-md-2')
    tva = colander.SchemaNode(Integer(),
                              widget=deferred_tvas_widget,
                              default=deferred_default_tva,
                              validator=deferred_tva_validator,
                              css_class='col-md-1',
                              title=u'TVA')
    product_id = colander.SchemaNode(
        colander.Integer(),
        title=u"Code produit",
        widget=deferred_product_widget,
        validator=deferred_product_validator,
        missing="",
        css_class="col-md-2",
    )